Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1912

 
Alekseu Fedotov #:

Не вижу здесь ошибки.

if(TimeFrame != PERIOD_CURRENT)

то же самое

if(TimeFrame != 0)
 
Alekseu Fedotov #:

Не вижу здесь ошибки.

PERIOD_CURRENT это 0 - магическая константа

по идее должно быть _Period (период текущего чарта) как минимум и он всегда не 0

 
Alekseu Fedotov #:

Не вижу здесь ошибки.

Там где взят этот кусок кода, есть ещё и входной параметр

sinput ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; // Период

Соответственно получается условие если 0 не равен 0

А вот если во входном параметре вместо PERIOD_CURRENT поставить любой другой период, то независимо от периода графика условие будет выполнено. И какой тогда смысл в этом условии?

 
Alexey Viktorov #:

Там где взят этот кусок кода, есть ещё и входной параметр

Соответственно получается условие если 0 не равен 0

А вот если во входном параметре вместо PERIOD_CURRENT поставить любой другой период, то независимо от периода графика условие будет выполнено. И какой тогда смысл в этом условии?

Смысл только в одном, чтобы лишний раз не дергать функцию    ChartSetSymbolPeriod();

 
Alekseu Fedotov #:

Смысл только в одном, чтобы лишний раз не дергать функцию    ChartSetSymbolPeriod();

В принципе да. Но ведь вопрос-то был о наличии ошибки, а не о целесообразности этого условия…

 

Добрый день, уважаемые разработчики!

Столкнулся с необходимостью группировать ордера для работы с каждой группой отдельно (закрытие, доливка  и т.д.). Вроде задача не особо сложная, но не получается ее решить. Глаз замылился и все. Никто не сталкивался с подобной проблемой? Группировать можно любым способом (глобальные переменные терминала, комменты и т.д.). Буду благодарен за помощь. 

 
AMarkov #:

Добрый день, уважаемые разработчики!

Столкнулся с необходимостью группировать ордера для работы с каждой группой отдельно (закрытие, доливка  и т.д.). Вроде задача не особо сложная, но не получается ее решить. Глаз замылился и все. Никто не сталкивался с подобной проблемой? Группировать можно любым способом (глобальные переменные терминала, комменты и т.д.). Буду благодарен за помощь. 

А магик почему не подходит? Ведь в одном советнике может быть и не один магик…

 
Магик 
Alexey Viktorov #:

А магик почему не подходит? Ведь в одном советнике может быть и не один магик…

Магик тоже подходит. Я полагаю, что у всех этих вариантов алгоритм будет почти одинаковым. Так что все равно. Главное, найти решение).

 
AMarkov #:
Магик 

Магик тоже подходит. Я полагаю, что у всех этих вариантов алгоритм будет почти одинаковым. Так что все равно. Главное, найти решение).

Конечно решение одинаково. Определяете критерий по которому ордер относится к той или иной группе и идентифицируете его в соответствии с этим критерием…
 
Alexey Viktorov #:
Конечно решение одинаково. Определяете критерий по которому ордер относится к той или иной группе и идентифицируете его в соответствии с этим критерием…

Благодарю Вас за участие. Постановка задачи мне понятна. С реализацией забуксовал...

Пробовал с комментами. До второй группы нумерует правильно. На третьей возвращает единицу для коммента, хотя первая группа еще в рынке. Смысл такой, чтобы не плодить номера, а занимать освободившиеся. Надеюсь, понятно объяснил).  

    for(int a=1; a<10; a++)

     {

       comment="";

       for(int i=0; i<OrdersTotal(); i++)

         {

          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

            {

             if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)

               {    

                  //Print(OrderComment());

                  if (OrderComment()==IntegerToString(a)) continue; 

                  else

                  {

                   comment=IntegerToString(a);

                   break;                  

                  } 

               }

            } 

         } 

        if(comment!="") break; 

     }

    if (CountOfBuy(magic)<1 && CountOfSell(magic)<1) comment="1";

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