시스템트레이딩 게시글

코인 플립: 메타트레이더 5를 위한 자동 거래 시스템

첨부파일
20836.zip (8.36 KB, 다운로드 2회)

아이디어 제공자: Vladimir Gribachev.

MQL5 코드 제공자: Vladimir Karputov.

이 EA는 커스텀 지표 없이 포지션을 임의로 열며, 현재 통계를 두 가지 언어로 표시할 수 있습니다:

코인 플립 거래 정보

트레일링은 열려 있는 포지션의 스탑로스를 수정합니다. 손실이 발생할 경우, 마틴게일 방식으로 로트를 증가시킵니다. 손실을 모니터링하는 방법은 OnTradeTransaction에서 거래 이유가 DEAL_REASON_SL일 때입니다:

//+------------------------------------------------------------------+
//| 거래 트랜잭션 함수                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- 거래 유형을 열거형 값으로 가져오기 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- 거래가 이력에 추가된 거래의 결과인지 확인
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_ticket       =0;
      long     deal_order        =0;
      long     deal_time         =0;
      long     deal_time_msc     =0;
      long     deal_type         =-1;
      long     deal_entry        =-1;
      long     deal_magic        =0;
      long     deal_reason       =-1;
      long     deal_position_id  =0;
      double   deal_volume       =0.0;
      double   deal_price        =0.0;
      double   deal_commission   =0.0;
      double   deal_swap         =0.0;
      double   deal_profit       =0.0;
      string   deal_symbol       ="";
      string   deal_comment      ="";
      string   deal_external_id  ="";
      if(HistoryDealSelect(trans.deal))
        {
         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);
         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);

         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);

         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);
         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            PrevBars=0;
            if(deal_reason==DEAL_REASON_SL && deal_commission+deal_swap+deal_profit<0.0)
               last_lots_sl=deal_volume;
            else
               last_lots_sl=0.0;
           }
     }
  }


입력 매개변수

  • 스탑 로스 - 손절매 설정;
  • 테이크 프로핏 - 이익 실현 설정;
  • 트레일링 스탑 - 트레일링 스탑;
  • 트레일링 스텝 - 트레일링 스탭;
  • 로트 - 수동으로 설정하는 로트 크기 (로트가 0보다 크면 리스크는 0이어야 함);
  • 리스크 - 자동으로 계산되는 로트 크기 (리스크가 0보다 크면 로트는 0이어야 함);
  • 마틴게일 - 이전 포지션이 스탑 로스에 의해 종료되고 손실이 발생했을 경우 로트 증가 비율;
  • 최대 로트 - 최대 포지션 크기; 이 크기를 초과하면 EA가 비정상적으로 종료됨;
  • 매직 넘버 - EA의 고유 식별자.

이후 테스트가 중단되었습니다 (차트에서 EA가 강제로 언로드됨), 참조 로트가 최대 로트 매개변수를 초과했기 때문입니다:

코인 플립

연관 포스트

댓글 (0)