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

 
Artyom Trishkin :

문제 코드.

왜?... 같은 줄의 교차점에서 논리를 두 배로 늘리면 당연히 모든 논리(내가 쓰지 않은)는 사람이 직접 작성해야 합니다. 나는 그의 최종 목표를 모릅니다. 아마도 그는 가격이 각 라인을 통과하면서 몇 번이나 교차하는지 세고 싶어 할 것입니다 ...

나는 사람이 자신의 목적을 위해 그러한 이벤트를 얻을 수 없다는 것을 이해했습니다. 이제 그는 그러한 사건을 받고 그의 재량에 따라 받게 될 것입니다.


첫 번째 교차점에서 선 자체의 이름을 특정 형식으로 바꾸는 것이 논리적일 것입니다(또는 이 그림의 설명에 일종의 레이블을 넣는 것). 그리고 모든 물체를 통과할 때 이 표시가 없는지 선을 확인하십시오.

매 틱마다 모든 객체를 반복하는 것의 비효율성에 대해 이야기하고 있다면 이것은 완전히 다른 주제입니다.

 
Roman :

따라서 수학적 계산에서 H1 이상의 기간에 _Period 변수가 반환 하는 값을 사용하십시오 .
그리고 누가 실수했는지 즉시 이해하게 될 것입니다.

제정신이 아닌 사람은 수학적 계산을 위해 명명된 상수의 값을 사용하지 않을 것입니다. 그렇기 때문에 액세스 대상 또는 데이터를 가져오는 데 사용하는 속성 식별자를 더 쉽게 이해할 수 있도록 상수라는 이름이 붙었습니다. 명명된 상수는 요청된 속성의 식별자 값을 텍스트 설명으로 바꿉니다.

예를 들어 SymbolInfoDouble()에서 데이터를 수신할 때 식별자의 숫자 값을 사용하여 함수에서 수신하려는 값을 나타낼 수 있습니다. 그러나 이를 위해서는 함수에서 대체해야 하는 식별자 값을 기억해야 합니다. 계속해서 도움말을 보거나 MQL에서 각 함수의 각 식별자 값을 암기하지 않도록 하기 위해 명명된 열거 상수가 도입되었습니다. 현재 매도 가격의 값을 얻으려면 현재 기호에 대한 데이터를 요청할 때 식별자 값을 4로 작성해야 합니다. SymbolInfoDouble(NULL,4), 또는 모든 사람에 대해 명확하게 작성해야 합니다. SymbolInfoDouble(NULL,SYMBOL_ASK);

SYMBOL_ASK가 현재 매도 가격이 아닌 4를 반환한다는 사실에 왜 불협화음이 아니라 만족합니까?

그렇다면 차트 기간의 식별자에 자신을 붙인 이유는 무엇입니까? 개발자들은 그것을 필요로 했습니다. 내부적인 이유 때문입니다. PERIOD_H4와 같은 식별자 이름이 있습니다. 이런저런 이유로 개발자가 할당한 정확한 숫자 값은 신경쓰지 않아도 됩니다. 상수에 대한 이름(숫자 값의 텍스트 대체)이 주어졌습니다. 편의를 위해 사용하십시오. 그러나 이 상수의 값을 계산에 사용하는 것은 실례지만 말도 안되는 소리입니다. 이 명명된 상수는 데이터를 가져올 차트를 나타내는 데 사용됩니다. 그러나 차트 기간은 반환하지 않습니다. 그것은 빌어먹을 다른 목적으로 사용됩니다 - 당신의 삶을 더 쉽게 만들기 위해, 함수가 반환해야 할 것을 알려주기 위해.

기간의 분 수가 필요하면 기간의 초 수를 60으로 나눈 값을 구하십시오. 그리고 목발이 아닌 것을 목발이라고 부르지 마십시오. 목발은 여러분이 하고 있는 일입니다. 계산에 숫자 이름을 사용하려고 합니다.

주석...

 
Vadim Lin :

왜?... 같은 줄의 교차점에서 논리를 두 배로 늘리면 당연히 모든 논리(내가 쓰지 않은)는 사람이 직접 작성해야 합니다. 나는 그의 최종 목표를 모릅니다. 아마도 그는 가격이 각 라인을 통과하면서 몇 번이나 교차하는지 세고 싶어 할 것입니다 ...

