Hatalar, hatalar, sorular - sayfa 276

 
Yedelkin :
Bkz . MQL5 Referansı / Teknik Göstergeler / iCustom

çabukluğunuz için çok teşekkür ederim)

 

Bu konuda. Neredeyse yakaladım, ancak DANIŞMAN terminal günlüğünde başlamıyor yazıyor


kaldırıldı

başarıyla yüklendi


kazanılan!!
 

burada bir hatan var

   v161_handle= iCustom ( NULL , 0 , "ErolМТ5" );                            
   v162_handle= iCustom ( NULL , 0 , "ErolМТ5" );
   Sum_handle= iCustom ( NULL , 0 , "ErolМТ5" );
bu durumda, üç değişkenin tümü aynı tanıtıcıya sahip olacaktır. aynı göstergeyi üç kez aradığınız için.
 
sergey1294 :

burada bir hatan var

bu durumda, üç değişkenin tümü aynı tanıtıcıya sahip olacaktır. aynı göstergeyi üç kez aradığınız için.

Evet ama anladığım kadarıyla gösterge çizgilerinin indeks değerleri (3 çizginin değerleri)

geçiyoruz:

 CopyBuffer (v161_handle, 1 , 0 , 3 ,Spr1Buffer)
CopyBuffer (v162_handle, 2 , 0 , 3 ,Spr2Buffer)
CopyBuffer (Sum_handle, 4 , 0 , 3 ,SumBuffer)

burada 1, 2 ve 4, arabellekte depolanan gösterge çizgileri endekslerinin değerleridir,

sonra birbirimizle karşılaştırırız.

Ama önemli değil, benim için gösterge çizgilerinin bu indekslerini kullanarak doğru hesaplamıyor

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 

Bana nereye gideceğimi ya da burada ne yapacağımı söyle.


 void OnTick ()
{  
   ArraySetAsSeries (Spr1Buffer, true );
   ArraySetAsSeries (Spr2Buffer, true );
   ArraySetAsSeries (SumBuffer, true );

   if ( CopyBuffer (v161_handle, 1 , 0 , 3 ,Spr1Buffer)< 0 || CopyBuffer (v162_handle, 2 , 0 , 3 ,Spr2Buffer)< 0 || CopyBuffer (Sum_handle, 4 , 0 , 3 ,SumBuffer)< 0 )
      {
       Alert ( "Ошибка копирования буферов индикатора номер ошибки:" , GetLastError ());
      }
   bool SellSpr1 =(Spr1Buffer[ 1 ] > Spr2Buffer[ 1 ]);
   bool SellSum1 =(SumBuffer[ 1 ]>=Sp);
   if (SellSpr1 && SellSum1 && ! PositionSelect (_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =(Spr1Buffer[ 1 ] < Spr2Buffer[ 1 ]);
   bool BuySum1 =(SumBuffer[ 1 ]>=Sp);
   if (BuySpr1 && BuySum1 && ! PositionSelect (_Symbol))     
      {
        PositionOpenBuy1();
      }
 
alexluek :

Evet ama anladığım kadarıyla gösterge çizgilerinin indeks değerleri (3 çizginin değerleri)

geçiyoruz:

burada 1, 2 ve 4, tamponda saklanan gösterge çizgileri endekslerinin değerleridir,

sonra birbirimizle karşılaştırırız.

Ama önemli değil, benim için gösterge çizgilerinin bu indekslerini kullanarak doğru hesaplamıyor

Göstergenin bir kopyasını yüklemek ve kopya arabelleği aracılığıyla istenen arabellek dizinine erişmek yeterlidir.
 
sergey1294 :
Göstergenin bir kopyasını yüklemek ve kopya arabelleği aracılığıyla istenen arabellek dizinine erişmek yeterlidir.

hayır 2. satırın değerlerini almak mümkün değil

çünkü farklı tamponlarda saklanan 2 satır indeksin değerleri karşılaştırılır.


   bool SellSpr1 =(Spr1Buffer[ 1 ] > Spr2Buffer[ 1 ]);
 
alexluek :

hayır 2. satırın değerlerini almak mümkün değil

çünkü farklı tamponlarda saklanan 2 satır indeksin değerleri karşılaştırılır.


belki göstergenin kendisinde hatalar vardır
 
sergey1294 :
belki göstergenin kendisinde hatalar vardır

gösterge doğru

 

Boğulanların kurtuluşu, boğulanların kendilerinin işidir.

Gelecek için, birisi için yararlı olabilir:

Geçerli çubuktaki gösterge çizgilerinin 2 veya daha fazla değerini danışmana çağırmak için

1 tutamaç seçip hindiyi aramanız, ardından kopya arabelleği aracılığıyla kaydetmeniz gerekir. değer endeksler

ve sonra bu arabelleklerle çalışın. sergey1294 yardımın için teşekkürler!

 int OnInit ()
  {
   v161_handle= iCustom ( NULL , 0 , "LeroyMТ5" );                            
   if (v161_handle< 0 )
     {
       Alert ( "Ошибка при создании индикаторов: " , GetLastError ());
       return (- 1 );
     }
   return ( 0 );
  }


void OnTick ()
{  
   ArraySetAsSeries (Sp1Buffer, true );
   ArraySetAsSeries (Sp2Buffer, true );
   ArraySetAsSeries (Sp3Buffer, true );
   if ( CopyBuffer (v161_handle, 1 , 0 , 1 ,Sp1Buffer)< 0 || CopyBuffer (v161_handle, 2 , 0 , 1 ,Sp2Buffer)< 0 || CopyBuffer (v161_handle, 4 , 0 , 1 ,Sp3Buffer)< 0 )
      {
       Alert ( "Ошибка копирования буферов индикатора номер ошибки:" , GetLastError ());
       return ;
      }    
   bool SellSpr1 =( Sp1Buffer[ 0 ]> Sp2Buffer[ 0 ] && Sp3Buffer[ 0 ]>=Sp );
   if (SellSpr1  && ! PositionSelect (_Symbol))     
      {
        PositionOpenSell1();
      }
   bool BuySpr1 =( Sp1Buffer[ 0 ]< Sp2Buffer[ 0 ] && Sp3Buffer[ 0 ]>=Sp );
   if (BuySpr1 && ! PositionSelect (_Symbol));   
      {
        PositionOpenBuy1();
      }
}