基于Iin_MA_Signal的交易系统 - MetaTrader 5的智能交易助手

Mike 2018.10.26 00:57 16 0 0
附件

大家好,今天我们来聊聊一个基于Iin_MA_Signal指标的交易系统。这款交易系统能够根据之前交易的结果,灵活调整即将进行的交易的交易量。当趋势发生变化(通过指标的颜色标签显示)时,交易信号会在一根K线收盘时生成。

此外,这个EA(智能交易系统)还新增了输入变量块,以便更好地管理已开仓位的交易量:

input uint    BuyTotalMMTriger=5; // 用于计算止损的最后5笔买入交易数量
input uint    BuyLossMMTriger=3;  // 用于减少资金管理的亏损买入交易数量
input uint    SellTotalMMTriger=5;// 用于计算止损的最后5笔卖出交易数量
input uint    SellLossMMTriger=3; // 用于减少资金管理的亏损卖出交易数量
input double  SmallMM_=0.01;      // 亏损情况下每笔交易的资金管理比例
input double  MM=0.1;             // 正常交易情况下每笔交易的资金管理比例
input MarginMode MMMode=LOT;      // 确定手数值的方法

根据这些输入参数,当选择最近五笔交易时,如果其中有三笔是亏损的,EA将以0.01手的交易量在同一方向上开仓。如果最近五笔中亏损交易少于三笔,则仓位量为0.1手。

这款EA是对Exp_Iin_MA_Signal EA的进一步优化。代码中增加了EA输入的块,并对开平仓部分进行了修改:

//---- 交易执行
//---- 根据魔术号平掉多头仓位
   BuyPositionClose_M(BUY_Close,Symbol(),Deviation_,BuyMagic);

//---- 根据魔术号平掉空头仓位  
   SellPositionClose_M(SELL_Close,Symbol(),Deviation_,SellMagic);

   double mm;
//---- 根据魔术号开多头仓位
   if(BUY_Open)
     {
      mm=BuyTradeMMRecounterS(BuyMagic,BuyTotalMMTriger,BuyLossMMTriger,SmallMM_,MM); // 根据之前交易的结果定义多头仓位的大小
      BuyPositionOpen_M1(BUY_Open,Symbol(),UpSignalTime,mm,MMMode,Deviation_,StopLoss_,TakeProfit_,BuyMagic);
     }

//---- 根据魔术号开空头仓位
   if(SELL_Open)
     {
      mm=SellTradeMMRecounterS(SellMagic,SellTotalMMTriger,SellLossMMTriger,SmallMM_,MM); // 根据之前交易的结果定义空头仓位的大小
      SellPositionOpen_M1(SELL_Open,Symbol(),DnSignalTime,mm,MMMode,Deviation_,StopLoss_,TakeProfit_,SellMagic);
     }

为确保该EA正常运作,需在<terminal_data_directory>\MQL5\Indicators文件夹中准备好编译后的Iin_MA_Signal.ex5指标文件。

下面的测试结果采用了默认的无止损的专家顾问输入参数。

图1. 交易示例

图1. 交易示例

2017年GBPJPY H1的测试结果:

图2. 测试结果图

图2. 测试结果图

列表
评论 0