Merhaba,
emriniz gerçekleştiği gibi kar al seviyesi hesaplanıp ters yönde emir gönderilebilir aşağıdaki yapıyı invceleyebilirsiniz.
decimal priceStep, quantityStep = 1;
int exchangeID;
public override void OnInitComplated()
{
var symbolDetail = GetSymbolDetail(Symbol);
exchangeID = symbolDetail.ExchangeDetail.ExchangeID;
var close = FX_Sonfiyat(Symbol); ;
if (exchangeID != (int) ExchangeType.Ise && exchangeID != (int) ExchangeType.Viop)
{
priceStep = 1 / (decimal) Math.Pow(10, symbolDetail.DecimalCount);
quantityStep = 1 / (decimal) Math.Pow(10, symbolDetail.TradeFraction);
}else
{
priceStep = GetPriceStepForBistViop(Symbol, close);
}
}
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled)
{
var fiyat = order.Price != 0? order.Price:(order.LastPx != 0? order.LastPx:order.FilledAmount / order.FilledQty);
var adet = order.OrderQty;
if(order.Side.Obj==Side.Buy){
Debug("Alış emri gerçekleşti ");
// %2 karlı şatış
var satisFiyati=FX_FiyatAyarla(fiyat*1.02m);
SendLimitOrder(Symbol,adet,OrderSide.Sell,satisFiyati);
}
}
}
public decimal FX_LotAyarla(decimal quantity)
{
return Math.Floor(quantity / quantityStep) * quantityStep;
}
public decimal FX_FiyatAyarla(decimal price)
{
return Math.Floor(price / priceStep) * priceStep;
}
public decimal FX_Sonfiyat(string sembol)
{
return GetSelectedValueFromBarData(GetBarData(sembol, SymbolPeriod), OHLCType.Close);
}