Expertadvisor koduna gösterge kodu nasıl eklenir? - sayfa 3

 
ea'ma biraz filtre eklemek istiyorum, ne yapmalıyım?
 

merhaba, burada biraz sorunum var... ~~

rvi göstergesi ile yeni bir ea yapmak istiyorum,

ama görünüşe göre büyük bir hatam var.

ben bile bu sayfaya baktım https://www.mql5.com/en/articles/1456,

ama hala sorun var.

işte yaptığım kod.

Herkes bana bu kolay ea yapmak için bir el ödünç verebilir misiniz?

 //+------------------------------------------------------------------+
//|                                                       RVI EA.mq4 |
//|                                             Copyright 2012, Abu. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Abu."
#property link       "http://www.metaquotes.net"

//--- input parameters
extern double     TakeProfit= 100.0 ;
extern double     StopLoss= 100.0 ;
extern int        TotalOrder= 10 ;
extern double     FixedLotSize= 0.1 ;
extern double     FlexibleLotSize= 0.1 ;
extern double     RVIPeriod= 5 ;
//---- indicator buffers
double      ExtRVIBuffer[];
double      ExtRVISignalBuffer[];
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if ( AccountFreeMargin ()< 200 )         //----
   {
   Print ( "Margin is lesser than 200" );   //----
   return ( 0 );
   for ( int i= 100 ; i<TotalOrder(); i++) {
   if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
   if ( OrderSymbol ()== Symbol ()) {
   return (True);
   }
   } 
   } 
   return (false);
   }

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   int i,j,nLimit,CountedBars;
   double dValueUp,dValueDown,dNum,dDeNum;
//----
   if ( Bars <=RVIPeriod+ 8 ) return ( 0 );
//----
   CountedBars= IndicatorCounted ();
//---- check for possible errors
   if (CountedBars< 0 ) return (- 1 );
//---- last counted bar will be recounted
   Limit= Bars -RVIPeriod- 4 ;
   if (CountedBars>RVIPeriod+ 4 )
      Limit= Bars -CountedBars;
//---- RVI counted in the 1-st buffer
   for ( int i = limit); i >= 1 ; i--
     {
      dNum= 0.0 ; 
      dDeNum= 0.0 ;
   for ( int j=i; j<i+RVIPeriod; j++)
        {
         dValueUp=((Close[j]-Open[j])+ 2 *(Close[j+ 1 ]-Open[j+ 1 ])+ 2 *(Close[j+ 2 ]-Open[j+ 2 ])+(Close[j+ 3 ]-Open[j+ 3 ]))/ 6 ;
         dValueDown=((High[j]-Low[j])+ 2 *(High[j+ 1 ]-Low[j+ 1 ])+ 2 *(High[j+ 2 ]-Low[j+ 2 ])+(High[j+ 3 ]-Low[j+ 3 ]))/ 6 ;
         dNum+=dValueUp;
         dDeNum+=dValueDown;
        }
       if (dDeNum!= 0.0 )
         ExtRVIBuffer[i]=dNum/dDeNum;
       else
         ExtRVIBuffer[i]=dNum;   
     }

//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
   int start()
    {
       if ((i<j));
      {
         OpenSell();
         return ( 0 );
      }
       else 
      
       if ((j<i));
      {
         OpenBuy();
         return ( 0 );
      }
       else   
 //----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 

Bir EA'da Gösterge arabelleklerini veya IndicatorCounted() gibi diğer Gösterge işlevlerini KULLANAMAZSINIZ. Bir Gösterge oluşturun, iCustom kullanarak EA'nızdan Gösterge arabelleklerine erişin. Ayrıca mql4'ün sunduğu iRVI işlevini de kullanabilirsiniz. . .

init(), EA'nız başladığında bir kez çalıştırmak istediğiniz kod içindir, deinit(), EA'nız kapatıldığında bir kez çalıştırmak istediğiniz kod içindir. . . start(), her tik üzerinde çalıştırmak istediğiniz kod içindir. . .

 

herhangi bir zaman alevinin en yüksek ve en düşük mumunu nasıl bilebilirim ..

 
en düşük çubuk veya en yüksek çubuk nasıl tanımlanır?
 
ExtDepth ve shift nasıl tanımlanır?
 
   int a, b;
   double zag, zig; b= 0 ; while (a< 2 ) {
   if (zig> 0 ) zag=zig;
   zig= iCustom ( NULL , 0 , "ZigZag" , 0 , b);
   if (zig> 0 ) a+= 1 ;
   b++;
   ZigZagHigh= iCustom ( NULL , 0 , "ZigZag" ,MODE_HIGH, 0 );
   ZigZagLow= iCustom ( NULL , 0 , "ZigZag" ,MODE_LOW, 0 );    
   double LowestBar=Low[Lowest( NULL , 0 ,MODE_LOW,ExtDepth,shift)];
   double HighestBar=High[Highest( NULL , 0 ,MODE_HIGH,ExtDepth,shift)];

yukarıdaki gibi, a = mumun en yüksek fiyatını tanımlamak istiyorum

ve b = mumun en düşük fiyatı

EA'ma zikzak göstergesi eklemeye çalışıyorum.

ama yine de değişken tanımlanmadı.

bu hata nasıl düzeltilir??

 
Şu konuyu bir okuyun: https://www.mql5.com/en/forum/139051/page2#623895 ilkeler aynıdır.
 
albert_lim83 :

yukarıdaki gibi, a = mumun en yüksek fiyatını tanımlamak istiyorum

ve b = mumun en düşük fiyatı

EA'ma zikzak göstergesi eklemeye çalışıyorum.

ama yine de değişken tanımlanmadı.

bu hata nasıl düzeltilir??

ZigZagHigh, ZigZagLow ve ExtDepth'i beyan ettiniz mi?

iHighest ve iLowest, En Yüksek/En Düşük olan çubuğun numarasını döndürür. . . ve barlara shift ile başlayıp ExDepth çubuklarına bakarak bakarlar. . .

 

sonunda değişken problemini yaptım,

şimdi sadece

( - işlev tanımı beklenmeyen

) - dengesiz sağ parantez...

koduma ( ve ) koymayı bıraktım mı?