大家好,今天我们来聊聊一个基于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. 交易示例
2017年GBPJPY H1的测试结果:

图2. 测试结果图
评论 0