초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 467

 
솔직히 말해서 보통 검색과 정렬 없이 터미널에서 라이브러리를 어떻게 사용하는지 전혀 이해가 안 가는데... 그냥 멍청하게 수백 줄을 스크롤 하는 건가!!!
 
Alena000 :
솔직히 말해서 보통 검색과 정렬 없이 터미널에서 라이브러리를 어떻게 사용하는지 전혀 이해가 안 가는데... 그냥 멍청하게 수백 줄을 스크롤 하는 건가!!!

검색은 MetaEditor(오른쪽 상단)에 내장되어 있습니다. 다음을 통해 항목을 검색할 수 있습니다.

  • 문서 열기
  • 모든 파일에 대해
  • MQL4/MQL5.community
검색은 터미널 자체에 내장되어 있습니다(오른쪽 상단). 터미널에서의 검색은 전체 MQL5.community(기사, 제품, 라이브러리, 신호, 포럼, 블로그, 문서)를 통해 이루어집니다.

 
아무도 문제에 대해 어떤 생각이 있습니까? ))
 
Maxim Dobrovolskii :
아무도 문제에 대해 어떤 생각이 있습니까? ))

아마도 도움이 될 것입니다

파일:
Fractal.mq4  4 kb
 
Victor Nikolaev :

아마도 도움이 될 것입니다

감사합니다. 그러나 내 옵션이 작동하지 않는 이유를 이해하고 알고 싶습니다. 별도의 지표가 표시되는 방식입니다. 그리고 문제는 고문 + 지표의 조합에있는 것 같습니다. 그러나 문제가 정확히 무엇인지는 분명하지 않습니다.
 
Maxim Dobrovolskii :
감사합니다. 그러나 내 옵션이 작동하지 않는 이유를 이해하고 알고 싶습니다. 별도의 지표가 표시되는 방식입니다. 그리고 문제는 고문 + 지표의 조합에있는 것 같습니다. 그러나 문제가 정확히 무엇인지는 분명하지 않습니다.
아니면 사실 OnTick()에서는 0 버퍼만 읽고 OnDeinit()에서는 0과 첫 번째 버퍼를 모두 읽습니까?
 
Maxim Dobrovolskii :
감사합니다. 그러나 내 옵션이 작동하지 않는 이유를 이해하고 알고 싶습니다. 별도의 지표가 표시되는 방식입니다. 그리고 문제는 고문 + 지표의 조합에있는 것 같습니다. 그러나 문제가 정확히 무엇인지는 분명하지 않습니다.

특별한 문제가 없음을 증명하고 싶습니다.

표시기 코드만 필요합니다. 나는 복사하는 것을 좋아하지 않는다.

어쩌면 나는 당신의 지표에서 무언가를 바꿀 것입니다 (그리고 나는 무엇을 알고 있습니다).

 
Alexey Viktorov :
아니면 사실 OnTick()에서는 0 버퍼만 읽고 OnDeinit()에서는 0과 첫 번째 버퍼를 모두 읽습니까?
하나의 버퍼에 값 이 있음을 보여주기 위해 Deinit를 가져왔습니다. 위의 스크린샷과 로그.
 
Victor Nikolaev :

특별한 문제가 없음을 증명하고 싶습니다.

표시기 코드만 필요합니다. 나는 복사하는 것을 좋아하지 않는다.

아마도 나는 당신의 지표에서 무언가를 바꿀 것입니다 (그리고 나는 무엇을 알고 있습니다).

 //+------------------------------------------------------------------+
//|                                               modify_Fractal.mq4 |
//|          MoneyRobotics Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MoneyRobotics Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_label1   "Up"
#property indicator_label2   "Down"
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_style1   STYLE_SOLID
#property indicator_style2   STYLE_SOLID
#property indicator_width1   1
#property indicator_width2   1
#property indicator_color1 Red
#property indicator_color2 Blue


//--- indicator buffers

double ExtUpFractalsBuffer[];
double ExtDownFractalsBuffer[];

//+-----------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---- indicator buffers mapping  
     SetIndexBuffer ( 0 ,ExtUpFractalsBuffer);
     SetIndexBuffer ( 1 ,ExtDownFractalsBuffer);  
//---- drawing settings
    SetIndexStyle( 0 , DRAW_ARROW );
    SetIndexArrow( 0 , 217 );
    SetIndexStyle( 1 , DRAW_ARROW );
    SetIndexArrow( 1 , 218 );
//----
    SetIndexEmptyValue( 0 , 0.0 );
    SetIndexEmptyValue( 1 , 0.0 );
//---- name for DataWindow
    SetIndexLabel( 0 , "Modify_Fractal Up" );
    SetIndexLabel( 1 , "Modify_Fractal Down" );
//---- initialization done  
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   int     i, nCountedBars;
   double dCurrent;
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted    
   
   if (nCountedBars<= 8 ) i= Bars -nCountedBars- 4 ;
   if (nCountedBars> 8 )
     {
      nCountedBars--;
      i= Bars -nCountedBars- 4 ;
     }
//----Up and Down Fractals
   while ( i >= 4 )
     {
       //----Fractals up bFound=false;
      dCurrent=High[i];
       if (dCurrent>High[i+ 1 ] && dCurrent>High[i+ 2 ] && dCurrent>High[i+ 3 ] &&
         dCurrent>High[i- 1 ] && dCurrent>High[i- 2 ] && dCurrent>High[i- 3 ] && 
         dCurrent>High[i- 4 ] )
        {
         ExtUpFractalsBuffer[i]= NormalizeDouble (dCurrent + 1 * Point , Digits );
        }
                           
       //----Fractals down
      dCurrent=Low[i];
       if (dCurrent<Low[i+ 1 ] && dCurrent<Low[i+ 2 ] && dCurrent<Low[i+ 3 ] && 
         dCurrent<Low[i- 1 ] && dCurrent<Low[i- 2 ] && dCurrent<Low[i- 3 ] && 
         dCurrent<Low[i- 4 ])
        {
         ExtDownFractalsBuffer[i]= NormalizeDouble (dCurrent - 1 * Point , Digits );
        }
      i--;
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+


표시기 코드.
 
Maxim Dobrovolskii :
하나의 버퍼에 값 이 있음을 보여주기 위해 Deinit를 가져왔습니다. 위의 스크린샷과 로그.

0과 첫 번째 버퍼 모두에 값이 있습니다. 현재 М15에는 5m 및 21m 막대에 프랙탈이 있습니다. 이 스크립트

 /********************Script program start function*******************/
void OnStart ()
{
Print ( "******************" , iCustom ( _Symbol , PERIOD_CURRENT , "modify_Fractal" , 1 , 5 ));
Print ( "******************" , iCustom ( _Symbol , PERIOD_CURRENT , "modify_Fractal" , 0 , 21 ));
} /*******************************************************************/

모든 것이 잘 작동하고 인쇄됩니다. 따라서 어드바이저는 iCustom()이 스크립트와 어드바이저 모두에서 동일한 방식으로 작동한다는 것을 알게 됩니다.

사유: