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

 
torblin :
안녕하세요 여러분 초심자를 위한 글 같지 않습니다
거의 모든
 

친애하는 여러분, 경험 많은 눈으로 "1번 시도"를 바라보시기 바랍니다. 사례의 플롯: MQL5로 작성된 프랙탈 표시기와 azzx_larry-2.0 표시기를 "교차"함으로써 , 그 본질은 소위 배제하는 것입니다. 극한값을 검색할 때 "inside bar", 특정 코드가 수신(첨부)되었습니다. 컴파일할 때 4개의 오류가 발생하고 모두 "4"로 작성된 azzx에서 마이그레이션된 코드 부분에 있습니다. "실수"를 해석할 때 질문이 발생했습니다.

1. for 함수 연산자(코드에서 밑줄 친 부분)를 Global에 배치하는 것을 제안하는 이유는 무엇입니까? ('for' - 표현식은 전역 범위에서 허용되지 않습니다).


2. 컴파일러는 왜 High[bar]와 Low[bar](코드에서 밑줄이 그어짐)가 선언되지 않은 것으로 간주하는 반면, 코드에서 몇 줄 더 높은 곳에는 High[i]와 Low[i]가 있습니다. 오류를 고려하지 마십시오.

('높음' - 선언되지 않은 식별자, '낮음' - 선언되지 않은 식별자).


3. 마찬가지로 제한에 대해 - 컴파일러가 선언되지 않은 것으로 간주하는 이유. ('제한' - 선언되지 않은 식별자).

PS: 저작권: 코드의 일부(프랙탈 표시기)는 mql5 설명서에서 가져오고 azzx_larry2.0 표시기의 코드 일부는 mql4 코드베이스 작성자 azzx에서 가져옵니다.


 //+------------------------------------------------------------------+
//|                                                     azzx 2.0.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots    2
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_color1  White
#property indicator_color2  White
#property indicator_label1   "azzx Up"
#property indicator_label2   "azzx Down"
//---- indicator buffers
double max[];
double min[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//---- indicator buffers mapping
   SetIndexBuffer ( 0 ,max, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,min, INDICATOR_DATA );
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits );
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 108 );
   PlotIndexSetInteger ( 1 , PLOT_ARROW , 108 );
//---- arrow shifts when drawing
   PlotIndexSetInteger ( 0 , PLOT_ARROW_SHIFT , 0 );
   PlotIndexSetInteger ( 1 , PLOT_ARROW_SHIFT , 0 );
//---- sets drawing line empty value--
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
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 &TickVolume[],
                 const long &Volume[],
                 const int &Spread[])
  {
   int i,limit;
//---
   if (rates_total< 3 )
       return ( 0 );
//---
   if (prev_calculated< 3 )
     {
      limit= 1 ;
       //--- clean up arrays
       ArrayInitialize (max, EMPTY_VALUE );
       ArrayInitialize (min, EMPTY_VALUE );
     }
   else limit=rates_total- 1 ;

   for (i=limit;i<rates_total- 1 && ! IsStopped ();i++)
     {
       //---- Up azzx
       if (High[i]>High[i+ 1 ] && High[i]>=High[i- 1 ])
         max[i]=High[i];
       else max[i]= EMPTY_VALUE ;

       //---- Low azzx
       if (Low[i]<Low[i+ 1 ] && Low[i]<=Low[i- 1 ])
         min[i]=Low[i];
       else min[i]= EMPTY_VALUE ;
     }
//--- OnCalculate done. Return new prev_calculated.
   return (rates_total);
  }

//+------------------------------------------------------------------+

   // Поиск краткосрочных экстремумов.
    for (i= limit - 2 ;i> 1 ;i--) 
   {
    l = left_bar(i);
    r = right_bar(i);
    
     if ((l> 0 ) && (r> 0 )) 
      {
       if (((Low[l]>=Low[i]) && (Low[r]>Low[i])) ||
         ((Low[l]>Low[i]) && (Low[r]>Low[i]))) 
      {
        min[i] = 1 ;
      }
    }
 
     if ((l> 0 ) && (r> 0 )) 
      {
       if (((High[l]<= High[i]) && (High[r]<High[i])) ||
         ((High[l]<High[i]) && (High[r]<High[i]))) 
      {
        max[i] = 1 ;
      }
    }

   // Отметка экстремумов.
   ArrayInitialize (buf_st_min, 0 );
   ArrayInitialize (buf_st_max, 0 );

  
   for (i=limit- 1 ;i> 0 ;i--) 
  {
     switch (min[i]) 
    {
       case 1 : buf_st_min[i]=Low[i]; break ;
    }
 
     switch (max[i]) 
    {
       case 1 : buf_st_max[i]=High[i]; break ;
    }
  }
  
   return ( 0 );
}
 
// Проверка, что заданный бар - внутренний.
bool is_internal( int bar) 
{
   return ( (High[bar] < High[bar + 1 ]) && 
         (Low [bar] > Low [bar + 1 ]));
}
 
// Возвращает бар слева от заданного бара или -1.
int left_bar( int bar) 
    {
   int i;
  
   for (i=bar+ 1 ;i<limit- 2 ;i++) 
{
     if (is_internal(i)== false ) 
{
       return (i);
    }
  }
  
   return (- 1 );
}
 
// Возвращает бар справа от заданного бара или -1.
int right_bar( int bar) {
   int i;
  
   for (i=bar- 1 ;i> 0 ;i--) 
{
     if (is_internal(i)== false ) 
{
       return (i);
    }
  }
  
   return (- 1 );
}
//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- почистим график при удалении индикатора
   Comment ( "" );
  }
nymi, 코드 위의 몇 줄에 High[i] 및 Low[i]가 있을 때 오류를 고려하지 않습니다. 3. 마찬가지로 제한에 대해 - 컴파일러가 선언되지 않은 것으로 간주하는 이유
 

Reshetov:
А робот случаем не из Маркета?
только один.  что там продается - ужас. хотя наверное все они такие
 
beginner_mql :

코드에는 오류를 고려하지 않는 High[i] 및 Low[i]가 포함되어 있습니다. 3. 마찬가지로 제한에 대해 - 컴파일러가 선언되지 않은 것으로 간주하는 이유

여기에 조기 닫는 중괄호가 있습니다.

   return (rates_total);
   }

//+------------------------------------------------------------------+

   // Поиск краткосрочных экстремумов.
   for (i=limit- 2 ;i> 1 ;i--) 

또는 선언되지 않았기 때문에 일부 행이 누락되었습니다.

     l = left_bar(i);
     r = right_bar(i);
 
vicmos :

여기에 조기 닫는 중괄호가 있습니다.

또는 선언되지 않았기 때문에 일부 행이 누락되었습니다.

참여해 주셔서 감사합니다. 대괄호가 코드 끝으로 이동되었고 컴파일 시 16개의 오류가 발생했습니다. 작업해야 할 사항이 있습니다.

 
안녕하세요 여러분, G. Stanilevich의 ITrade Chaos 소프트웨어 제품을 사용하는 포럼 사용자에게 말씀해 주십시오. 정말 마음에 드는데 이해가 안되는 부분이 있습니다. 이 제품으로 작업했거나 작업해본 사람에게 어렵지 않다면 Skype를 통해 저에게 연락하십시오. 내 스카이프는 Furkat1962입니다 미리 감사합니다. 안부 인사
 
torblin :
안녕하세요 여러분 초심자를 위한 글 같지 않습니다
어떤 고문도 적합하지 않습니다 !!! . 사기꾼에서 온 사람, FOREX가 공짜가 아니라 노동 투자만으로 다른 사람들과 동일한 작업이라는 것을 어떻게 이해하고 싶지 않습니까?
 
EA의 지표를 차트에 추가했습니다. 이제 이 지표에 색상을 지정하려면 어떻게 해야 합니까? 표시기는 3개의 선을 사용합니다. 3개의 선을 모두 다른 색상과 두께로 만들고 싶습니다.
 
YAndrey :
EA의 지표를 차트에 추가했습니다. 이제 이 지표에 색상을 지정하려면 어떻게 해야 합니까? 표시기는 3개의 선을 사용합니다. 3개의 선을 모두 다른 색상과 두께로 만들고 싶습니다.
모니터에서 펠트 펜을 사용할 수 있습니다.
 
zfs :
모니터에서 펠트 펜을 사용할 수 있습니다.
그래 넌 할수있어. 그러나 나는 원하지 않을 것입니다. 그리고 나는 똑똑한 사람들의 말을 듣고 싶습니다;). 지금까지 각 라인의 색상 형식으로 입력 매개변수를 추가하여 사용자 지정 표시기 를 만드는 방법을 찾았지만 어떻게 더 간단할 수 있습니까? 그래서 다시 질문. 어드바이저에서 iBands 표시기를 만듭니다. 차트에 첨부하겠습니다. 다른 색으로 3개의 선으로 그리고 싶습니다. 아마도?
사유: