Merhaba,
Öncelikle Binance Spot piyasasında işlem yapıyorsanız OCO emrini kullanabilirsiniz.
Aşağıdaki örnekte XRP aktif fiyat 0.67$ seviyesinde eğer 0.75$ gelirse karlı, 0.6$ gelirse de 0.59$ zararına satış emri gönderecektir. biri gerçekleşince diğer otomatik olarak iptal olacaktır.
SendBinanceOcoOrder(Symbol1, OrderQuantity, OrderSide.Sell, 0.75m, 0.6m, 0.59m);
Eğer Futures piyasasında ve sıralı emir gönderiyorsanız aşağıdaki gibi üst üste aynı yönde emir göndermek için LastOrderSide değişkeninde değişiklik yapılması gerekir.
Sonrasında emir ID'leri bir listede tutup emir gerçekleştiğinde emrin ID'si bu listede ise kalan emri iptal edebilirsiniz.
List<string> orderIDler = new List<string>();
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Buy)
{
var yon = LastOrderSide;
var id1 = SendBinanceStopLimitOrder(Symbol1, 1000, OrderSide.Sell, alis_fiyati -0.00002m, alis_fiyati -0.00001m);
LastOrderSide.Obj = Side.All;
var id2 = SendBinanceTakeProfitLimitOrder(Symbol1, 1000, OrderSide.Sell, alis_fiyati + 0.00002m, alis_fiyati + 0.00001m);
LastOrderSide.Obj = yon;
orderIDler.Add(id1 + id2);
}
if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
{
var varMI = orderIDler.FirstOrDefault(x => x.Contains(order.CliOrdID));
if (varMI != null)
{
var gerceklesmeyenEmirID = varMI.Replace(order.CliOrdID, "");
SendCancelOrder(gerceklesmeyenEmirID);
orderIDler.Remove(varMI);
}
}
}