Expertadvisor 코드에 표시기 코드를 추가하는 방법 ?? - 페이지 3

 
내 ea에 필터를 추가하고 싶습니다. 어떻게 해야 합니까 ??
 

안녕하세요 여기 문제가 있습니다 ... ~~

rvi 표시기로 새로운 ea를 만들고 싶습니다.

하지만 내가 큰 실수를 한 것 같다.

내가 이 페이지 https://www.mql5.com/en/articles/1456를 보았지만,

하지만 여전히 문제가 있습니다.

여기 내가하는 코드가 있습니다.

누구든지 나에게 손을 빌려주실 수 있습니까?

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

EA에서는 표시기 버퍼 또는 IndicatorCounted()와 같은 기타 표시기 함수를 사용할 수 없습니다 . 지표를 만들고 iCustom을 사용하여 EA에서 지표 버퍼에 액세스합니다. mql4가 제공하는 iRVI 기능을 간단히 사용할 수도 있습니다. . .

init()는 EA가 시작될 때 한 번 실행하려는 코드용이고 deinit()은 EA가 닫힐 때 한 번 실행하려는 코드용입니다. . . start() 는 각 틱에서 실행하려는 코드용입니다. . .

 

모든 시간의 촛불의 최고점과 최저점을 아는 방법 ..

 
가장 낮은 막대 또는 가장 높은 막대를 정의하는 방법 ??
 
ExtDepth를 정의하고 ea에서 이동하는 방법 ??
 
   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)];

위와 같이 정의하고 싶습니다 = 양초의 최고 가격

b = 양초의 최저 가격

내 EA에 지그재그 표시기 를 추가하려고 합니다.

그러나 여전히 변수가 정의되지 않았습니다.

이 오류를 수정하는 방법 ??

 
이 스레드를 읽으십시오: https://www.mql5.com/en/forum/139051/page2#623895 원칙은 동일합니다.
 
albert_lim83 :

위와 같이 정의하고 싶습니다 = 양초의 최고 가격

b = 양초의 최저 가격

내 EA에 지그재그 표시기를 추가하려고 합니다.

그러나 여전히 변수가 정의되지 않았습니다.

이 오류를 수정하는 방법 ??

ZigZagHigh, ZigZagLow 및 ExtDepth를 선언했습니까?

iHighest 및 iLowest 는 최고/최저 막대 번호를 반환합니다. . . 그들은 Shift로 시작하는 막대를 보고 ExDepth 막대를 봅니다. . .

 

마지막으로 변수 문제를 완료했습니다.

지금은 만

( - 예기치 않은 함수 정의

) - 불균형 오른쪽 괄호...

내 코드에 ( 및 ) 남겨 놓았습니까 ??