как на пересечении скользящих закрыть ордер?
т.е. есть открытый ордер на пересечении скользящих и по условию только один рыночный ордер может быть открытым и нужно чтоб ранее открытый рыночный ордер закрыть и открыть новый ордер на пересечении скользящих
int start()
{
if (CountTrades() <= 0)
{
double ima1 = iMA(Symbol(), 0, period1, ma_shift1, MODE_SMA, PRICE_CLOSE, 0);
double ima2 = iMA(Symbol(), 0, period2, ma_shift2, MODE_SMA, PRICE_CLOSE, 0);
if (ima2 > ima1)
{
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, NULL, Magic, 0, CLR_NONE);
}
else if (ima2 < ima1)
{
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, NULL, Magic, 0, CLR_NONE);
}
}
return(0);
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}
}
return(count);
}
Редактировать сообщение
т.е. есть открытый ордер на пересечении скользящих и по условию только один рыночный ордер может быть открытым и нужно чтоб ранее открытый рыночный ордер закрыть и открыть новый ордер на пересечении скользящих
int start()
{
if (CountTrades() <= 0)
{
double ima1 = iMA(Symbol(), 0, period1, ma_shift1, MODE_SMA, PRICE_CLOSE, 0);
double ima2 = iMA(Symbol(), 0, period2, ma_shift2, MODE_SMA, PRICE_CLOSE, 0);
if (ima2 > ima1)
{
OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, NULL, Magic, 0, CLR_NONE);
}
else if (ima2 < ima1)
{
OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, NULL, Magic, 0, CLR_NONE);
}
}
return(0);
}
//+------------------------------------------------------------------+
int CountTrades()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}
}
return(count);
}
Редактировать сообщение
Последнее редактирование модератором: