MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1513

 
frank2020 :

Programlamada yeniyim, çok iyi değil, yeniden yapıp indirmek için yükleyebilir misiniz???

salıncak
 
MakarFX :
salıncak
cevap için teşekkürler, indirilen hiçbir şey değişmedi, kanalın kısa bir segmentte değil, grafiğin tüm geçmişinde olmasını istedim ????
 
frank2020 :
cevap için teşekkürler, indirilen hiçbir şey değişmedi, kanalın kısa bir segmentte değil, grafiğin tüm geçmişinde olmasını istedim ????
MQL5'i anlamıyorum
 
Igor Makanu :

Kendinize hatırlatıyorsanız, OnChartEvent(), IMHO'da özel bir olay atmak daha iyidir, bu daha uygundur

bu böyle, terminal içindeki herhangi bir çizelge arasındaki olaylar

 
Ctrl+N
 

merhaba. İki MA'nın kesişmesinden sonra Hızlandırıcı Osilatör bantlarının hesaplanmasını koda nasıl yazacağımı çözemiyorum, 2. bandı kapattıktan sonra (MA'yı geçtikten sonra), 3. bant üzerine dikey bir çizgi koyun. Belki de beni kılavuzu doldurmam için göndereceğinizi anlıyorum. Ama lütfen bana bir çözüm sunar mısınız? Yardım için minnettar olacağım.

 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 ); 
           }
        }
     }
  }

Görsel temsil için grafikten bir ekran görüntüsü eklendi:

Dosyalar:
 
DYM :

merhaba. İki MA'nın kesişmesinden sonra Hızlandırıcı Osilatör bantlarının hesaplanmasını koda nasıl yazacağımı çözemiyorum, 2. bandı kapattıktan sonra (MA'yı geçtikten sonra), 3. bant üzerine dikey bir çizgi koyun. Belki de beni kılavuzu doldurmam için göndereceğinizi anlıyorum. Ama lütfen bana bir çözüm sunar mısınız? Yardım için minnettar olacağım.

Görsel temsil için grafikten bir ekran görüntüsü eklendi:

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

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

merhaba. İki MA'nın kesişmesinden sonra Hızlandırıcı Osilatör bantlarının hesaplanmasını koda nasıl yazacağımı çözemiyorum, 2. bandı kapattıktan sonra (MA'yı geçtikten sonra), 3. bant üzerine dikey bir çizgi koyun. Belki de beni kılavuzu doldurmam için göndereceğinizi anlıyorum. Ama lütfen bana bir çözüm sunar mısınız? Yardım için minnettar olacağım.

Görsel temsil için grafikten bir ekran görüntüsü eklendi:

MA'nın kesişimini 1 ve 2 çubuklarda değil, 3 ve 4'te kontrol edin. Ve eğer kesişme ise, 1 ve 2 çubuklarda AO değerlerini kontrol edin.

 

Çok teşekkürler. Zorlukla, ama bir şekilde anladım. İşte olanlar:

 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 );
           }
        }
  }

Bir ekran görüntüsü yaptı:

Dosyalar:
 
DYM :

Çok teşekkürler. Zorlukla, ama bir şekilde anladım. İşte olanlar:

Bir ekran görüntüsü yaptı:

4200 hatasını bekleyin