기고글 토론 "MQL5로 하는 트레이드 오퍼레이션 - 어렵지 않아요!" - 페이지 4

 
Konstantin Efremov:

업데이트: 라시드가 위에 라이브러리 파일을 게시하여 문제를 해결했습니다. 표준 라이브러리에 오류가 있다는 것은 유감입니다. 이제 라이브러리를 교체하지 않고 EA에서 직접 일부 변경을 수행하여 모든 것이 작동하는지 비교를 연구 할 것입니다.

이러한 편집은 이미 표준 라이브러리에 있습니다. 나는 지금 기사를 읽을 사람들에게만 대답하기로 결정했습니다.

 

좋아요, 정말 멋진...

 
<Deleted>
.
 
Andy Obama:
 

모두 좋은 하루 되세요!

저는 MQL5 프로그래밍 언어를 계속 공부하고 있습니다. 저에게 유용한 정보를 찾기 위해 거의 모든 사이트를 검색했습니다. 사이트에있는 대부분의 정보는 이미 프로그래밍에 대한 기본적인 이해가있는 사람들을위한 것입니다.

그리고 여기! 많은 것을 이해하고 EA를 개선하는 데 도움이 된 훌륭한 기사를 하나 더 발견했습니다! 저자가이 일련의 기사를 계속 쓰지 않고 2012 년으로 만 제한 한 것은 유감입니다. 그러나 모두 똑같이, 나는이 사람에게 큰 존경을 표하고 모든 초보자를 대신하여 그에게 감사를 표합니다!

존경심을 담아, 블라디미르.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 
이 주제와 관련이 없는 댓글은 '주제에서 벗어난 게시물'로 이동되었습니다.
 
pdev:

안녕하세요, 매우 유용한 게시물에 감사드리며 이 문제를 해결하도록 도와주세요. 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' 오류로 중지됨


무엇이 잘못되었고 어떻게 해결해야 하나요?

[삭제]  
pdev:

안녕하세요, 매우 유용한 게시물에 감사드리며 이 문제를 해결하도록 도와주세요. 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' 오류로 중지됨


무엇이 잘못되었고 어떻게 해결해야 하나요?

 

모든 곳에서 제한 및 중지 주문을 열 때 기사에서

double price=1000*point;

그 기사를 쓰는 사람들이 기사에서 코드를 삽입하는 데 도움이되었는지 궁금합니다.