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

 
Вадим Мотеюнас :
https://www.mql5.com/ru/docs/basis/operators
 
ArturR :

1. 예, 코드에 0 막대에 대한 사례가 있습니다. 이제 내가 테스트한 사례를 확인할 방법이 없습니다. 오늘 밤에 확인하겠습니다.

2. macd, High, Low는 값이 있고 min(max)price는 해당 값을 얻지 못하는 값을 그래프에 주석으로 표시하여 확인함.

이러한 변수가 선언되는 방식을 살펴보아야 합니다. 이것들이 함수에 들어갈 때마다 0으로 재설정되는 지역 변수 라는 의심이 있습니다. 결과적으로 의미있는 순간은 단순히 볼 시간이 없습니다. 값을 보려면 로그의 내용을 보십시오. 결국 코드에 Print가 있습니다.

 

안녕하세요. 1000줄의 csv 파일에서 N 필드의 매개변수로 일치 항목을 선택하고 찾은 레코드의 다른 필드에서 모든 유형의 값을 반환해야 하는 작업이 있습니다. 파일을 통해 작업하고 거래 결정을 내리는 Expert Advisor가 있는지 알려주실 수 있습니까? 덕분에.

 
mwwm :

안녕하세요. 1000줄의 csv 파일에서 N 필드의 매개변수로 일치 항목을 선택하고 찾은 레코드의 다른 필드에서 모든 유형의 값을 반환해야 하는 작업이 있습니다. 파일을 통해 작업하고 거래 결정을 내리는 Expert Advisor가 있는지 알려주실 수 있습니까? 덕분에.

아마도 코드 베이스에서 뉴스를 다루는 사람들을 찾아야 할 것입니다.

 
Ihor Herasko :

당신은 단순히 그것을 볼 수 없습니다. 값을 보려면 로그의 내용을 보십시오. 결국 코드에 Print가 있습니다.

그래서 그렇습니다. 감사합니다) 잡지에서 다른 껍질 사이에서이 항목을 눈치 채지 못했습니다. 답변주신 모든 분들께 다시한번 감사드리며 계속 정리하겠습니다)

 
값이 다음 논리에 해당하도록 계산해야 하는 막대 인덱스: 현재 차트 기간 이 M15이고 함수(MTF) = H1인 호출된 표시기의 기간인 경우 막대 인덱스는 5입니다. 즉, 막대 H1을 닫을 때 현재 차트 기간이 M30이고 함수(MTF)가 있는 호출된 표시기의 기간이 H1이면 막대 인덱스는 3이고 현재 차트 기간이 M5이고 함수(MTF) = M15로 표시기를 호출하면 막대 인덱스는 4입니다.
 
lil_lil :
값이 다음 논리에 해당하도록 계산해야 하는 막대 인덱스: 현재 차트 기간 이 M15이고 함수(MTF) = H1인 호출된 표시기의 기간인 경우 막대 인덱스는 5입니다. 즉, 막대 H1을 닫을 때 현재 차트 기간이 M30이고 함수(MTF)가 있는 호출된 표시기의 기간이 H1이면 막대 인덱스는 3이고 현재 차트 기간이 M5이고 함수(MTF) = M15로 표시기를 호출하면 막대 인덱스는 4입니다.

논리 자체에 오류가 있습니다. 현재 TF는 M15가 될 수 있고 형성된 H1 막대에 해당하는 마지막 막대 M15는 1이 될 것입니다. 그리고 아마도 2, 3, 4일 수 있지만 더 이상은 아닙니다. 예를 들어, 지금 시간은 10:06입니다. 현재 M15 및 H1 막대의 인덱스는 0이고 두 TF의 이전 막대는 1이며 닫힌 H1에 해당하는 마지막 M15 막대도 1입니다. 10:15에 상황이 변경됩니다. 형성된 마지막 M15 막대 H1의 인덱스는 10:30 - 3, 10:45 - 4에서 2입니다.

여기서 수학적 계산은별로 도움이되지 않습니다. 차트에서 해당 막대를 찾아야 합니다. 알고리즘은 다음과 같습니다.

  1. 제로 바 H1의 개방 시간을 결정하십시오. (아이타임)
  2. 제로 바 H1의 개방 시간에 해당하는 현재 TF의 첫 번째 바 인덱스를 결정합니다. (아이바시프트)
  3. 찾은 막대 인덱스에 1을 추가합니다.

 
Ihor Herasko :