나는 사람이 자신의 목적을 위해 그러한 이벤트를 얻을 수 없다는 것을 이해했습니다. 이제 그는 그러한 사건을 받고 그의 재량에 따라 받게 될 것입니다.


첫 번째 교차점에서 선 자체의 이름을 특정 형식으로 바꾸는 것이 논리적일 것입니다(또는 이 그림의 설명에 일종의 레이블을 넣는 것). 그리고 모든 객체를 전달할 때 이 레이블이 없는지 라인을 확인하십시오.

매 틱마다 모든 객체를 반복하는 것의 비효율성에 대해 이야기하고 있다면 이것은 완전히 다른 주제입니다.

당신은 곧 여름으로 가라앉을 고대 기능을 사용합니다. 그리고 이 코드는 크로스 플랫폼이 아니지만 어떤 플랫폼에서도 변경 없이 쉽게 작동할 수 있습니다.

예, 그리고 이름을 바꾸는 것은 여전히 재미있습니다. 표시기가 제공하는 줄 이름을 보고 명시적 식별자를 분리하고 필요한 줄을 찾는 데 사용하기만 하면 됩니다.

 
Vadim Lin :

매우 감사합니다! 도움이 된 것은 wchar_ 입니다! 나는 그것에 대해 읽었습니다. char와 달리 문자당 2바이트를 저장합니다.

사실, 함수 매개 변수 "str"은 여전히 할당 된 값을 반환하지 않습니다. 왜 그런지 궁금합니다. ..

아마도 함수에서 반환 값을 반환해야 하기 때문일 것입니다.

 extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* str)
{
   wchar_t wcs[ 256 ];
   wcscpy(wcs, str);

   wchar_t* addStr = L " --- Привет! ---" ;
   
   wchar_t* res = wcsncat(wcs, addStr, wcslen(addStr) + 1 );
   
   return (res);
}
 
Artyom Trishkin :

당신은 곧 여름으로 가라앉을 고대 기능을 사용합니다. 그리고 이 코드는 크로스 플랫폼이 아니지만 어떤 플랫폼에서도 변경 없이 쉽게 작동할 수 있습니다.

예, 이름을 바꾸는 것은 여전히 재미있습니다. 표시기가 제공하는 줄 이름을 보고 명시적 식별자를 분리하고 필요한 줄을 찾는 데 사용하기만 하면 됩니다.

수정해주셔서 감사합니다!

실제로 지난 몇 년 동안 저는 MQL4로 프로그래밍하는 경우가 비교적 드물었고 MQL5로 올라간 적이 거의 없었습니다. 따라서 일부 방법이 구식이라는 것을 완전히 인정합니다(하지만 어쨌든 작동합니다!).

Нужно просто поглядеть какие имена линий выдаёт индикатор, вычленить из них их явный идентификатор

물론, 그러나 당신과 나는 아닙니다 - 우리는 그 라인의 이름의 특성을 모릅니다. 이러한 수준의 "암기"도 옵션이지만 파일의 어딘가에 "암기" 결과를 저장해야 하며 이것이 없으면 터미널이 충돌하면 무슨 일이 일어나고 있는지 완전히 불분명할 것입니다. . 이름을 바꾸면 이 문제가 해결되지만 이것이 최선의 방법은 아닙니다.

제가 틀릴수도 있는데 한 사람이 100줄까지 동시에 쓰는데, 차트에 줄만 있고 다른건 없다고 썼습니다. 내가 알기로 모든 선은 교차로에 대해 모니터링해야 합니다. 따라서 이름에서 무엇을 "분리"할지 모르겠습니다))

 
Artyom Trishkin :


문제는 _Period 변수기간 값 을 반환해야 한다는 것입니다.
그리고 상수는 열거형 상수가 아니라 기간 값과 일치해야 합니다.
그렇지 않으면 이 변경의 의미를 잃게 되며, 이는 특별히 추가 기능에 의한 변환 없이 시간 프레임의 값 을 빠르게 얻을 수 있도록 설계되었습니다.

 
Vadim Lin :

