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

 
frank2020:

Я новичок в программировании, не очень хорошо, можыте переделать и выложыть для скачивания ???

Это качай
 
благодарю за ответ,скачал ничего не поменялось я хотел чтоб канал был на всей истории графика ,а не на коротком отрезку????
 
frank2020:
благодарю за ответ,скачал ничего не поменялось я хотел чтоб канал был на всей истории графика ,а не на коротком отрезку????
Я не разбираюсь в MQL5
 
Igor Makanu:

если напомнить о себе, тогда лучше пользовательское событие в OnChartEvent() бросать, имхо, удобнее

так это оно и есть, события между любых графиков в пределах терминала

 
Ctrl+N
 

здравствуйте. Никак не могу сообразить, как прописать в коде подсчет полос Accelerator Oscillator после пересечения двух МА, нужно после закрытия 2-й полосы(после пересечения МА), поставить вертикальную линию на 3-й. Понимаю, что возможно вы отправите меня зубрить справочник. Но может подскажите хотя бы какое нибудь решение. Буду благодарен за помощь. 

void OnTick()
  {
      //обновлять данные всех индикаторов раз в период
   if(Update_Time != iTime(NULL,0,0))
     {
      Update_Time = iTime(NULL,0,0); //перезаписываем значение переменной для хранения времени текущей свечи

      //импорт данных индикатора Moving Averages.
      double FastMA_1 = iMA(NULL,0,FastMA,0,FastMA_method,PRICE_CLOSE,1);
      double FastMA_2 = iMA(NULL,0,FastMA,0,FastMA_method,PRICE_CLOSE,2);
      double SlowMA_1 = iMA(NULL,0,SlowMA,0,SlowMA_method,PRICE_CLOSE,1);
      double SlowMA_2 = iMA(NULL,0,SlowMA,0,SlowMA_method,PRICE_CLOSE,2);
      double   ac     = iAC(NULL,0,1);
      
         //---FastMA_1 выше SlowMA_1, т.е. произошло пересечение снизу вверх
                 
      if(FastMA_1 > SlowMA_1 && FastMA_2 <= SlowMA_2)
        {

//---Не пойму как сделать подсчет полос в iAC после пересечения МА...         
         if((ac[2]>0.0) && (ac[1]>ac[2]))
           {
             VLineCreate(0,"VLine",0,0,clrRed,STYLE_SOLID,1,false,true,true,0); 
           }
        }
     }
  }

Прикрепил скрин с графика для визуального представления:

Файлы:
 
DYM:

здравствуйте. Никак не могу сообразить, как прописать в коде подсчет полос Accelerator Oscillator после пересечения двух МА, нужно после закрытия 2-й полосы(после пересечения МА), поставить вертикальную линию на 3-й. Понимаю, что возможно вы отправите меня зубрить справочник. Но может подскажите хотя бы какое нибудь решение. Буду благодарен за помощь. 

Прикрепил скрин с графика для визуального представления:

double   ac1     = iAC(NULL,0,1);

double   ac2     = iAC(NULL,0,2);
 
DYM:

здравствуйте. Никак не могу сообразить, как прописать в коде подсчет полос Accelerator Oscillator после пересечения двух МА, нужно после закрытия 2-й полосы(после пересечения МА), поставить вертикальную линию на 3-й. Понимаю, что возможно вы отправите меня зубрить справочник. Но может подскажите хотя бы какое нибудь решение. Буду благодарен за помощь. 

Прикрепил скрин с графика для визуального представления:

Проверяйте пересечение МА не на 1 и 2 барах, а на 3 и 4. И если пересечение, то проверить значения АО на 1 и 2 барах.

 

Спасибо большое. С трудом, но вроде разобрался. Вот что вышло:

void OnTick()
  {


      //импорт данных индикатора Moving Averages.
      double FastMA_1 = iMA(NULL,0,FastMA,0,0,PRICE_CLOSE,1);
      double FastMA_2 = iMA(NULL,0,FastMA,0,0,PRICE_CLOSE,2);
      double SlowMA_1 = iMA(NULL,0,SlowMA,0,0,PRICE_CLOSE,1);
      double SlowMA_2 = iMA(NULL,0,SlowMA,0,0,PRICE_CLOSE,2);
      double   ac     = iAC(NULL,0,0);
      double   ac1     = iAC(NULL,0,1);
      double   ac2     = iAC(NULL,0,2);
      
      
      
         //---Быстрая скользящая средняя (меньше периода) на первой свече выше медленной, т.е. произошло пересечение снизу вверх
      if(FastMA_1 > SlowMA_1 && FastMA_2 <= SlowMA_2)
        {
         
         if((ac>0.0) && (ac>ac1) && (ac1>ac2))
           {
             VLineCreate(0,"VLine",0,0,clrLimeGreen,STYLE_SOLID,1,false,true,true,0);
           }
        }
        
        //---Быстрая скользящая средняя (меньше периода) на первой свече ниже медленной, т.е. произошло пересечение cверху вниз
      if(FastMA_1 < SlowMA_1 && FastMA_2 >= SlowMA_2)
        {
         
         if((ac<0.0) && (ac<ac1) && (ac1<ac2))
           {
             VLineCreate(0,"VLine",0,0,clrOrangeRed,STYLE_SOLID,1,false,true,true,0);
           }
        }
  }

Сделал скрин: 

Файлы:
 
DYM:

Спасибо большое. С трудом, но вроде разобрался. Вот что вышло:

Сделал скрин: 

жди ошибку 4200
Причина обращения: