public override bool PlaceTestSellOrder(TradingData trade) { Portfolio.UpdateCoinBalance(trade.CoinPair.Pair1, Portfolio.GetBalance(trade.CoinPair.Pair1) - trade.CoinQuantityToTrade); Portfolio.UpdateCoinBalance(trade.CoinPair.Pair2, Portfolio.GetBalance(trade.CoinPair.Pair2) + trade.CoinQuantityToTrade * trade.Price * (1 + GetTradeFee(trade.CoinPair))); trade.SellOrderID = 0; return(true); }
public override bool PlaceStopLoss(TradingData trade, decimal percStopLoss) { using (var client = new BinanceClient()) { var sellOrder = client.PlaceTestOrder( trade.CoinPair.ToString(), OrderSide.Sell, OrderType.StopLoss, quantity: Math.Round(trade.CoinQuantityToTrade, trade.CoinPair.Precision), price: Math.Round(trade.Price, 2), timeInForce: TimeInForce.GoodTillCancel, stopPrice: Math.Round(trade.BuyPriceAfterFees * (1 - percStopLoss / 100), 2)); if (sellOrder.Success) { trade.SellOrderID = sellOrder.Data.OrderId; } else { Console.WriteLine(sellOrder.Error.Message.ToString()); } return(sellOrder.Success); } }
public override bool PlaceSellOrder(TradingData trade, bool closePosition = false) { using (var client = new BinanceFuturesClient()) { var sellOrder = client.PlaceOrder( trade.CoinPair.ToString(), OrderSide.Sell, OrderType.Limit, quantity: Math.Round(trade.CoinQuantityToTrade, 3), reduceOnly: closePosition, price: Math.Round(trade.Price, 2), timeInForce: TimeInForce.GoodTillCancel); if (sellOrder.Success) { trade.SellOrderID = sellOrder.Data.OrderId; } else { Console.WriteLine(sellOrder.Error.Message.ToString()); } return(sellOrder.Success); } }
public override bool PlaceBuyOrder(TradingData trade, bool closePosition = false) { using (var client = new BinanceClient()) { var buyOrder = client.PlaceOrder( trade.CoinPair.ToString(), OrderSide.Buy, OrderType.Limit, quantity: Math.Round(trade.CoinQuantityToTrade, trade.CoinPair.Precision), price: Math.Round(trade.Price, 2), timeInForce: TimeInForce.GoodTillCancel); if (buyOrder.Success) { trade.BuyOrderID = buyOrder.Data.OrderId; } else { Console.WriteLine(buyOrder.Error.Message.ToString()); } return(buyOrder.Success); } }
public override bool PlaceSellOrder(TradingData trade, bool closePosition = false) { return(PlaceTestBuyOrder(trade)); }
public virtual bool PlaceStopLoss(TradingData trade, decimal stopLossPerc) { throw new NotImplementedException(); }
public virtual bool PlaceTestSellOrder(TradingData trade) { throw new NotImplementedException(); }
public virtual bool PlaceSellOrder(TradingData trade, bool closePosition = false) { throw new NotImplementedException(); }