[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 52

 
first_may:
А есть ли пример функции по работе с датами, то есть определить разность между двумя датами, она больше нуля или нет?

а что такое дата в вашем понимании и понимании MQL ?
 

Люди, помогите разобраться с кодом. Основная задача - удалить отложенный ордер при достижении определенного уровня.

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); //определение уровня MA

double Delete_Level = MA3;// Определение значения переменной

Но ордер не удаляется на данном уровне Delete_Level. Помогите понять в чем моя ошибка. 

 
до куда доходит алгоритм ? Print расставьте по коду и проверьте.
 
Что вы подразумеваете под "до куда доходит алгоритм ?"
 
vovan-gogan:
Что вы подразумеваете под "до куда доходит алгоритм ?"

ну вы же пишите, что не удаляется, это знчит, что не доходит до OrderDelete.

Ну и вопрос соответственно - а до куда доходит ? какое условие блокирует?

 
sergeev:

ну вы же пишите, что не удаляется, это знчит, что не доходит до OrderDelete.

Ну и вопрос соответственно - а до куда доходит ? какое условие блокирует?


Логику понял. Щас буду стараться исправить.
 

Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие

if (OrdersTotal()!=0 && Bid == Delete_Level)

не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.

 
vovan-gogan:

Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием Alert обнаружил, что условие

не выполняется. Просто "if (OrdersTotal()!=0" по отдельности да, а вот вместе с "Bid == Delete_Level" - нет. В чем тут причина? Почему по достижении уровня Delete_Level отложенный ордер не удаляется. Пожалуйста, подскажите что-нибудь или предложите альтернативное решение для удаления отложника по достижении уровня Delete_Level.


Нормализуйте эти переменные, "приведите в общему знаменателю" - например, используйте некий допуск (+/-) значения переменной Delete_Level, ибо абсолютно точного равенства, как у Вас сейчас задано Bid == Delete_Level - не существует.
 
vovan-gogan:

Что-то прояснилось. Но до сих пор не могу понять как решить. С использованием 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 )  
 

Извиняюсь, но полегче никак?) Помогите понять в чем ошибка в

Bid == Delete_Level
Причина обращения: