기고글 토론 "Trading Model 기반 Multi-Expert Advisor 양성" - 페이지 4

 

기사와 코드를 제공해 주신 저자에게 정말 감사드립니다. 오늘은 모델 클래스를 위한 간단한 전문가 어드바이저의 코드를 다시 디자인했습니다. 약간의 노력 끝에 서로 다른 쌍과 시간대에 대한 병렬 작업을 달성 할 수있었습니다.

코드에서 수정해야 했던 유일한 사항은 매개변수로 전달된 기호로만 볼륨을 계산하도록 GetMyPosition() 함수를 약간 현대화하는 것이었습니다. 그렇지 않으면 두 개 이상의 쌍으로 구성된 번들에서 작업하는 모델이 GetMyPosition()을 호출할 때 각 쌍에 필요한 개별 볼륨 대신 여러 쌍의 총 볼륨을 가져옵니다. 또한 주문 기호를 가져오는 메서드를 CTableOrders 클래스에 추가했습니다.

string            OrderSymbol(){return(m_symbol);}


다시 한번 감사드립니다!

 

제 작품을 인정해 주셔서 감사합니다! 제가 고려하고 있는 문제들이 관련성이 있고 필요하다는 것을 깨닫게 되어 기쁩니다. 문맹인 비평가들과 논쟁을 벌이지 말자. 그들은 항상 거기에있을 것이며 명백한 일에도 설득되지 않을 것입니다.

H.Y. 그에 따라 double GetMyPosition() 메서드를 오버로드하는 것이 좋습니다: double GetMyPosition(문자열 Symbol). 더 많은 유연성과 다양성을 제공합니다.

의심 할 여지없이 코드는 한 번에 가능한 모든 응용 분야를 고려할 수 없기 때문에 시간이 지남에 따라 개선되고 변경 될 것입니다.

다시 한 번 감사드리며 2011년 새해 복 많이 받으세요! 행복과 행운을 기원합니다!

 
Огромное спасибо автору за статью, обязательно возьму себе на вооружение.
 

제 생각에는 이것이 지금까지 가장 좋은 방법이라고 생각합니다. 이 코드를 어떻게 디버깅할 수 있는지 정말 놀랍습니다.

Vasily - 테스터에서 디버거 없이 이 코드를 어떻게 디버깅했나요? 신호가 다르고 조건이 다르기 때문에 테스터에서 디버거 없이 작업하는 것은 매우 어렵습니다.

디버깅 경험을 공유해 주세요.

 

안녕하세요. 이 훌륭한 튜토리얼에 대한 존경심을 표합니다.

이 코드를 디버깅하고 Model.mqh의 355 줄에서 오류를 찾았습니다.