수정해주셔서 감사합니다!

실제로 지난 몇 년 동안 저는 MQL4로 프로그래밍하는 경우가 비교적 드물었고 MQL5로 올라간 적이 거의 없었습니다. 따라서 일부 방법이 구식이라는 것을 완전히 인정합니다(하지만 어쨌든 작동합니다!).

물론, 그러나 당신과 나는 아닙니다 - 우리는 그 라인의 이름의 특성을 모릅니다. 이러한 수준의 "암기"도 옵션이지만 파일의 어딘가에 "암기"의 결과를 저장해야 하며, 그렇지 않으면 터미널이 충돌하면 무슨 일이 일어나고 있는지 완전히 불분명할 것입니다. . 이름을 바꾸면 이 문제가 해결되지만 이것이 최선의 방법은 아닙니다.

제가 틀릴수도 있는데 한 사람이 100줄까지 동시에 쓰는데, 차트에 줄만 있고 다른건 없다고 썼습니다. 내가 알기로 모든 선은 교차로에 대해 모니터링해야 합니다. 따라서 이름에서 무엇을 "분리"할지 모르겠습니다))

터미널이 충돌하면 다시 시작해야 합니다. 지표를 차트에 다시 연결하거나 이 지표의 데이터를 사용하여 Expert Advisor를 시작해야 합니다. 그러면 Expert Advisor는 액세스할 때 이 지표 자체를 로드합니다. 이 경우(그리고 차트에 설치된 프로그램을 자동으로 로드하여 터미널을 정기적으로 다시 시작해도) 표시기가 모든 선을 다시 그립니다. 아무데도 저장할 필요가 없습니다. 그런 다음 이 줄을 다시 읽을 수 있습니다. 특히 읽을 필요가 있기 때문에.

그리고 EA가 표시기에 의해 생성된 행만 모니터링하려면 생성한 행의 이름을 보고 이름에서 중복 부분 문자열을 찾으려고 하면 충분합니다. 모든 행에 대해 동일합니다. 여기이 부분 문자열에서 필요한 줄을 찾으십시오.

간단합니다. 표시기가 실행 중일 때 개체 목록을 보기만 하면 됩니다.

 
Roman :

문제는 _Period 변수기간 값 을 반환해야 한다는 것입니다.
그리고 상수는 열거형 상수가 아니라 기간 값과 일치해야 합니다.
그렇지 않으면 이 변경의 의미를 잃게 되며, 이는 특별히 추가 기능에 의한 변환 없이 시간 프레임의 값 을 빠르게 얻을 수 있도록 설계되었습니다.

당신은 도처에 사람을 섞었습니다, 말... 이 문제 뿐만 아니라. 귀하의 제안에 따라 변경이 이루어지면 지금까지 모든 근로자의 절반이 단순히 죽을 것입니다.

눈금 크기를 포인트 크기와 동일시하는 것만으로도 가치가 있습니다...

 
Roman :

따라서 수학적 계산에서 H1 이상의 기간에 _Period 변수가 반환 하는 값을 사용하십시오 .
그리고 누가 실수했는지 즉시 이해하게 될 것입니다.

나는 거의 모든 고문에서 그것을 사용합니다. 더 이상 재미가 없습니다. 죄송합니다, 이것은 처음 봅니다.
 
Artyom Trishkin :

당신은 도처에 사람을 섞었습니다, 말... 이 문제 뿐만 아니라. 귀하의 제안에 따라 변경이 이루어지면 지금까지 모든 근로자의 절반이 단순히 죽을 것입니다.

눈금 크기를 포인트 크기와 동일시하는 것만으로도 가치가 있습니다...

처음에는 현재의 현실과 많은 불일치가 있기 때문입니다.
그리고 이러한 불일치에 대한 변명을 찾으려고 합니다.
반대로 틱은 포인트와 같지 않다고 썼습니다!
이것은 당신의 내부 발명 포인트입니다.
Point는 4개의 문자만 있을 때 Point 와 정확히 일치하곤 했기 때문입니다.
그러나 다섯 번째 숫자를 입력한 후 변명으로 이름을 발명하기 시작했습니다.