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

 
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

...

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


 
Yousufkhodja Sultonov:
Мой компьютер может мешать работе советника на ВПС или нет? Поскольку, этот-же советник на моем компе работает исправно.
Если оба советника работают на одном и том же счёте, с одним и тем же магиком и на одном и том же символе, то да, может.
 
Artyom Trishkin:
Если оба советника работают на одном и том же счёте, с одним и тем же магиком и на одном и том же символе, то да, может.
Да, это так. Придется не открывать ВПС на домашнем компе, а следить за его работой по сигналам и проверить, как он работает. Спасибо.
 
Yousufkhodja Sultonov:
Да, это так. Придется не открывать ВПС на домашнем компе, а следить за его работой по сигналам и проверить, как он работает. Спасибо.
И опять не полная информация. На домашнем компе открыт удалённый доступ к VPS или открыт терминал с поставленным советником и удалённый доступ?
Считать надо сколько копий терминалов открыто и сколько копий советников в итоге в работе. Если на VPS открыт МТ с советником и его просматривать с помощью удалённого доступа никаких проблем не должно быть. Если-же на домашнем компе открыта вторая копия терминала с советником, то конфликт советников при условиях перечисленных Артёмом гарантированы.
Ничто не мешает сделать даже так: На VPS работает советник, а на домашнем открыт терминал БЕЗ советника, в этом случае будет видно открытые сделки, поставленные стопы и прочую информацию кроме логов.