Люди, помогите разобраться с кодом. Основная задача - удалить отложенный ордер при достижении определенного уровня.
if (OrdersTotal()!=0 && Bid == Delete_Level)
{
for (int i=1; i<=OrdersTotal(); i++) //Cycle for all orders..
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)//If there is the next one
{
if(OrderType()>1)
{
if(OrderDelete(OrderTicket())==true)
{
Alert ("Ордера удалены");
}
}
}
}
}
Уровень Delete_Level определяется положением MA 30 на 3 баре до текущего момента.
double MA3 = iMA(NULL, 0, MA_Period_2, 0, MODE_SMA, PRICE_CLOSE, 2); //определение уровня MAdouble Delete_Level = MA3;// Определение значения переменной
Но ордер не удаляется на данном уровне Delete_Level. Помогите понять в чем моя ошибка.
Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие
if (OrdersTotal()!=0 && Bid == Delete_Level)
не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.
Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие
не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.
Нормализуйте эти переменные, "приведите в общему знаменателю" - например, используйте некий допуск (+/-) значения переменной Delete_Level, ибо абсолютно точного равенства, как у Вас сейчас задано Bid == Delete_Level - не существует.
Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие
не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.
Например,
if(Bid-MarketInfo(Symbol(),MODE_SPREAD)*Point< Delete_Level && Bid+MarketInfo(Symbol(),MODE_SPREAD)*Point > Delete_Level) - считать за
if( Bid == Delete_Level )
А есть ли пример функции по работе с датами, то есть определить разность между двумя датами, она больше нуля или нет?
а что такое дата в вашем понимании и понимании MQL ?
Люди, помогите разобраться с кодом. Основная задача - удалить отложенный ордер при достижении определенного уровня.
Уровень Delete_Level определяется положением MA 30 на 3 баре до текущего момента.
Но ордер не удаляется на данном уровне Delete_Level. Помогите понять в чем моя ошибка.
Что вы подразумеваете под "до куда доходит алгоритм ?"
ну вы же пишите, что не удаляется, это знчит, что не доходит до OrderDelete.
Ну и вопрос соответственно - а до куда доходит ? какое условие блокирует?
ну вы же пишите, что не удаляется, это знчит, что не доходит до OrderDelete.
Ну и вопрос соответственно - а до куда доходит ? какое условие блокирует?
Логику понял. Щас буду стараться исправить.
Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие
не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.
Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие
не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.
Нормализуйте эти переменные, "приведите в общему знаменателю" - например, используйте некий допуск (+/-) значения переменной Delete_Level, ибо абсолютно точного равенства, как у Вас сейчас задано Bid == Delete_Level - не существует.
Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие
не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.
Например,
Извиняюсь, но полегче никак?) Помогите понять в чем ошибка в