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

 
Vitaly Muzichenko:

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

еще раз, вот отработка функции, дал я её сегодня, отработка сегодня, и закончим на этом.

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

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

Natalya Dzerzhinskaya, 2017.11.22 19:17


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

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


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



 
Vitaly Muzichenko:

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

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

для надежности

всегда(!!!) в функции нужно использовать найденное для неё значение, чтобы убедиться в том, что мы используем корректные и необходимые нам параметры функции

 
Renat Akhtyamov:

еще раз, вот отработка функции, дал я её сегодня, отработка сегодня, и закончим на этом.

Сказанное спасибо, не говорит о правильности подсказки, вы взрослый человек, и должны это осознавать.

Это примерно того, что приехать на станцию тех.обслуживания и сказать спасибо мастеру, мол после ремонта машина едет отлично, только клапана стучат. Понимаете?

Всё - ушёл)

 

учителей развелось.... все кому не лень....

только я знаю, что с торговыми функциями лучше не шутить

все должно быть выполнено на 5+

каждая ошибка - потеря денег!

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

Там условие - нужно найти только один ордер, который открыт раньше всех. А без полного перебора ордеров невозможно узнать, что такой-то ордер  является самым старым.

 
Renat Akhtyamov:

учителей развелось.... все кому не лень....

только я знаю, что с торговыми функциями лучше не шутить

все должно быть выполнено на 5+

каждая ошибка - потеря денег!

Ренат, это условие не выполниться даже при апокалипсисе, можете проверить:

                  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:

Ренат, это условие не выполниться даже при апокалипсисе, можете проверить:

ну человек же использовал мой код!!!!

ошибка вывалилась?????

Виталий, прекращай...

или иди помучай, если не веришь

 
Ihor Herasko:

Там условие - нужно найти только один ордер, который открыт раньше всех. А без полного перебора ордеров невозможно узнать, что такой-то ордер  является самым старым.

По условию, не может быть открытого более 5 минут, то есть можно смело перебирать по порядку, и и закрывать старше 5 минут, это и будет самый старый.

 
Renat Akhtyamov:

ну человек же использовал мой код!!!!

ошибка вывалилась?????


В том то и дело, что ее (ошибки) никогда не будет видно. Даже в том случае, если она появится. Переменная close должна быть типа bool, у которого не бывает значения меньше нуля.

 
Renat Akhtyamov:

ну человек же использовал мой код!!!!

ошибка вывалилась?????

Дело не в использовал, или не использовал.

Ещё раз:

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

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

Vitaly Muzichenko, 2017.11.22 20:28

При каких условиях это может когда-то отработать, хотя-бы раз в 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;}
                  }

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