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

 

Дамы и мужики привет вам всем! Так получается что изучать язык по примерам я не могу, потому как все или слишком сложно или слишком не надо типа "a+b=c"

У меня есть конкретные запросы, разобраться,  в которых я никак не могу. Например самый тупой вопрос. Как написать советника ккоторый например рисует линию по хаю на свече? Куда можно посмотреть. Если кому то вдруг будет не лень мне ответить по делу , буду благодарен. 

 
TestReal:

Дамы и мужики привет вам всем! Так получается что изучать язык по примерам я не могу, потому как все или слишком сложно или слишком не надо типа "a+b=c"

У меня есть конкретные запросы, разобраться,  в которых я никак не могу. Например самый тупой вопрос. Как написать советника ккоторый например рисует линию по хаю на свече? Куда можно посмотреть. Если кому то вдруг будет не лень мне ответить по делу , буду благодарен. 

Пример: Four horizontal lines

Four horizontal lines
Four horizontal lines
  • www.mql5.com
Индикатор строит четыре горизонтальные линии: две основные (по умолчанию красные) выше High и ниже Low бара Bar number и вспомогательные (по умолчанию зеленые) с отступом от основных. Правило построения основных линий Правило построений вспомогательных линий Линия DifferenceUP строится по цене HighLowUP ПЛЮС разница между ценами HighLowUP и...
[Удален]  

Доброго дня.

Подскажите как изменить размер массива в структуре?

struct NNC
{
   double            nnc_arr_in[];
   double            nnc_arr_out[];
};
NNC my_nnc[];

Массив структур изменяется без проблем

ArrayResize(my_nnc,ind+1);

А как изменить размер nnc_arr_in[] ?

 
Сергей Таболин:

Доброго дня.

Подскажите как изменить размер массива в структуре?

Массив структур изменяется без проблем

А как изменить размер nnc_arr_in[] ?

Изменить размер массива nnc_arr_in на 1 больше его размера в ячейке 0 массива структур:

ArrayResize(my_nnc[0].nnc_arr_in,ArraySize(my_nnc[0].nnc_arr_in)+1);  
[Удален]  
Artyom Trishkin:

Изменить размер массива nnc_arr_in на 1 больше его размера в ячейке 0 массива структур:

Спасибо.

 

Вопрос  mql5

Есть две открытых позиции и есть сигнал (Flag==true

по которому должна закрыться только одна позиция, та у которой профит больше.

Как  закрыть только ту, у которой профит больше?

как лучше обработать это событие.

 Я пытаюсь это сделать так:

if (invertStart == true) // получил событие, о том что есть две позиции и одну можно закрыть.
   {     
   int npos_L1=0;   NPos_L1(npos_L1);
   if(npos_L1==1)
   {
   int positions=PositionsTotal();
   for(int i=0;i<=positions;i++)
   {
   ulong ticket=PositionGetTicket(i);
   if(ticket!=0 && PositionGetInteger(POSITION_TYPE)== POSITION_TYPE_SELL && POSITION_PROFIT>=50) //  50  допустим...
   {
   m_trade.PositionClose(ticket); 
   i--;
   invertStart = false;
   return;  
   }
   }
   }
   }  

Закрывается в итоге последняя открытая позиция. 

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

 
Vladpedro:

Вопрос  mql5

Есть две открытых позиции и есть сигнал (Flag==true

по которому должна закрыться только одна позиция, та у которой профит больше.

Как  закрыть только ту, у которой профит больше?

как лучше обработать это событие.

 Я пытаюсь это сделать так:

Закрывается в итоге последняя открытая позиция. 

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

Код:

   ulong ticket=ULONG_MAX;
   double profit=DBL_MIN;
   if(invertStart == true)  // получил событие, о том что есть две позиции и одну можно закрыть.
     {
      int positions=PositionsTotal();
      for(int i=PositionsTotal()-1; i>=0; i--)
        {
         ulong tmp_ticket=PositionGetTicket(i);
         if(ticket!=0)
           {
            double tmp_profit=PositionGetDouble(POSITION_PROFIT);
            if(tmp_profit>profit)
              {
               ticket=tmp_ticket;
               profit=tmp_profit;
              }
           }
        }
      //---
      if(ticket!=ULONG_MAX)
         m_trade.PositionClose(ticket);
     }
 
Vladimir Karputov:

Код:

Спасибо большое, вроде работает.  Только на ticket жалуется, так как такая локальная переменная уже есть.

declaration of 'ticket' hides local variable Lim_Stop_03_Sell_pos_06.mq5 299 10

Какой то из этих тикетов видимо нужно спрятать во внутрь.

 
Vladpedro:

Спасибо большое, вроде работает.  Только на ticket жалуется, так как такая локальная переменная уже есть.

declaration of 'ticket' hides local variable Lim_Stop_03_Sell_pos_06.mq5 299 10

Какой то из этих тикетов видимо нужно спрятать во внутрь.

Переименуйте переменную

ulong ticket=ULONG_MAX;

в

ulong close_ticket=ULONG_MAX;

 и конечно в коде тоже переименовать не забудьте.

 
Vladimir Karputov:

Переименуйте переменную

в

 и конечно в коде тоже переименовать не забудьте.

Да спасибо, я уже разобрался...  переименовал.