저는 MQL5 프로그래밍 언어를 계속 공부하고 있습니다. 저에게 유용한 정보를 찾기 위해 거의 모든 사이트를 검색했습니다. 사이트에있는 대부분의 정보는 이미 프로그래밍에 대한 기본적인 이해가있는 사람들을위한 것입니다.
그리고 여기! 많은 것을 이해하고 EA를 개선하는 데 도움이 된 훌륭한 기사를 하나 더 발견했습니다! 저자가이 일련의 기사를 계속 쓰지 않고 2012 년으로 만 제한 한 것은 유감입니다. 그러나 모두 똑같이, 나는이 사람에게 큰 존경을 표하고 모든 초보자를 대신하여 그에게 큰 감사를 표합니다!
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
업데이트: 라시드가 위에 라이브러리 파일을 게시하여 문제를 해결했습니다. 표준 라이브러리에 오류가 있다는 것은 유감입니다. 이제 라이브러리를 교체하지 않고 EA에서 직접 일부 변경을 수행하여 모든 것이 작동하는지 비교를 연구 할 것입니다.
이러한 편집은 이미 표준 라이브러리에 있습니다. 나는 지금 기사를 읽을 사람들에게만 대답하기로 결정했습니다.
좋아요, 정말 멋진...
모두 좋은 하루 되세요!
저는 MQL5 프로그래밍 언어를 계속 공부하고 있습니다. 저에게 유용한 정보를 찾기 위해 거의 모든 사이트를 검색했습니다. 사이트에있는 대부분의 정보는 이미 프로그래밍에 대한 기본적인 이해가있는 사람들을위한 것입니다.
그리고 여기! 많은 것을 이해하고 EA를 개선하는 데 도움이 된 훌륭한 기사를 하나 더 발견했습니다! 저자가이 일련의 기사를 계속 쓰지 않고 2012 년으로 만 제한 한 것은 유감입니다. 그러나 모두 똑같이, 나는이 사람에게 큰 존경을 표하고 모든 초보자를 대신하여 그에게 큰 감사를 표합니다!
존경심을 담아, 블라디미르.
안녕하세요, 매우 유용한 게시물에 감사드리며 이 문제를 해결하도록 도와주세요. MT5를 처음 사용하며 EA를 만드는 방법을 배우고 있어서 샘플 코드를 복사하여 Ctrade.Buy를 실행했지만 백테스트가 실패했습니다. 자세한 내용은 다음과 같습니다:
1) 계좌: 기본 통화가 NZD인 실거래 계좌
2) 백테스트를 위한 메타에디터 설정:
3) 코드: https://www.mql5.com/ko/articles/481 에서 복사:
//+------------------------------------------------------------------+
//| demo.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include<Trade\Trade.mqh>
//--- object for performing trade operations
CTrade trade;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- set MagicNumber for your orders identification
int MagicNumber=123456;
trade.SetExpertMagicNumber(MagicNumber);
//--- set available slippage in points when buying/selling
int deviation=10;
trade.SetDeviationInPoints(deviation);
//--- order execution mode
trade.SetTypeFilling(ORDER_FILLING_RETURN);
//--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own
trade.LogLevel(1);
//--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()
trade.SetAsyncMode(true);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
BuySample1();
}
//--- Buy sample
//+------------------------------------------------------------------+
//| Buying a specified volume at the current symbol |
//+------------------------------------------------------------------+
void BuySample1()
{
//--- 1. example of buying at the current symbol
if(!trade.Buy(0.1))
{
//--- failure message
Print("Buy() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
}
else
{
Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
//---
}
4) 오류 로그(EUR/USD로만 테스트 중임을 참고하세요):
GJ 0 19:36:44.410 127.0.0.1 로그인 (빌드 1730)
HH 0 19:36:44.420 네트워크 38520바이트의 계정 정보 로드됨
JO 0 19:36:44.420 네트워크 1482바이트의 테스터 매개변수 로드됨
QE 0 19:36:44.420 네트워크 188바이트의 입력 매개변수 로드됨
FR 0 19:36:44.421 네트워크 443바이트의 심볼 목록 로드됨
IF 0 19:36:44.421 테스터 전문가 파일 추가됨: Experts\demo.ex5. 46684 바이트 로드됨
QH 0 19:36:44.433 테스터 초기 예탁금 10000.00 NZD, 레버리지 1:100
JN 0 19:36:44.437 테스터 초기화 성공
ES 0 19:36:44.437 네트워크 총 초기화 데이터 수신 46Kb
PP 0 19:36:44.437 테스터 인텔 코어 i7-4510U @ 2.00GHz, 8103MB
RJ 0 19:36:44.799 심볼 EURUSD: 동기화할 심볼
HR 0 19:36:44.800 기호 EURUSD: 기호 동기화됨, 3624바이트의 기호 정보 수신됨
NJ 0 19:36:44.800 내역 EURUSD: 내역 동기화 시작됨
GO 0 19:36:44.856 내역 EURUSD: 0:00:00.000에 동기화할 27바이트의 내역 데이터를 로드합니다.
RQ 0 19:36:44.856 내역 EURUSD: 2012.01.01부터 2017.11.15까지 동기화된 내역
EF 0 19:36:44.993 히스토리 EURUSD,Daily: 1010 바에 할당된 히스토리 캐시, 2014.01.01 00:00 ~ 2014.12.31 00:00의 312 바 포함
ND 0 19:36:44.993 내역 EURUSD,일간: 2014.01.01 00:00부터 내역 시작
OL 0 19:36:44.996 테스터 EURUSD,일일 (핼리팩스플러스-라이브): 모든 틱 발생
GN 0 19:36:44.996 Tester EURUSD,Daily: 2015.01.01 00:00부터 2017.11.15 00:00까지 Experts\demo.ex5 테스트 시작
CK 0 19:36:56.288 심볼 NZDUSD: 동기화할 심볼
IS 0 19:36:56.288 기호 NZDUSD: 기호 동기화됨, 3624바이트의 기호 정보 수신됨
JL 0 19:36:56.288 내역 NZDUSD: 내역 동기화 시작됨
HJ 0 19:36:56.575 내역 NZDUSD: 0:00:00.078에 동기화할 14Kb의 내역 데이터 로드 중
LS 0 19:36:56.575 내역 NZDUSD: 2013.01.01부터 2017.11.15까지 동기화된 내역
CO 0 19:36:56.579 심볼 EURNZD: 동기화할 심볼
OJ 0 19:36:56.580 심볼 EURNZD: 심볼 동기화됨, 3624바이트의 심볼 정보 수신됨
DL 0 19:36:56.580 히스토리 EURNZD: 히스토리 동기화 시작됨
MK 0 19:36:56.656 히스토리 EURNZD: 0:00:00.000에 동기화할 27바이트의 히스토리 데이터 로드 중
OD 0 19:36:56.656 히스토리 EURNZD: 2013.01.01부터 2017.11.15까지 동기화된 히스토리
IN 0 19:36:56.665 거래 2015.01.02 03:00:00 시장가 매수 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)
PE 0 19:36:56.665 거래 2015.01.02 03:00:00 거래 #2 1.20549에 0.10 EURUSD 매수 완료(주문 #2기준)
FH 0 19:36:56.666 2015.01.02 03:00:00 거래 체결 [#2 매수 0.10 EURUSD at 1.20549] 완료
OG 0 19:36:56.666 거래 2015.01.02 03:00:00 주문 수행 1.20549에 0.10 매수 [#2 매수 0.10 EURUSD at 1.20549]
FO 0 19:36:56.670 데모 (EURUSD,D1) 2015.01.02 03:00:00 매수() 메서드가 성공적으로 실행되었습니다. 반환 코드=10009 (1.20549에서 완료)
NM 2 19:37:15.823 내역 NZDUSD 2016.09.21 23:01:00: 손상된 내역 감지됨 (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)
JF 2 19:37:15.823 내역 NZDUSD 2016.09.21, 불량 컨테이너 발견, 재동기화해야 함
LQ 2 19:37:16.106 정의되지 않은 기능에서 테스터 이력 오류 9 발생
OH 2 19:37:16.106 테스터가 테스트 간격 0%에서 '20 NZDUSD' 오류로 중지됨
무엇이 잘못되었고 어떻게 해결해야 하나요?
안녕하세요, 매우 유용한 게시물에 감사드리며 이 문제를 해결하도록 도와주세요. MT5를 처음 사용하며 EA를 만드는 방법을 배우고 있어서 샘플 코드를 복사하여 Ctrade.Buy를 실행했지만 백테스트가 실패했습니다. 자세한 내용은 다음과 같습니다:
1) 계좌: 기본 통화가 NZD인 실거래 계좌
2) 백테스트를 위한 메타에디터 설정:
3) 코드: https://www.mql5.com/ko/articles/481 에서 복사:
//+------------------------------------------------------------------+
//| demo.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include<Trade\Trade.mqh>
//--- object for performing trade operations
CTrade trade;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- set MagicNumber for your orders identification
int MagicNumber=123456;
trade.SetExpertMagicNumber(MagicNumber);
//--- set available slippage in points when buying/selling
int deviation=10;
trade.SetDeviationInPoints(deviation);
//--- order execution mode
trade.SetTypeFilling(ORDER_FILLING_RETURN);
//--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own
trade.LogLevel(1);
//--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()
trade.SetAsyncMode(true);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
BuySample1();
}
//--- Buy sample
//+------------------------------------------------------------------+
//| Buying a specified volume at the current symbol |
//+------------------------------------------------------------------+
void BuySample1()
{
//--- 1. example of buying at the current symbol
if(!trade.Buy(0.1))
{
//--- failure message
Print("Buy() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
}
else
{
Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
//---
}
4) 오류 로그(EUR/USD로만 테스트 중임을 참고하세요):
GJ 0 19:36:44.410 127.0.0.1 로그인 (빌드 1730)
HH 0 19:36:44.420 네트워크 38520바이트의 계정 정보 로드됨
JO 0 19:36:44.420 네트워크 1482바이트의 테스터 매개변수 로드됨
QE 0 19:36:44.420 네트워크 188바이트의 입력 매개변수 로드됨
FR 0 19:36:44.421 네트워크 443바이트의 심볼 목록 로드됨
IF 0 19:36:44.421 테스터 전문가 파일 추가됨: Experts\demo.ex5. 46684 바이트 로드됨
QH 0 19:36:44.433 테스터 초기 예탁금 10000.00 NZD, 레버리지 1:100
JN 0 19:36:44.437 테스터 초기화 성공
ES 0 19:36:44.437 네트워크 총 초기화 데이터 수신 46Kb
PP 0 19:36:44.437 테스터 인텔 코어 i7-4510U @ 2.00GHz, 8103MB
RJ 0 19:36:44.799 심볼 EURUSD: 동기화할 심볼
HR 0 19:36:44.800 심볼 EURUSD: 심볼 동기화됨, 3624바이트의 심볼 정보 수신됨
NJ 0 19:36:44.800 내역 EURUSD: 내역 동기화 시작됨
GO 0 19:36:44.856 내역 EURUSD: 0:00:00.000에 동기화할 27바이트의 내역 데이터를 로드합니다.
RQ 0 19:36:44.856 내역 EURUSD: 2012.01.01부터 2017.11.15까지 동기화된 내역
EF 0 19:36:44.993 히스토리 EURUSD,Daily: 1010 바에 할당된 히스토리 캐시, 2014.01.01 00:00 ~ 2014.12.31 00:00의 312 바 포함
ND 0 19:36:44.993 내역 EURUSD,일간: 2014.01.01 00:00부터 내역 시작
OL 0 19:36:44.996 테스터 EURUSD,일일 (핼리팩스플러스-라이브): 모든 틱 발생
GN 0 19:36:44.996 Tester EURUSD,Daily: 2015.01.01 00:00부터 2017.11.15 00:00까지 Experts\demo.ex5 테스트 시작
CK 0 19:36:56.288 심볼 NZDUSD: 동기화할 심볼
IS 0 19:36:56.288 기호 NZDUSD: 기호 동기화됨, 3624바이트의 기호 정보 수신됨
JL 0 19:36:56.288 내역 NZDUSD: 내역 동기화 시작됨
HJ 0 19:36:56.575 내역 NZDUSD: 0:00:00.078에 동기화할 14Kb의 내역 데이터 로드 중
LS 0 19:36:56.575 내역 NZDUSD: 2013.01.01부터 2017.11.15까지 동기화된 내역
CO 0 19:36:56.579 심볼 EURNZD: 동기화할 심볼
OJ 0 19:36:56.580 심볼 EURNZD: 심볼 동기화됨, 3624바이트의 심볼 정보 수신됨
DL 0 19:36:56.580 히스토리 EURNZD: 히스토리 동기화 시작됨
MK 0 19:36:56.656 히스토리 EURNZD: 0:00:00.000에 동기화할 27바이트의 히스토리 데이터 로드 중
OD 0 19:36:56.656 히스토리 EURNZD: 2013.01.01부터 2017.11.15까지 동기화된 히스토리
IN 0 19:36:56.665 거래 2015.01.02 03:00:00 시장가 매수 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)
PE 0 19:36:56.665 거래 2015.01.02 03:00:00 거래 #2 1.20549에 0.10 EURUSD 매수 완료(주문 #2기준)
FH 0 19:36:56.666 2015.01.02 03:00:00 거래 체결 [#2 매수 0.10 EURUSD at 1.20549] 완료
OG 0 19:36:56.666 거래 2015.01.02 03:00:00 주문 수행 1.20549에 0.10 매수 [#2 매수 0.10 EURUSD at 1.20549]
FO 0 19:36:56.670 데모 (EURUSD,D1) 2015.01.02 03:00:00 매수() 메서드가 성공적으로 실행되었습니다. 반환 코드=10009 (1.20549에서 완료)
NM 2 19:37:15.823 내역 NZDUSD 2016.09.21 23:01:00: 손상된 내역 감지됨 (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111)
JF 2 19:37:15.823 내역 NZDUSD 2016.09.21, 불량 컨테이너 발견, 재동기화해야 함
LQ 2 19:37:16.106 정의되지 않은 기능에서 테스터 이력 오류 9 발생
OH 2 19:37:16.106 테스터가 테스트 간격 0%에서 '20 NZDUSD' 오류로 중지됨
무엇이 잘못되었고 어떻게 해결해야 하나요?
모든 곳에서 제한 및 중지 주문을 열 때 기사에서
그 기사를 쓰는 사람들이 기사에서 코드를 삽입하는 데 도움이되었는지 궁금합니다.