Ошибки, баги, вопросы - страница 1810

 
Dmitriy Skub:
Опять чего-то начудили.

Скомпилировал в версии 1531. При запуске получил:

2017.02.16 18:55:19.101    MQL5    'TradePanel.ex5' has newer unsupported version, please update your client terminal

Хорошо, что не на боевом счете.

Ответ в сервисдеске:

Support Team 
 2017.02.16 09:46 

Извините за причинённое неудобство, в ближайшее время выложим очередной билд. 

К сожалению, произошла рассинхронизация билда терминала и версии компилятора в редакторе. 

Конкретно в данном случае, из-за используемых в MQL программе ресурсов, требуется версия терминала 1532 или выше.
Сегодня у меня незапланированный выходной. )
 
Anatoli Kazharski:
Сегодня у меня незапланированный выходной. )
У всех ;)
 
Artyom Trishkin:
У всех ;)
Видимо, что-то делаю не так, раз 1531 пашет больше суток со всем своим кодом.
 
fxsaber:
Видимо, что-то делаю не так, раз 1531 пашет больше суток со всем своим кодом.
Такая проблема не со всем кодом проявляется. 
 
for (int i=0; i<PositionsTotal();i++)
     {if (PositionSelect(_Symbol))
      {if (PositionGetInteger(POSITION_TIME)<TimeBuffer[0])
               {MqlTradeRequest request={0};
                MqlTradeResult result={0};
                request.action=TRADE_ACTION_DEAL;        
                request.symbol=_Symbol;                  
                request.volume=Volume;                      
                request.sl=NormalizeDouble(Minimum+((Delta*KoefSL)/100), _Digits);              
                request.tp=NormalizeDouble(Minimum-((Delta*(100-KoefTP))/100), _Digits);                          
                request.type=ORDER_TYPE_SELL;        
                request.price=Bid;  // open price
                request.type_time=ORDER_TIME_GTC;                    
                //--- send a trade request
                trade2=OrderSend(request,result);}}}
Здравствуйте уважаемые форумчане. Не могу понять где ошибка в строке if (PositionGetInteger(POSITION_TIME)<TimeBuffer[0]). В TimeBuffer[0] находится время открытия текущего бара. Мне нужно сравнить если время открытой позиции меньше времени текущего бара. 
 
Dmitri Custurov:
for (int i=0; i<PositionsTotal();i++)
     {if (PositionSelect(_Symbol))
      {if (PositionGetInteger(POSITION_TIME)<TimeBuffer[0])
               {MqlTradeRequest request={0};
                MqlTradeResult result={0};
                request.action=TRADE_ACTION_DEAL;        
                request.symbol=_Symbol;                  
                request.volume=Volume;                      
                request.sl=NormalizeDouble(Minimum+((Delta*KoefSL)/100), _Digits);              
                request.tp=NormalizeDouble(Minimum-((Delta*(100-KoefTP))/100), _Digits);                          
                request.type=ORDER_TYPE_SELL;        
                request.price=Bid;  // open price
                request.type_time=ORDER_TIME_GTC;                    
                //--- send a trade request
                trade2=OrderSend(request,result);}}}
Здравствуйте уважаемые форумчане. Не могу понять где ошибка в строке if (PositionGetInteger(POSITION_TIME)<TimeBuffer[0]). В TimeBuffer[0] находится время открытия текущего бара. Мне нужно сравнить если время открытой позиции меньше времени текущего бара. 
Выделенная строка лишняя. Или же делайте PositionGetSymbol, но лучше PositionSelectByTicket(PositionGetTicket).
 
Скажите, пожалуйста, почему советник на ВПС не открывает ордера? Правда, я оставляю открытым удаленный рабочий стол на домашнем компьютере с такими-же терминалами и советниками. Возможно, этие советники мешают друг другу? Кактолько я вызываю и обратно закрываю советник на домашнем компьютере, советник открывает позицию, как ни в чем не бывало. 
 
Yousufkhodja Sultonov:
Скажите, пожалуйста, почему советник на ВПС не открывает ордера? Правда, я оставляю открытым удаленный рабочий стол на домашнем компьютере с такими-же терминалами и советниками. Возможно, этие советники мешают друг другу? Кактолько я вызываю и обратно закрываю советник на домашнем компьютере, советник открывает позицию, как ни в чем не бывало. 

ВПС - по  сути это такой-же компьютер, только стоит не у Вас в помещении, а, как правило, где-то далеко и при этом он подключён к Вашему торговому счёту. Сам советник не может получат информацию, сколько подключений существует в данное время к данному торговому счёту. Советник может строить свою логику исходя из:

  • количества открытых позиций
  • какие magic'и у открытых позиций
  • количества отложенных ордеров
Также формулировка "... почему советник на ВПС не открывает ... " неточная. Что значит не открывает? Пытается открыть, но сообщает об ошибке?

В общем сначала нужно знать внутреннюю логику советника - от чего зависят его входы в рынок. Без этого никак. 

 
Vladimir Karputov:

ВПС - по  сути это такой-же компьютер, только стоит не у Вас в помещении, а, как правило, где-то далеко и при этом он подключён к Вашему торговому счёту. Сам советник не может получат информацию, сколько подключений существует в данное время к данному торговому счёту. Советник может строить свою логику исходя из:

  • количества открытых позиций
  • какие magic'и у открытых позиций
  • количества отложенных ордеров
Также формулировка "... почему советник на ВПС не открывает ... " неточная. Что значит не открывает? Пытается открыть, но сообщает об ошибке?

В общем сначала нужно знать внутреннюю логику советника - от чего зависят его входы в рынок. Без этого никак. 

Мой компьютер может мешать работе советника на ВПС или нет? Поскольку, этот-же советник на моем компе работает исправно.
 
Yousufkhodja Sultonov:
Мой компьютер может мешать работе советника на ВПС или нет? Поскольку, этот-же советник на моем компе работает исправно.

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

Ошибки, баги, вопросы

Vladimir Karputov, 2017.02.17 18:50

...

В общем сначала нужно знать внутреннюю логику советника - от чего зависят его входы в рынок. Без этого никак. 


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