초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1434

 
jeremy10p100 # :
안녕하세요, 답변 주셔서 감사합니다. 기대에 부응하는 스크립트를 만들 수 있었지만 불행히도 여전히 이해하거나 수정할 수없는 두 가지 오류가 있습니다. 컴파일 후 오류로 등록되는 두 줄의 코드입니다....

프리랜서 작업을 생성하고 작업을 신청한 개발자 중에서 선택할 수 있습니다.

https://www.mql5.com/fr/job

Applications de trading pour MetaTrader 5 à commander
Applications de trading pour MetaTrader 5 à commander
  • 2023.01.08
  • www.mql5.com
Le plus grand service de freelance avec des développeurs d'applications MQL5
 
#include <JAson.mqh>
CJAVal jv;

jv["type"] = "BTCUSD";
jv["title"] = "test";

int result;
char res_data[],post[];
ArrayResize(post,StringToCharArray(jv.Serialize(),post,0,WHOLE_ARRAY)-1);
string headers="Content-Type: application/json\r\nAccept: text/plain";
result=WebRequest("POST",url,headers,3000,post,res_data,res_headers);

WebRequest를 통해 json을 보내려고 하면 서버에서" \u0022BTCUSD\u0022는 비정규화를 위한 유효한 번들 유형이 아닙니다."라고 반환합니다.

즉, 반전 쉼표 \u0022의 인코딩이 마음에 들지 않습니다.
헤더와
StringToCharArray에 모든 인코딩 변형을 지정해 보았지만 도움이되지 않습니다.

파이썬에서 모든 것이 문제없이 날아갑니다 :
response = requests.post(url, data = json.dumps(data), headers = headers)
즉, 서버에서 모든 것이 정상입니다.

문제를 어떻게 해결하나요?

 

질문을 조금 다르게 바꿔보겠습니다. 특정 조건에서 테스트/최적화 변형을 건너뛰는 명령을 OnInit 블록에서 옵티마이저에 제공할 수 있나요?

input group "Входные настройки Стохастик"
input bool Stoch = false; // Стохастик включен/выключен
input int in_StochK = 14; // период основной линии K
input int in_StochD = 3; // период первичного сглаживания D
input int in_StochSlow = 3; // период окончательного сглаживания

int OnInit() {
if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
   {
   // Некая команда, которая говорит, что такой вариант даже не стоит пробовать оптимизировать  
   }
}

이 작업을 시도했지만 잘못된 최적화 변형이 발생합니다.

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0))) 
   {
   
Print("Такой вариант тестирования не имеет смысла");
   return(INIT_FAILED);
   }

목표는 최적화할 때 4개의 확률 매개변수 (Stoch, in_StochK, int in_StochD, int in_StochSlow)의 변형 열거를 활성화할 수 있도록 하는 것입니다.

  • 스토캐스틱이 활성화된 경우(Stoch = true), 최적화 도구는 in_StochK, in_StochD, in_StochSlow 변수를 열거합니다. 이 부분에서는 모든 것이 올바르게 작동합니다.
  • 스토캐스틱이 꺼져 있으면(Stoch = false), 옵티마이저는 여전히 in_StochK, in_StochD, in_StochSlow에서 변수를 검색합니다. 그리고 Stoch = false인 경우 검색하지 않도록 코드에 일종의 스토퍼를 만들어야 합니다.
 

안녕하세요 타라모톰님.

그냥

return(INIT_FAILED)

return(INIT_PARAMETERS_INCORRECT)
 
Yuriy Bykov #:

안녕하세요, 타라모톰입니다.

다음과 같이 바꾸면 도움이 될 것입니다.

로 바꾸면 도움이 될 것입니다. 작동하지 않습니다. 옵티마이저는 여전히 이 명령으로 잘못 작동합니다.
 

옵티마이저가 제대로 작동하지 않는 이유는 코드의 부정확성 때문일 수 있습니다:

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
 
Yuriy Bykov #:

옵티마이저가 제대로 작동하지 않는 이유는 코드의 부정확성 때문일 수 있습니다:


그 이유는 아닙니다. 저는 작동 로직의 예시를 위해 코드를 만들었습니다. 코드의 정식 버전은 너무 커서 다양한 오실레이터가 있습니다. 최적화할 때 최적화 도구가 다양한 조합(오실레이터 하나 켜기, 오실레이터 둘 켜기, 오실레이터 셋 켜기 등)을 시도하기를 원합니다.

- 이 스토퍼를 사용할 때 최적화 도구는 많은 수의 패스가 있어야 하지만 적은 수의 패스로 작업을 빠르게 완료합니다.

- 이 제한을 사용하지 않으면 최적화 도구는 더 잘 작동하지만 빈 변형이 많이 생성됩니다(위의 예에서는 스토캐스틱이 꺼져 있어도 여전히 매개 변수를 검색합니다). 빈 변형이 많으면 좋겠지만, 이는 최적화를 위한 추가 시간과 유용한 패스가 아닌 빈 패스를 의미합니다.

 
유전적 최적화 또는 전체 최적화를 사용하고 있나요?
저는 이 접근 방식을 사용하여 명백하게 불필요한 매개변수 조합을 제외했으며 최적화 도구의 성능이 잘못되었다는 사실을 발견하지 못했습니다. 오히려 최적화 도구가 예상대로 정확하게 작동했습니다.
누락된 매개변수 조합을 데이터베이스나 공통 파일에 저장하여 실제로 누락된 매개변수의 수와 종류를 확인하고 그 이유를 파악할 수 있습니다.
 

안녕하세요! MA를 기반으로 지표를 작성하고 있습니다 - ExtJawsHandle=iMA(NULL,0,Period,0,Method,AppliedPrice);

아래 그림과 같이 프로그래밍 방식으로 MA 레벨에 도달하려면 어떻게 해야 하나요?

다음과 같은 유형의 구조체

인디케이터셋인티저(인디케이터_레벨,1);

인디케이터셋더블(인디케이터_레벨값,0,10);

는 작동하지 않습니다.


 
Tango_X 인디케이터셋인티저(인디케이터_레벨,1);

인디케이터셋더블(인디케이터_레벨값,0,10);

작동하지 않습니다.


옵션이 없나요?)

사유: