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

 
Seric29 :

배열을 취하고 이동하는 함수를 작성하는 아이디어가 있습니다. 문제는 배열이 2차원 또는 일반 배열일 때마다 인수에 지정하지 않도록 자체적으로 1차원 또는 2차원 배열 유형을 결정하도록 이 함수를 만드는 방법입니다. 동시에 어떤 종류의 배열을 지정하지 않도록 템플릿을 적용하고 싶습니다.

어떤 배열을 지정할 필요가 없도록 만드는 방법은 무엇입니까?

과부하 수행:

 template < typename T>
void MoveArray(T &array1[][]) // 2ух мерный.
{
// тело
}
template < typename T>
void MoveArray(T &array1[]) // одномерный.
{
// тело
}
 
Ilya Prozumentov :

과부하 수행:

두 번째 차원이 동적일 수 있습니까?
 
Alexey Viktorov :
두 번째 차원이 동적일 수 있습니까?

동적이지 않고 그냥 이렇게 작성되었습니다. 허용되는 인수는 대괄호일 뿐입니다.

 

조건의 가능한 변형 열거를 주기로(또는 어떻게든 다르게) 구현하는 방법은 무엇입니까?


예를 들어 MA와 MACD의 2가지 지표가 있습니다. 즉, 3가지 가능한 조건을 나타냅니다.

옵션 1 - if(iMA ...) {...};

옵션 2 - if(iMACD ...) {...};

옵션 3 - if(iMA ... iMACD ...) {...};


입력 매개변수를 결합하는 것은 쉽지만 조건을 결합하는 방법은 무엇입니까? 결국 이것은 2개 이상의 지표나 공식이 있는 경우에 특히 유용합니다.


가능한 경우 예제에 대한 링크를 제공하십시오.

 
Alexandr Sokolov :

조건의 가능한 변형 열거를 주기로(또는 어떻게든 다르게) 구현하는 방법은 무엇입니까?

올바르게 이해했다면 주제 에서 답을 찾을 수 있습니다.

 

안녕하세요, 다시 한 번 저는 명백한 것을 이해하지 못합니다.

그렇다면 함수에 배열을 어떻게 전달합니까?

 double b[ 5 ]={ 1 , 2 , 3 , 4 , 5 };
void OnStart ()
  {
//---
Func(b[]);

  }
//+------------------------------------------------------------------+
void Func( double &a[])
      {
         Alert (a[ 3 ]);
      }

오류:
']' - 표현식이 필요함
'b' - 매개변수 변환이 허용되지 않음

첫 번째 오류를 제거하는 방법을 알고 있다고 가정해 보겠습니다.

Func(b[ 3 ]);

하지만 이 경우에는 무엇, 세 번째 요소만 전달될까요? 무의미하다.
전체 배열을 어떻게 전달할 수 있습니까?
고맙습니다.

 
Mikhail Sobolev :

안녕하세요, 다시 한 번 저는 명백한 것을 이해하지 못합니다.

그렇다면 함수에 배열을 어떻게 전달합니까?

오류:
']' - 표현식이 필요함
'b' - 매개변수 변환이 허용되지 않음

첫 번째 오류를 제거하는 방법을 알고 있다고 가정해 보겠습니다.

하지만 이 경우에는 무엇, 세 번째 요소만 전달될까요? 무의미하다.
전체 배열을 어떻게 전달할 수 있습니까?
고맙습니다.

Func(b);
 
int OnCalculate ( const int rates_total,       // размер массива price[] 
                 const int prev_calculated,   // обработано баров на предыдущем вызове 
                 const int begin,             // откуда начинаются значимые данные 
                 const double & price[]       // массив для расчета 
                );

시작 변수의 역학을 설명하십시오


이 링크에는 https://www.mql5.com/en/docs/basis/function/events 정보가 있는 것 같지만 이해하지 못하거나 찾지 못했습니다. 처음에 기본값이 무엇이며 주기가 표시기를 통과할 때 어떻게 변경되는지 이해할 수 없습니다.


예를 들어 OnCalculate() 함수 내부의 return()이 prev_calculated 변수에 반환 값을 할당하고 다음에 OnCalculate() 함수가 호출될 때, 즉 다음 틱에서 계산에 사용된다는 것을 알고 있습니다.


OnCalculate() 함수 내에서 시작 변수의 메커니즘을 동일한 간단한 단어로 설명하십시오.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 

안녕하세요.

어떤 이유로 OnTick 함수 에서 다음 코드를 사용하여 데이터가 파일에 기록되지 않습니다.

//=== 파일에 데이터 쓰기 ===

h1=FileOpen("test_bar.csv",FILE_CSV|FILE_WRITE|FILE_READ,",");

파일찾기(h1, 0, SEEK_END);

FileWrite(h1, TimeToStr(시간[1],TIME_DATE|TIME_MINUTES),i,Open[1],High[1],Low[1],Close[1], Parabola57Up, " ");

파일닫기(h1);


그리고 그것은 역사적인 테스트와 함께입니다. 어드바이저가 온라인으로 작업 중일 때는 녹음이 진행 중입니다.

감사해요

 
Alexandr Sokolov :

조건의 가능한 변형 열거를 주기에서(또는 어떻게든 다르게) 구현하는 방법은 무엇입니까?


예를 들어 MA와 MACD의 2가지 지표가 있습니다. 즉, 3가지 가능한 조건을 나타냅니다.

옵션 1 - if(iMA ...) {...};

옵션 2 - if(iMACD ...) {...};

옵션 3 - if(iMA ... iMACD ...) {...};


입력 매개변수를 결합하는 것은 쉽지만 조건을 결합하는 방법은 무엇입니까? 결국 이것은 2개 이상의 지표 또는 공식이 있는 경우에 특히 유용합니다.


가능한 경우 예제에 대한 링크를 제공하십시오.

자체 최적화를 수행하고 싶지만 표시기의 입력 매개변수 뿐 아니라 한 주기의 입력 매개변수를 전달하고 최상의 결과를 선택하기 때문에 이해할 수 있습니다.

그리고 조건을 반복하는 방법은 무엇입니까? 예를 들어, 3개의 지표가 있으며(이해하기 쉽도록 주기에서 입력 매개변수 선택을 고려하지 않음), 조건/협업의 7가지 가능한 조합을 나타냅니다.

예를 들어, 처음 세 가지 조건에서 하나의 지표는
1) if(인디케이터 #1 ...) {...};
2) if(인디케이터 #2 ...) {...};
3) if(인디케이터 #3 ...) {...};

두 지표에 대한 두 번째 조건 세 가지에서
4) if(#1 ... && #2 ...) {...};
5) if(#1 ... && #3 ...) {...};
6) if(#2 ... && #3 ...) {...};

그리고 마지막 일곱 번째 조건에서 사용 가능한 세 가지 지표는 모두
7) if(#1 ... && #2 ... && #3 ...) {...};

그리고 가능하다면 논리적 조건을 반복하는 것이 좋을 것입니다. 예를 들어 && ||를 쓰지 마십시오. > < == 등 및 루프

가능한 각 옵션을 수동으로 등록하는 데 시간이 오래 걸리고, Advisor가 입력 매개변수, 표시기의 공동 또는 개별 작동 및 논리적 조건에 대해 가능한 모든 옵션을 독립적으로 결합하고 확인하면 좋을 것입니다.

사유: