9评论

3收藏

MQL5源码共享-抛硬币 - MetaTrader 5EA-包含马丁格尔

avatar 天泽666 | 1791 人阅读 | 9 人评论 | 2019-05-02

抛硬币 - MetaTrader 5EA
一款不使用任何自定义指标的 EA; 依据伪随机开仓。
尾随修改持仓的止损。 在亏损的情况下,使用马丁格尔增加手数。 如何监控亏损: 在 OnTradeTransaction 中,我们捕获交易 DEAL_REASON_SL - 触发止损的信号:
//+------------------------------------------------------------------+
//| TradeTransactionfunction                                        |
//+------------------------------------------------------------------+
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;
           }
     }
  }

输入参数

  • Stop Loss - 止损;
  • Take Profit - 止盈;
  • Trailing Stop - 尾随;
  • Trailing Step - 尾随步幅;
  • Lots - 手数由手工设置 (如果 Lots 大于零,那么 Risk 必须等于零);
  • Risk - 自动计算手数 (如果 Risk 高于零, Lots 必须等于零);
  • Martingale - 手数增加比率,如果上一笔持仓被止损,且收取的盈利为负;
  • Max lots - 最大持仓交易量; 如果超过这个大小,则 EA 非正常终止其操作;
  • magic number - EA 的独有标识符。
然后测试中断 (强制从图表中卸载 EA),因为参考手数超过了 Maxlots 参数:



回测结果

回测结果
抛硬币形式的马丁格尔策略.rar 售价: 2 枚金币 (一共需要4个金币)

源码+策略介绍

""
还没有人打赏,支持一下

评论|共 9 个

qq2682617579

发表于 2020-2-7 11:00:15 | 显示全部楼层

帮你顶下哈!!

裕银投资

发表于 2020-3-28 21:33:28 | 显示全部楼层

帮帮顶顶!!

尹雪

发表于 2020-7-16 22:47:52 | 显示全部楼层

帮你顶下哈!!

从未放开的手

发表于 2020-7-18 20:49:31 | 显示全部楼层

帮你顶下哈!!

kforex

发表于 2020-8-5 20:24:28 | 显示全部楼层

谢谢楼主分享

街边捡幸福

发表于 2020-9-4 19:06:37 | 显示全部楼层

学习了,不错

jamestin

发表于 2021-7-8 15:33:51 | 显示全部楼层

顶下

fypkutvj

发表于 2021-7-22 22:27:22 | 显示全部楼层

谢谢

ksimuijz

发表于 2021-7-23 22:01:40 | 显示全部楼层

支持下

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则