switch(op_type)
 {
 case ORDER_TYPE_BUY:
 case ORDER_TYPE_SELL:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;

아래에 ORDER_TYPE_BUY : 기능이 없습니다.맞습니까? 구매에 의한 기능이 없습니까?
코드를 변경했습니다 :

switch(op_type)
 {
 case ORDER_TYPE_BUY:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;
 case ORDER_TYPE_SELL:
 rez=m_trade.PositionOpen(m_symbol,op_type,lot_send,price,0.0,0.0,comment);
 break;


그러나 Jornual에서 볼 수 있듯이 그는 매수 포지션이 아니라 매도 포지션 만 있습니다.


EA_모델클래스



오류를 찾을 수 없습니다.도움이 필요합니다.


MfG 크리스찬

파일:
logfile.txt  100 kb
 
최신 터미널 업데이트 후 모델이 작동을 멈췄습니다. 무슨 일이 있었는지 설명해 주시겠어요?
 
YYURIYY:
최신 터미널 업데이트 후 모델이 작동을 멈췄습니다. 무슨 일이 있었는지 설명해 주시겠어요?


저도 마찬가지입니다. 일주일 동안 코드를 쉼표별로 구문 분석했습니다. 전략은 매도 주문을하지만 GetNumberOrders () 함수는 매도 주문 = 0 만 반환하지만 매수 주문 = 1을 반환합니다.

이 코드의 개발자인 Vasily에게 도움을 요청하고 싶습니다. 아직 그 이유를 알 수 없습니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

이 기사에 대한 칭찬!!

더 많은 사람들이 이 아이디어에 대해 생각하게 되어 기쁩니다. 예전에 MQL4에서 다중 통화 다중 전략 EA 템플릿을 개발하려고 시도한 적이 있습니다.

MQL5가 나왔기 때문에 그러한 EA의 객체 모델을 설계하고 구현을 시작하려고했습니다.

불행히도 이러한 활동을위한 자유 시간이 없습니다... :-(

이 프로젝트를 계속 진행해주세요... 이것이 제가 생각하는 방식입니다... 많은 전략을 쉽게 구현할 수 있고 수동 또는 자동으로 모든 전략을 켜고 끌 수있는 프레임 워크를 갖추는 것입니다. 그래서 우리는 EA 포트폴리오를 가질 수 있고 필요한 경우 일부 EA를 추가하거나 제거 할 수도 있습니다.

감사합니다!!

추신 : 관심이 있으시면 여기에 링크가 있습니다.

https:// www.mql5.com/en/forum/118148

Cooperation on interesting projects: TRENDLINE AUTOTRADER and UNIVERSAL MULTICURRENCY MULTISTRATEGY TRADER TEMPLATE - MQL4 forum
  • www.mql5.com
Cooperation on interesting projects: TRENDLINE AUTOTRADER and UNIVERSAL MULTICURRENCY MULTISTRATEGY TRADER TEMPLATE - MQL4 forum
 
YYURIYY:
최신 터미널 업데이트 후 모델이 작동을 멈췄습니다. 무슨 일이 있었는지 설명해 주시겠어요?

알아낸 것 같아요. 코드에서 변경해야 하는 것은 :

#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"

#include <Trade\_OrderInfo.mqh>
#include <Trade\_HistoryOrderInfo.mqh>
#include <Arrays\List.mqh>
class CTableOrders : CObject
{
private:
   ulong             m_magic;       // 주문을 발행한 전문가의 매직
   ulong             m_ticket;      // 메인 주문의 티켓
   ulong             m_ticket_sl;    // 주 주문을 기준으로 체결된 거래의 환매 주문 티켓(손절가)
   ulong             m_ticket_tp;    // 메인 주문을 기준으로 체결된 거래의 환매 주문 티켓(이익실현)
   ENUM_ORDER_TYPE   m_type;         // 기본 주문 유형
   datetime          m_time_setup;  // 주문 설정 시간
   double            m_price;       // 주문 가격
   double            m_sl;          // 추천 손절매 가격
   double            m_tp;          // 예상 이익 실현 가격
   double            m_volume_initial;      // 주문량
public:
                     CTableOrders();
   bool              Add(COrderInfo &order_info, double stop_loss, double take_profit);
   bool              Add(CHistoryOrderInfo &history_order_info, double stop_loss, double take_profit);
   double            StopLoss(void){return(m_sl);}
   double            TakeProfit(void){return(m_tp);}
   ulong             Magic(){return(m_magic);}
   ulong             Ticket(){return(m_ticket);}
   int               Type() const;
   datetime          TimeSetup(){return(m_time_setup);}
   double            Price(){return(m_price);}
   double            VolumeInitial(){return(m_volume_initial);}
};

CTableOrders::CTableOrders(void)
{
   m_magic=0;
   m_ticket=0;
   m_type=0;
   m_time_setup=0;
   m_price=0.0;
   m_volume_initial=0.0;
}

bool CTableOrders::Add(CHistoryOrderInfo &history_order_info, double stop_loss, double take_profit)
{
   if(HistoryOrderSelect(history_order_info.Ticket())){
      m_magic=history_order_info.Magic();
      m_ticket=history_order_info.Ticket();
       m_type=history_order_info.OrderType();
      m_time_setup=history_order_info.TimeSetup();
      m_volume_initial=history_order_info.VolumeInitial();
      m_price=history_order_info.PriceOpen();
      m_sl=stop_loss;
      m_tp=take_profit;
      return(true);
   }
   else return(false);
}

bool CTableOrders::Add(COrderInfo &order_info, double stop_loss, double take_profit)
{
   if(OrderSelect(order_info.Ticket())){
      m_magic=order_info.Magic();
      m_ticket=order_info.Ticket();
      m_type=order_info.OrderType();
      m_time_setup=order_info.TimeSetup();
      m_volume_initial=order_info.VolumeInitial();
      m_price=order_info.PriceOpen();
      m_sl=stop_loss;
      m_tp=take_profit;
      return(true);
   }
   else return(false);
}

int   CTableOrders::Type() const
{
   return((ENUM_ORDER_TYPE)m_type);
}
 

이 글의 범위는 방대하고 매우 잘 짜여져 있습니다.

이 프레임워크를 구축하는 데 얼마나 많은 노력을 기울였는지 말로 다 표현할 수 없으며, 접근 방식의 논리를 이해할 수 있는 수준으로 설명해 주셨습니다(적어도 저에게는요!). 이 기사는 개념보다 훨씬 더 나아갑니다. 이것은 실용적이고 적절하며 가장 중요한 것은 거래 및 OO 프로그래밍 기술의 신중한 적용이라는 데 동의합니다!

요청 - 영어 파일에 있는 댓글을 번역할 수 있나요? 또한 러시아어로 더 작업 할 수있는 도구를 안내해 주시겠습니까? 메타에디터의 주석은 러시아어로 표시되지 않고 이 예제와 크게 다르지 않은 왜곡된 악센트 문자로 표시됩니다:

 // Èíèöèàëèçèóðóåì óêàçàòåëü ìîäåëüþ MACD

한동안 크롬+구글 번역을 사용하여 러시아어 사이트를 보았지만, 긴 문서(특히 이 문서)에서는 제한된 길이의 문서만 번역할 수 있었습니다. 이 기사를 자세히 읽고 싶었지만 시간이 좀 걸렸고, 적어도 저에게는 견디기 힘든 시간이었습니다! 외국어에 더 친숙해지기 위한 조언을 주시면 적극 수용하겠습니다!

걸작입니다, 소콜로프 씨. 여러분의 노고에 칭찬과 감사를 드리며, 트레이딩 시스템에 대한 저의 비전이 실현되기를 기대합니다. 제가 궁극적으로 거래하고자 하는 시스템의 요구 사항을 처리할 수 있는 시스템을 설계하는 동안 겪었던 많은 갈등을 해결해 주셨습니다. 아직 해결되지 않은 나머지 문제들에 대해서도 이 프레임워크는 설계상 올바른 방향으로 제 노력을 이끌고 있습니다.