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

 
prom18 :

어쩌면 예가 있습니다. 시각적으로 더 이해하기 쉬울 것입니다. 고맙습니다.

특정 시간 간격으로 막대가 필요하다는 것을 올바르게 이해 하면 iTime을 사용하여 막대 를 선택할 수 있습니다.
 
prom18 :

안녕하세요. 나는 교과서를 읽고 있다. 지표를 작성하는 예가 있습니다. Separatewindow.mq4 표시기에 대해 질문이 있습니다. 계산된 막대의 수를 설정할 수 있습니다. 그리고 당일 시가(또는 0)에서 종가로 계산을 설정해야 하는 경우? 그것을 하는 방법? 솔루션을 검색했지만 찾을 수 없습니다.

여기에 현재 TF에 대한 오늘의 시가를 그렸습니다.

 //+------------------------------------------------------------------+
//|                                                      DayOpen.mq4 |
//|                                            Copyright 2018, IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, IgorM"
#property link        "https://www.mql5.com/ru/users/igorm"
#property version    "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots    1
//--- plot Label1
#property indicator_label1    "Label1"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrRed
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1
//--- indicator buffers
double          Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer);
   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,limit;
   static double dayopen= 0.0 ;
   static int lastday= 0 ;
   if (prev_calculated== 0 )
     {
      limit=rates_total- 1 ;
      dayopen= 0.0 ;
      lastday= 0 ;
     }
   else limit=rates_total-prev_calculated;
   for (i=limit; i>= 0 ; i--)
     {
       if (TimeDay(time[i])!=lastday)
        {
         dayopen=open[i];
         lastday= TimeDay(time[i]);
        }
      Label1Buffer[i]=dayopen;
     }
   return (rates_total);
  }
 

안녕하세요! 조건에 따라 주어진 막대의 오른쪽에 있는 히스토리에서 원하는 막대를 찾을 수 있습니까? 고맙습니다.

 
Sfinks35 :

안녕하세요! 조건에 따라 주어진 막대의 오른쪽에 있는 히스토리에서 원하는 막대를 찾을 수 있습니까? 고맙습니다.

할 수 있다.

 
Artyom Trishkin :

할 수 있다.

하지만 어떻게 해야 할까요? 말해 주세요.
 
Sfinks35 :
하지만 어떻게 해야 할까요? 말해 주세요.

주어진 바를 어떻게 찾습니까?

 
Artyom Trishkin :

주어진 바를 어떻게 찾습니까?


나는 오랫동안 고통을 겪었지만이 기능을 작성했습니다.

더블 GetPatt5barsDN()
{
더블 로우3 = 0;
정수 인덱스 = 0;
for(int i=1; i<20; i++)
{
만약
((닫기[i] > 열기[i]) &&
(닫기[i+1] > 열기[i+1]) &&
(Close[i+2] > Open[i+2]) && //이 양초에는 Low[i+2]가 필요합니다.
(닫기[i+3] < 열기[i+3]) &&
(닫기[i+4] < 열기[i+4]))

low3 = 낮음[i+2];
인덱스 = i+2;
}

반환(low3);
}

 
Igor Makanu :

여기에 현재 TF에 대한 오늘의 시가를 그렸습니다.

이고르 감사합니다. 필요한 것을 올바르게 공식화하지 않았을뿐입니다. 튜토리얼의 표시기는 주어진 수의 막대 (이 경우 50개)와 별도의 창에 대해 계산되고 그려집니다. MA-shku를 그리는 것은 시작 가격이 아니라 하루의 첫 번째 막대에서 필요합니다. 어쨌든 감사합니다.

 
Igor Makanu :

여기에 현재 TF에 대한 오늘의 시가를 그렸습니다.

에 뭐라고 써있는지 알려주실 수 있나요?

int i,limit=prev_calculated==0 ? rate_total-1 : rate_total-prev_calculated;

"==", "?" , ": "

?

 
Sfinks35 :


나는 오랫동안 고통을 겪었지만이 기능을 작성했습니다.

또한 참조로 전달된 함수 매개변수의 인덱스를 반환합니다.