초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 224

 
Advisor에서 첫 번째 줄은
 OnTick ()

이 줄 이후에 추가 코드는 양초당 한 번씩 실행됩니다. 형성 당시.

내가 이해하는 한 고문이이 지표를 호출합니까?

 
Aleksei Stepanenko :
Advisor에서 첫 번째 줄은

이 줄 이후에 추가 코드는 양초당 한 번씩 실행됩니다. 형성 당시.

내가 이해하는 한 고문이이 지표를 호출합니까?

글쎄, 일반적으로 나는이 표시기를 다른 표시기에 삽입하여 다른 프로그램으로 신호를 전송합니다. 즉, 고문이 없습니다. 즉, 지표 자체의 어딘가에 구축해야하지만 어떻게?
 
그리고 어떤 프로그램이 거래를 시작합니까? 그녀는 고문입니다. 아니다?
 
Aleksei Stepanenko :
그리고 어떤 프로그램이 거래를 시작합니까? 그녀는 고문입니다. 아니다?

아, 음, 아마도... 하지만 모든 것이 더 복잡해지는 것 같습니다. 바로... 이 코드에 포함할 수는 없겠죠? 그리고 두 번째 표시기의 코드에도 코드가 없습니다.

 OnTick ()
도대체 어떻게 그렇게 작동합니까?
 
iCustom을 통해 이 표시기를 호출하는 경우 다르게 시도할 수 있습니다. 이 기능의 끝에 0 대신 1을 넣으십시오.
 
그건 그렇고 인디케이터도 화살표를 많이 그리는데 차트를 새로고침하면 몇개만 남습니다. :(역사에서 지표가 스스로를 보호하는 것처럼 내가 어떻게 거래를 잘하는지 보지만 실시간으로 모든 것이 완전히 다릅니다. :(
 
ElenkaVladi :
그건 그렇고, 인디케이터도 화살표를 많이 그립니다,

예? 흠 나중에 봐야겠다.

 
Aleksei Stepanenko :
iCustom을 통해 이 표시기를 호출하는 경우 다르게 시도할 수 있습니다. 이 기능의 끝에 0 대신 1을 넣으십시오.

바로 여기입니까?

 if (IndicatorName != "" ) {
      up = iCustom ( NULL , 0 , IndicatorName, IndiBufferCall, SignalType);
      dn = iCustom ( NULL , 0 , IndicatorName, IndiBufferPut, SignalType);
 if (IndicatorName != "" ) {
      up = iCustom ( NULL , 1 , IndicatorName, IndiBufferCall, SignalType);
      dn = iCustom ( NULL , 1 , IndicatorName, IndiBufferPut, SignalType);

그것을 하는 방법?

 
Aleksei Stepanenko :

예? 흠 나중에 봐야겠다.

메시지가 아닐까요? 당신은 여전히 그것을 할 필요가 있습니까?

https://www.mql5.com/ru/forum/160587/page223#comment_19618305

아무튼 이렇게 함께해주셔서 정말 감사합니다...:)))

상황에 대한 이해를 돕기 위해 파일을 첨부합니다.

Вопросы от начинающих MQL4 MT4 MetaTrader 4
Вопросы от начинающих MQL4 MT4 MetaTrader 4
  • 2020.11.29
  • www.mql5.com
Если у Вас вопросы по MQL4, MT4, MetaTrader 4, пожалуйста пишите в этой теме. Особенно когда вопросы касаются торговых функций...
 
ElenkaVladi :

작업 코드는 다음과 같습니다.

 //---- indicator settings
#property   indicator_chart_window
#property   indicator_buffers 2
#property   indicator_color1   Blue
#property   indicator_color2   Red
//---- indicator parameters
extern int   period = 4 ; //12
extern int   shift  = 0 ; //сдвиг по бару
//---- indicator buffers
double BufferUp[],BufferDn[];
double Ma[],MaOn[];

datetime LastTime= 0 ;
int i, st= 5 ;

int OnInit ()
   {
   IndicatorBuffers( 2 );
//---- drawing settings
   SetIndexStyle( 0 , DRAW_ARROW , 2 );
   SetIndexArrow( 0 , 233 );
   SetIndexStyle( 1 , DRAW_ARROW , 2 );
   SetIndexArrow( 1 , 234 );

   SetIndexBuffer ( 0 ,BufferUp); //стрелка синяя верх
   SetIndexBuffer ( 1 ,BufferDn); //стрелка красная вниз
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName( "T3MA-ALARM (" +period+ ")" );
   
   ArraySetAsSeries (Ma, true );
   ArraySetAsSeries (MaOn, true );
//---- initialization done
   if ( Digits == 3 || Digits == 5 ) st*= 10 ;
   return ( INIT_SUCCEEDED );
   }
   
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
   {
   if (rates_total<= MathMax (period,shift)) return ( 0 );
   int limit=rates_total-prev_calculated;   
   if (prev_calculated> 0 ) limit++;

   if (LastTime!=time[ 1 ])
      {
      LastTime=time[ 1 ];
       ArrayCopy (Ma,Ma,rates_total- ArraySize (Ma), 0 , WHOLE_ARRAY );
       ArrayCopy (MaOn,MaOn,rates_total- ArraySize (MaOn), 0 , WHOLE_ARRAY );
      }

   for (i=limit; i>= 1 ; i--) Ma[i]= iMA ( NULL , 0 ,period, 0 , MODE_EMA , PRICE_CLOSE ,i);
   for (i=limit; i>= 1 ; i--) MaOn[i]=iMAOnArray(Ma,rates_total,period, 0 , MODE_EMA ,i);
      
   for (i=limit; i>= 1 ; i--)
      {
       if (MaOn[i+shift]-MaOn[i+ 1 +shift]< 0 && MaOn[i+ 1 +shift]-MaOn[i+ 2 +shift]> 0 ){BufferDn[i+ 1 ]=high[i+ 1 ]+st* Point ;}
       if (MaOn[i+shift]-MaOn[i+ 1 +shift]> 0 && MaOn[i+ 1 +shift]-MaOn[i+ 2 +shift]< 0 ){BufferUp[i+ 1 ]=low[i+ 1 ]-st* Point ;}
      }
   return (rates_total);
   }
화살표는 BufferDn[i+ 1 ]=... 소급적으로 그려집니다. 이것은 슬픈 일입니다.