Скачать MetaTrader 5

Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 837

gastinets
39
gastinets  

давайте перенесем

мне сделать новую тему или вы сделаете?

Vladimir Karputov
Модератор
103790
Vladimir Karputov  
gastinets:

давайте перенесем

мне сделать новую тему или вы сделаете?

Создайте пожалуйста тему сами в разделе: Автоматические торговые системы

Vladimir Karputov
Модератор
103790
Vladimir Karputov  
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
VHS
1799
VHS  
Vladimir Karputov:

Я думаю можно всё сделать намного проще - в советнике порог на ЗАКРЫТИЕ ставите равным 100, а вес сигналу даёте 0.5 - таким образом сигнал с весом 0.5 НИКОГДА не преодолеет порог 100


Спасибо! Вроде бы заработало!

Pavel Nikiforov
380
Pavel Nikiforov  
Объясните пожалуйста в чем косяк. По задумке функция должна перебирать открытые позиции и подсчитывать количество с заданным магиком. Но  по факту из всего списка выбирает только одну, открытую другим советником с одним и тем же тикетом и магиком, соответственно count всегда =0.
int OpenPositions()//проверка открытых позиций
  {
   int count=0;
   for(int z=PositionsTotal()-1; z>=0; z --)
     {
      if(!PositionSelect(_Symbol))
        {
         Print(__FUNCSIG__" позиция не выбрана ",GetLastError()); continue;
        }
      long  ticket = PositionGetInteger(POSITION_TICKET);
            Print(__FUNCSIG__" ТИКЕТ ", IntegerToString(ticket));
      ulong myMN=PositionGetInteger(POSITION_MAGIC);
            Print(__FUNCSIG__" МАГИК ", IntegerToString(myMN));
      if(myMN==Magic)
            count++;
     }
   return(count);
  }
Pavel Nikiforov
380
Pavel Nikiforov  
Pavel Nikiforov:
Объясните пожалуйста в чем косяк. По задумке функция должна перебирать открытые позиции и подсчитывать количество с заданным магиком. Но  по факту из всего списка выбирает только одну, открытую другим советником с одним и тем же тикетом и магиком, соответственно count всегда =0.

В общем сам разобрался, выбирать нужно через PositionGetSymbol:

//+------------------------------------------------------------------+
int OpenPositions()//проверка открытых позиций по Magic number 
  {
   int count=0;
     for(int z=PositionsTotal()-1; z>=0; z --) // Перебор всех позиций
     {
       if(PositionGetSymbol(z)!=_Symbol) // Найдена позиция с заданным символом
        {
         Print(__FUNCSIG__" позиция не выбрана ",GetLastError()); continue;
        }
      long  ticket = PositionGetInteger(POSITION_TICKET);
            Print(__FUNCSIG__" ТИКЕТ ", IntegerToString(ticket));
      ulong myMN=PositionGetInteger(POSITION_MAGIC);
            Print(__FUNCSIG__" МАГИК ", IntegerToString(myMN));
      if(myMN==Magic)
            count++;
     }
   return(count);
  }
//+------------------------------------------------------------------+
Alexey Viktorov
24793
Alexey Viktorov  
Pavel Nikiforov:

В общем сам разобрался, выбирать нужно через PositionGetSymbol:

Плохо разобрался. Выбирать на hadge счёте надо функцией PositionGetTicket(i) и затем проверять символ и магик.

Документация по MQL5: Торговые функции / PositionGetTicket
Документация по MQL5: Торговые функции / PositionGetTicket
  • www.mql5.com
Торговые функции / PositionGetTicket - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Vladimir Karputov
Модератор
103790
Vladimir Karputov  
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
Pavel Nikiforov
380
Pavel Nikiforov  
Alexey Viktorov:

Плохо разобрался. Выбирать на hadge счёте надо функцией PositionGetTicket(i) и затем проверять символ и магик.

Ну да так лучше, другие функции тоже глючили на демке, стало работать.