MetaTrader5
基于Iin_MA_Signal的交易系统 - MetaTrader 5的智能交易助手
大家好,今天我们来聊聊一个基于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. 测试结果图
2018.10.26