논리 자체에 오류가 있습니다. 현재 TF는 M15가 될 수 있고 형성된 H1 막대에 해당하는 마지막 막대 M15는 1이 될 것입니다. 그리고 아마도 2, 3, 4일 수 있지만 더 이상은 아닙니다. 예를 들어, 지금 시간은 10:06입니다. 현재 M15 및 H1 막대의 인덱스는 0이고 두 TF의 이전 막대는 1이며 닫힌 H1에 해당하는 마지막 M15 막대도 1입니다. 10:15에 상황이 변경됩니다. 형성된 마지막 M15 막대 H1의 인덱스는 10:30 - 3, 10:45 - 4에서 2입니다.

여기서 수학적 계산은별로 도움이되지 않습니다. 차트에서 해당 막대를 찾아야 합니다. 알고리즘은 다음과 같습니다.

  1. 제로 바 H1의 개방 시간을 결정하십시오. (아이타임)
  2. 제로 바 H1의 개방 시간에 해당하는 현재 TF의 첫 번째 바 인덱스를 결정합니다. (아이바시프트)
  3. 찾은 막대 인덱스에 1을 추가합니다.

아마도 모든 것을 말하지는 않았을 것입니다. 표시기는 현재 시간 프레임 M15의 모든 4개 막대에 대해 각각 조건부로 H1인 더 높은 시간 프레임의 0 막대를 그립니다. 따라서 H1이 끝날 때 신호가 남아 있는지 여부를 확인하려면 특히 TF M15의 인덱스 5가 필요합니다. 확실히 이전 기간과 현재 기간의 각 조합에 대해 많은 조건을 작성하지 않도록 이 지수를 계산하는 것이 가능합니다.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if (TimeFrame == PERIOD_H1&&Period()==M15 ) timef = 5 ;//timef = 4;

   if (TimeFrame == PERIOD_H1&&Period()==M30) timef = 3 ;//timef = 2;


Ajk= NormalizeDouble ( iCustom ( NULL , 0 , "Ajk" ,TimeFrame, 4 ,i+timef), Digits );
 
lil_lil :

아마도 모든 것을 말하지는 않았을 것입니다. 표시기는 현재 시간 프레임 M15의 모든 4개 막대에 대해 각각 조건부로 H1인 더 높은 시간 프레임의 0 막대를 그립니다.

현재 TF(1, 2 또는 3)의 막대 수가 더 적을 수 있다는 점에 대해 이야기하고 있습니다. 즉, 판독값이 항상 4개 막대에 표시되는 것은 아닙니다. 한 경우에 4개의 막대에 표시됩니다. 이것은 0 막대 H1에 해당하는 현재 TF의 마지막 막대입니다. 문제에 대한 이러한 설명의 경우 0 막대 H1에 해당하는 현재 TF의 첫 번째 막대를 찾기만 하면 됩니다.

 int nCurTFBarIndex = iBarShift ( NULL , 0 , iTime ( NULL , PEPRIOD_H1, 0 ));

그런 다음 판독값은 현재 TF의 0 막대부터 nCurTFBarIndex까지 표시됩니다.

따라서 H1이 끝날 때 신호가 남아 있는지 여부를 확인하려면 특히 TF M15의 인덱스 5가 필요합니다. 확실히 이전 기간과 현재 기간의 각 조합에 대해 많은 조건을 작성하지 않도록 이 지수를 계산하는 것이 가능합니다.

현재 신호, H1 또는 혼합 버전 중 어느 TF에서 신호를 가져옵니까? H1만 있으면 마지막으로 형성된 막대의 인덱스가 항상 1이기 때문에 아무 것도 찾을 필요가 없습니다.

 
Ihor Herasko :

현재 신호, H1 또는 혼합 버전 중 어느 TF에서 신호를 가져옵니까? H1만 있으면 마지막으로 형성된 막대의 인덱스가 항상 1이기 때문에 아무 것도 찾을 필요가 없습니다.

MTF 표시기, 외부 설정에서 H1을 설정하고 M15를 해도에 첨부합니다. 신호가 4개의 막대 동안 깜박입니다. 막대 H1이 닫힐 때 신호가 깜박이지 않습니다. M15에서 신호가 수신된 막대 4에서 깜박임이 멈춥니다. M1에 놓으면 그에 따라 60바에서 깜박임을 멈추게 되므로 설정에서 선택한 기간과 인디케이터가 부착된 기간의 차트에 따라 N이 변하도록 인덱스 i + N을 계산해야 합니다.

 input ENUM_TIMEFRAMES    TimeFrame= PERIOD_H1 ;
//  
 if (TimeFrame == PERIOD_H1 && Period ()==M15) N = 5 ; // ВОЗМОЖНО НУЖНО N = 4;

   if (TimeFrame == PERIOD_H1 && Period ()==M1) N = 61 ; //А ЗДЕСЬ ВОЗМОЖНО N = 60;