거래 주문을 보내기 전에 주문에 지정된 거래량이 정확한지 확인해야 합니다. 주문에 지정할 랏 수는 주문Send() 함수를 호출하기 전에 확인해야 합니다. 금융 상품의 경우 지정가에는 거래에 허용되는 최소 및 최대 거래량과 거래량 그라데이션이 지정되어 있습니다. MQL5에서는SymbolInfoDouble() 함수를 사용하여 ENUM_SYMBOL_INFO_DOUBLE 열거형에서 이러한 값을 가져올 수 있습니다.
//+------------------------------------------------------------------+//| 주문량이 정확한지 확인합니다 ||//+------------------------------------------------------------------+bool CheckVolumeValue(double volume,string &description)
{
//--- 거래 작업에 허용되는 최소 거래량double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
if(volume<min_volume)
{
description=StringFormat("허용되는 최소 볼륨보다 적은 볼륨 SYMBOL_VOLUME_MIN=%.2f",min_volume);
return(false);
}
//--- 거래 작업에 허용되는 최대 거래량double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
if(volume>max_volume)
{
description=StringFormat("허용된 최대 볼륨보다 큰 볼륨 SYMBOL_VOLUME_MAX=%.2f",max_volume);
return(false);
}
//--- 최소 볼륨 그라데이션 가져오기double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("볼륨이 최소 등급 SYMBOL_VOLUME_STEP=%.2f의 배수가 아니며, 가장 가까운 올바른 볼륨은 %.2f입니다.",
volume_step,ratio*volume_step);
return(false);
}
description="올바른 볼륨 값";
return(true);
}
거래 주문을 보내기 전에 주문에 지정된 거래량이 정확한지 확인해야 합니다. 주문에 지정할 랏 수는 주문Send() 함수를 호출하기 전에 확인해야 합니다. 금융상품의 경우사양은 거래에 허용되는 최소 및 최대 거래량과 거래량 그라데이션을 지정합니다 . 이러한 값은 MQL5에서SymbolInfoDouble() 함수를 사용하여 ENUM_SYMBOL_INFO_DOUBLE 열거형에서 얻을 수 있습니다.
도움이 되지 않았는데 다른 코드를 수정할 수 있나요?
스크립트를 수정하는 방법을 알려주실 수 있나요?
기사를 완전히 읽으십시오. 'CheckVolumeValue'는 입력 매개 변수의 정확성을 확인하는 것입니다.
//+------------------------------------------------------------------+//| 스크립트 프로그램 시작 기능|//+------------------------------------------------------------------+voidOnStart()
{
//---double step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP)/2.0;
double volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN)-step;
double finish=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX)+step;
볼륨 그라데이션에 포함된 소수점 이하 자릿수 찾기 //--- 볼륨 그라데이션에 포함된 소수점 이하 자릿수 찾기int digits=(int)MathLog10(SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP));
if(digits<0) digits=-digits;
else digits=0;
//--- 루프에서 다양한 볼륨 값을 확인합니다.while(volume<finish+4*step)
{
string descr;
if(!CheckVolumeValue(volume,descr))
{
Print("검사 결과",volume,": ",descr);
}
elsePrintFormat("%G 볼륨이 맞습니다.",volume);
volume+=3*step;
volume=NormalizeDouble(volume,digits+1);
}
//---
}
//+------------------------------------------------------------------+//| 주문량이 정확한지 확인합니다 ||//+------------------------------------------------------------------+bool CheckVolumeValue(double volume,string &description)
{
//--- 거래 작업에 허용되는 최소 거래량double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
if(volume<min_volume)
{
description=StringFormat("허용되는 최소 볼륨보다 적은 볼륨 SYMBOL_VOLUME_MIN=%.2f",min_volume);
return(false);
}
//--- 거래 작업에 허용되는 최대 거래량double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
if(volume>max_volume)
{
description=StringFormat("허용된 최대 볼륨보다 큰 볼륨 SYMBOL_VOLUME_MAX=%.2f",max_volume);
return(false);
}
//--- 최소 볼륨 그라데이션 가져오기double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
{
description=StringFormat("볼륨이 최소 등급 SYMBOL_VOLUME_STEP=%.2f의 배수가 아니며, 가장 가까운 올바른 볼륨은 %.2f입니다.",
volume_step,ratio*volume_step);
return(false);
}
description="올바른 볼륨 값";
return(true);
}
//+------------------------------------------------------------------+
Предлагаю свой набор торговых функций в виде готового советника. Представленный способ позволяет получать множество торговых стратегий простым добавлением индикаторов и изменением входных параметров.
내 EA가 새 상품을 등록할 때 오류를 반환합니다:
EURUSD,H1(네팅) 테스트 2020.04.15 15:47:05 실패 #44 매도 0.2 EURUSD sl: 1.08929, tp: 1.08599 -> sl: 1.08919, tp: 1.08599 [주문 또는 포지션이 시장에 근접하여 수정에 실패함]
하지만 내 EA는 외환이 아닌 WIN$에서 실행되도록 되어 있습니다. 테스터가 실행할 자산을 알려주지 않는 이유는 무엇인가요?
EA가 완벽하게 실행되고 있는데 어떻게 오류를 수정할 수 있나요? 제품을 판매용으로 등록할 수 없습니다.
새 제품을 등록할 때 내 EA가 오류를 반환합니다:
EURUSD,H1 (네팅) 테스트 2020.04.15 15:47:05 실패 #44 매도 0.2 EURUSD sl: 1.08929, tp: 1.08599 -> sl: 1.08919, tp: 1.08599 [주문 또는 포지션이 시장에 근접하여 수정에 실패함]
하지만 내 EA는 외환이 아닌 WIN$에서 실행되도록 되어 있습니다. 테스터가 실행할 자산을 알려주지 않는 이유는 무엇인가요?
EA가 완벽하게 실행되고 있는데 어떻게 오류를 수정할 수 있나요? 제품을 판매용으로 등록할 수 없습니다.
로봇은 모든 자산에서 작동할 준비가 되어 있어야 합니다....
위에서 언급한 오류를 수정하려면 포지션을 수정하기 전에 아래 점검을 수행해야 합니다:
아래 문서에서 로봇이 수행해야 하는 다른 점검 사항을 확인하세요:
트레이딩 로봇이 마켓에 게시되기 전에 통과해야 하는 테스트 - MQL5 문서
안녕하세요, 이전 제품 중 하나에서 제품 설명을 편집할 수 없습니다.
설명을 새로 작성하거나 마켓에서 숨기는 등 다양한 포럼의 지침을 따랐지만 설명이 여전히 원래 버전으로 되돌아갑니다.
이제 더 이상 마켓플레이스에서 제품을 복원할 수도 없고 편집할 수도 없습니다. 이 문제와 관련된 포럼에서 도움을 요청했지만 아직까지 아무런 도움을 받지 못했습니다.
"제품 설명을 편집할 수 없습니다." 이 문제를 해결하려면 어떻게 해야 하나요? 도와주세요
Expert Advisor를 로드하고 테스트할 때 오류가 기록되는데 어떻게 수정해야 할지 모르겠습니다.
EURUSD,H1(네팅) 테스트
2020.04.14 00:24:42 1.09044에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.04.14 00:24:45 1.09044에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.04.14 00:24:48 1.09037에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.04.21 00:01:34 1.08626에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.04.21 00:01:37 1.08626에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.04.21 00:01:40 1.08626에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.04.27 16:08:24 1.08546에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.04.27 16:08:27 1.08548에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.04.27 16:08:30 1.08547에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.04.29 20:15:52 1.08565에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.04.29 20:15:55 1.08566에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.04.29 20:15:58 1.08566에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.05.18 00:12:09 1.08134에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.05.18 00:12:12 1.08134에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.05.18 00:12:15 1.08143에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.05.21 15:50:25 1.10031에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.05.21 15:50:28 1.10034에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.05.21 15:50:31 1.10036에 0.01 EURUSD 즉시 매도 실패 [잘못된 거래량]
2020.05.25 19:00:05 1.08950에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.05.25 19:00:08 1.08951에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
2020.05.25 19:00:11 1.08952에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
거래가 없습니다.
Expert Advisor를 로드하고 테스트할 때 오류가 기록되면 이를 수정하는 방법이 명확하지 않습니다.
EURUSD,H1(네팅) 테스트
2020.04.14 00:24:42 1.09044에 0.01 EURUSD 즉시 매수 실패 [잘못된 거래량]
***
읽고 코드에 입력하세요
거래 작업에서 잘못된 거래량
거래 주문을 보내기 전에 주문에 지정된 거래량이 정확한지 확인해야 합니다. 주문에 지정할 랏 수는 주문Send() 함수를 호출하기 전에 확인해야 합니다. 금융 상품의 경우 지정가에는 거래에 허용되는 최소 및 최대 거래량과 거래량 그라데이션이 지정되어 있습니다. MQL5에서는SymbolInfoDouble() 함수를 사용하여 ENUM_SYMBOL_INFO_DOUBLE 열거형에서 이러한 값을 가져올 수 있습니다.
도움이 되지 않았는데 다른 코드를 수정할 수 있나요?
스크립트를 개선하는 방법을 알려주실 수 있나요?
읽고 코드에 입력하세요.
거래 작업에서 잘못된 거래량
거래 주문을 보내기 전에 주문에 지정된 거래량이 정확한지 확인해야 합니다. 주문에 지정할 랏 수는 주문Send() 함수를 호출하기 전에 확인해야 합니다. 금융상품의 경우사양은 거래에 허용되는 최소 및 최대 거래량과 거래량 그라데이션을 지정합니다 . 이러한 값은 MQL5에서SymbolInfoDouble() 함수를 사용하여 ENUM_SYMBOL_INFO_DOUBLE 열거형에서 얻을 수 있습니다.
도움이 되지 않았는데 다른 코드를 수정할 수 있나요?
스크립트를 수정하는 방법을 알려주실 수 있나요?
기사를 완전히 읽으십시오. 'CheckVolumeValue'는 입력 매개 변수의 정확성을 확인하는 것입니다.
그리고 올바른 로트 반올림 검사도 있습니다 ...
오픈 포지션의 거래량과 지정가 주문의 거래량을 고려하면 최종 확인은 다음과 같이 표시됩니다:
add?
체크볼륨값.mq5와 같이 작성됩니다.
추가?
체크볼륨값.mq5와 같이 작성됩니다.
필요한 모든 검사는 EA 생성을 위한 거의 생성자 문서에 있습니다.
앞서 질문한 코드가 적합한가요?
문서에서 필요한 줄을 작성할 수 있습니다.