MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1490

 
Alexey Viktorov :
새 막대와 함께 기록을 로드할 수 없다는 내용은 어디에 있습니까?

히스토리 로드를 추적해야 한다는 내용은 어디에 있습니까?
로드하는 동안 표시기 계산 을 무시할 수 있습니다. 전체 기록이 없기 때문입니다(막대는 어디에나 나타날 수 있음).
따라서 결론 - 모든 막대를 만든 후에만 새 막대가 있을 수 있습니다.
그렇지 않으면 모든 막대가 "오래된" 것입니다.

 
mr LSV :

도움이되지 않았습니다 :(

코드를 보여줍니다.

 
Taras Slobodyanik :

거기에 코딩 한 것을 볼 필요가 있습니다.

타라스!!! MQL5에 대해 묻는 사람!!! 그리고 MT5에서 왼쪽에서 오른쪽으로 인덱싱하면 1 bar가 아니라 Rates_total-2로 계산됩니다.

 
Taras Slobodyanik :

히스토리 로드를 추적해야 한다는 내용은 어디에 있습니까?
로드하는 동안 완전한 기록이 없기 때문에 표시기 계산 을 무시할 수 있습니다.
따라서 결론 - 모든 막대를 만든 후에만 새 막대가 있을 수 있습니다.
그렇지 않으면 모든 막대가 "오래된" 것입니다.

역사를 어떻게 해야 하는지 알려주세요.
사실은 물론 역사에 대한 무언가를 확인하기 위해 계획되어 있다는 것입니다.
몇 가지 관찰이 있으며 앞으로 화살표 버퍼를 사용하고 싶습니다.

하지만 그건 나중에.

 
Taras Slobodyanik :

코드를 보여줍니다.

 //+------------------------------------------------------------------+
//|                                                    test.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property indicator_chart_window

#property indicator_buffers 2
#property indicator_plots    2

#property indicator_label1    "Signal UP"
#property indicator_type1    DRAW_ARROW
#property indicator_color1    clrLime
#property indicator_style1    STYLE_SOLID
#property indicator_width1    2

#property indicator_label2    "Signal DN"
#property indicator_type2    DRAW_ARROW
#property indicator_color2    clrRed
#property indicator_style2    STYLE_SOLID
#property indicator_width2    2

double up[];
double dn[];

datetime fin= 0 , last= 0 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
     IndicatorSetString ( INDICATOR_SHORTNAME , "Prototype" );
    
   SetIndexBuffer ( 0 ,up, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 233 );
    
   SetIndexBuffer ( 1 ,dn, INDICATOR_DATA );
   PlotIndexSetInteger ( 1 , PLOT_ARROW , 234 );
   
   
  
   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[])
   {
   fin= iTime ( Symbol (), PERIOD_M1 , 0 );
   if (last==fin) return (rates_total);
   last=fin;
   
   if (rates_total - prev_calculated == 1 )
      {
       //Print("Новый бар");
       if (open[ 1 ] > close[ 1 ])
           {
           Print ( "Dn" );
           }
       else if (open[ 1 ] < close[ 1 ])
           {
           Print ( "Up" );
           }
      }

return (rates_total);
}
 
Alexey Viktorov :

타라스!!! MQL5에 대해 묻는 사람!!! 그리고 MT5에서 왼쪽에서 오른쪽으로 인덱싱하면 1 bar가 아니라 Rates_total-2로 계산됩니다.

아니요, prev_calculated 및 Rates_total은 이에 의존하지 않습니다.

 
Taras Slobodyanik :

아니요, prev_calculated 및 Rates_total은 이에 의존하지 않습니다.

prev_calculated와 Rates_total은 왼쪽에 있는 첫 번째 막대의 여는 부분과 닫는 부분을 읽을 것을 제안한다는 사실과 어떤 관련이 있습니까?

 
Alexey Viktorov :

prev_calculated와 Rates_total은 왼쪽에 있는 첫 번째 막대의 여는 부분과 닫는 부분을 읽을 것을 제안한다는 사실과 어떤 관련이 있습니까?

나는 왼쪽 막대의 닫는 것을 읽는 것을 제안하지 않습니다. 이것은 내 코드가 아닙니다)

나만의

 if (rates_total - prev_calculated == 1 )
 
mr LSV :

도움이되지 않았습니다 :(

예, 배열의 방향을 변경하거나 1 대신 Rates_total-2 인덱스를 가져와야 합니다.

{
   
   ArraySetAsSeries (open, true );
   ArraySetAsSeries (high, true );
   ArraySetAsSeries (low, true );
   ArraySetAsSeries (close, true );
   ArraySetAsSeries (time, true );
   
   if (rates_total - prev_calculated > 1 )
      {
       Print ( "Загрузка истории" );
       return ( rates_total );
      }
   
   if (rates_total - prev_calculated == 1 )
      {
       //Print("Новый бар");
       if (open[ 1 ] > close[ 1 ])
           {
           Print ( "Dn" );
           }
       else if (open[ 1 ] < close[ 1 ])
           {
           Print ( "Up" );
           }
      }

return (rates_total);
}


 
Taras Slobodyanik :

나는 왼쪽 막대의 닫는 것을 읽는 것을 제안하지 않습니다. 이것은 내 코드가 아닙니다)

나만의

그렇게 노골적으로 거짓말을 하는 것은 부적절합니다. 당신은 당신의 게시물을 삭제하고 당신의 무지를 다른 사람에게 쏟아 붓고 있습니다. 거짓말 쟁이.