Как реализовать закрытие позиций по одной через N-минут ? - страница 3

 
Ihor Herasko:

Прошу прощения. Строку:

нужно переписать так:


 (OrderCloseTime() > 0) работает, оставлю так тогда

Спасибо ещё раз))

Renat Akhtyamov:

закрытие по тикету, переделайте под свой

Тоже закрывает отлично, но после закрытия пишет error 4108 "Неверный номер тикета."


 
Natalya Dzerzhinskaya:

 (OrderCloseTime() > 0) работает, оставлю так тогда

Спасибо ещё раз))


Тоже закрывает отлично, но после закрытия пишет error 4108 "Неверный номер тикета."


Значит действительно неверный, врать не будет.

В логике своего кода поройтесь.

А Вы одну команду на закрытие запускаете или две?

Если закрылся один раз, то для второго делать уже нечего, а предыдущий тикет будет уже неверный

 
Renat Akhtyamov:

Значит действительно неверный, врать не будет.

В логике своего кода поройтесь.

А Вы одну команду на закрытие запускаете или две?

Если закрылся один раз, то для второго делать уже нечего, а предыдущий тикет будет уже неверный


у вас в коде переменная "close" никогда не будет меньше нуля, читайте справку

 
Ihor Herasko:

Справедливые замечания выше. Зачем еще раз перебирать все ордера, если тикет уже известен?

Можно сразу закрывать ордера, при переборе.
Зачем искать время? Сравнили - закрыли - следующий.
 
Taras Slobodyanik:

у вас в коде переменная "close" никогда не будет меньше нуля, читайте справку

почитайте ка сами...

-----------

Возвращаемое значение

Возвращает true при успешном завершении функции или false в случае ошибки. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Коды возврата торгового сервера - Коды ошибок и предупреждений - Стандартные константы, перечисления и структуры - Справочник MQL4
Коды возврата торгового сервера - Коды ошибок и предупреждений - Стандартные константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
GetLastError() - функция, возвращающая коды ошибок. Кодовые константы ошибок определены в файле stderror.mqh. Для вывода текстовых сообщений следует использовать функцию ErrorDescription(), определенную в файле stdlib.mqh.
 
Renat Akhtyamov:

почитайте ка сами...

-----------

Возвращаемое значение

Возвращает true при успешном завершении функции или false в случае ошибки. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().


так вы еще и типы переменных не различаете)

вам учиться надо

 
Taras Slobodyanik:

так вы еще и типы переменных не различаете)

вам учиться надо


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как реализовать закрытие позиций по одной через N-минут ?

Natalya Dzerzhinskaya, 2017.11.22 19:17


 (OrderCloseTime() > 0) работает, оставлю так тогда

Спасибо ещё раз))


Тоже закрывает отлично, но после закрытия пишет error 4108 "Неверный номер тикета."


Это с неба чтоли?

)

Удачи в учебе!
 
Renat Akhtyamov:

Это с неба чтоли?

)

Удачи в учебе!

При каких условиях это может когда-то отработать, хотя-бы раз в 100 лет?

                  if(OrderSelect(MyTicketBuy, SELECT_BY_TICKET)==true)
                  {
                     close=OrderClose(MyTicketBuy,OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,clrRed);
                     if(close<0){if(Fun_Error(GetLastError())==1)return;}
                  }
                  if(OrderSelect(MyTicketSell, SELECT_BY_TICKET)==true)
                  {
                     close=OrderClose(MyTicketSell,OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),0,clrBlue);
                     if(close<0){if(Fun_Error(GetLastError())==1)return;}
                  }
 
Vitaly Muzichenko:

При каких условиях это может когда-то отработать, хотя-бы раз в 100 лет?

Ну Виталий, не знаю...............

У Вас же в посте отработка......

Внимательнее, функция на предыдущей страничке.
 
Renat Akhtyamov:

Ну Виталий, не знаю...............

У Вас же в посте отработка......

Внимательнее, функция на предыдущей страничке.

Я к тому, что close может быть только, или 0(false) или 1(true), другого не дано.

То же самое, для надёжности лучше писать:

close=OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),0,clrRed);