大家好,今天想跟大家分享一款多货币夜间剥头皮交易系统,它是专为MetaTrader 5平台设计的,能够在午夜(0点)之前进行交易,利用布林带指标来判断价格波动范围。
系统的工作原理是利用布林带的上下边界来决定交易时机:
BBHandle=iBands(symb,0,per,0,dev,0); CopyBuffer(BBHandle,1,0,1,up); CopyBuffer(BBHandle,2,0,1,dn); double r=up[0]-dn[0];
当达到设定的交易开始时间Start后,如果当前没有持仓,就会开始开仓:
if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))
如果价格低于布林带的下边界,并且通道宽度小于Razmah变量设定的范围,就会买入:
if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);
反之,如果价格高于布林带的上边界,并且通道宽度小于Razmah的范围,就会卖出:
if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);
所有仓位会在止损触发时平仓,或在午夜后强制平仓:
elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
该系统通过调用SymbolTrade函数和使用СTrade类来执行交易:
void SymbolTrade(string symb,int stop,int take,int per,double dev,double razmah,int start) { string s=(string)start+":00"; doubleAsk=SymbolInfoDouble(symb,SYMBOL_ASK); doubleBid=SymbolInfoDouble(symb,SYMBOL_BID); BBHandle=iBands(symb,0,per,0,dev,0); CopyBuffer(BBHandle,1,0,1,up); CopyBuffer(BBHandle,2,0,1,dn); double r=up[0]-dn[0]; if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s)) { if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point); if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point); } elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb); }
每次新的K线出现时,交易操作会被执行:
if(bars!=Bars(NULL,0)) { if(Symbol1!="") SymbolTrade(Symbol1,StopLoss1,TakeProfit1,BBPeriod1,BBDev1,Razmah1,Start1); if(Symbol2!="") SymbolTrade(Symbol2,StopLoss2,TakeProfit2,BBPeriod2,BBDev2,Razmah2,Start2); if(Symbol3!="") SymbolTrade(Symbol3,StopLoss3,TakeProfit3,BBPeriod3,BBDev3,Razmah3,Start3); ... } bars=Bars(NULL,0);
设置:
inputstring Symbol1 = "USDCAD"; // 货币对1inputint StopLoss1 = 370; // 止损1inputint TakeProfit1 = 20; // 止盈1inputint BBPeriod1 = 40; // 布林带周期1inputdouble BBDev1 = 1; // 布林带偏差1inputdouble Razmah1 = 450; // 布林带偏差1(点数)inputint Start1 = 19; // 开盘时间1inputstring Symbol2 = "GBPUSD"; // 货币对2inputint StopLoss2 = 450; // 止损2inputint TakeProfit2 = 80; // 止盈2inputint BBPeriod2 = 8; // 布林带周期2inputdouble BBDev2 = 1; // 布林带偏差2inputdouble Razmah2 = 200; // 布林带偏差2(点数)inputint Start2 = 20; // 开盘时间2inputstring Symbol3 = "NZDUSD"; // 货币对3inputint StopLoss3 = 410; // 止损3inputint TakeProfit3 = 40; // 止盈3inputint BBPeriod3 = 4; // 布林带周期3inputdouble BBDev3 = 1.2; // 布林带偏差3inputdouble Razmah3 = 450; // 布林带偏差3(点数)inputint Start3 = 19; // 开盘时间3inputstring Symbol4 = ""; // 货币对4inputint StopLoss4 = 500; // 止损4inputint TakeProfit4 = 40; // 止盈4inputint BBPeriod4 = 24; // 布林带周期4inputdouble BBDev4 = 1; // 布林带偏差4inputdouble Razmah4 = 200; // 布林带偏差4(点数)inputint Start4 = 20; // 开盘时间4inputstring Symbol5 = ""; // 货币对5inputint StopLoss5 = 500; // 止损5inputint TakeProfit5 = 40; // 止盈5inputint BBPeriod5 = 24; // 布林带周期5inputdouble BBDev5 = 1; // 布林带偏差5inputdouble Razmah5 = 200; // 布林带偏差5(点数)inputint Start5 = 20; // 开盘时间5inputstring Symbol6 = ""; // 货币对6inputint StopLoss6 = 500; // 止损6inputint TakeProfit6 = 40; // 止盈6inputint BBPeriod6 = 24; // 布林带周期6inputdouble BBDev6 = 1; // 布林带偏差6inputdouble Razmah6 = 200; // 布林带偏差6(点数)inputint Start6 = 20; // 开盘时间6inputstring Symbol7 = ""; // 货币对7inputint StopLoss7 = 500; // 止损7inputint TakeProfit7 = 40; // 止盈7inputint BBPeriod7 = 24; // 布林带周期7inputdouble BBDev7 = 1; // 布林带偏差7inputdouble Razmah7 = 200; // 布林带偏差7(点数)inputint Start7 = 20; // 开盘时间7inputstring Symbol8 = ""; // 货币对8inputint StopLoss8 = 500; // 止损8inputint TakeProfit8 = 40; // 止盈8inputint BBPeriod8 = 24; // 布林带周期8inputdouble BBDev8 = 1; // 布林带偏差8inputdouble Razmah8 = 200; // 布林带偏差8(点数)inputint Start8 = 20; // 开盘时间8inputstring Symbol9 = ""; // 货币对9inputint StopLoss9 = 500; // 止损9inputint TakeProfit9 = 40; // 止盈9inputint BBPeriod9 = 24; // 布林带周期9inputdouble BBDev9 = 1; // 布林带偏差9inputdouble Razmah9 = 200; // 布林带偏差9(点数)inputint Start9 = 20; // 开盘时间9inputdouble Lot = 1; // 交易手数

图1. EA交易结果。EURUSD, H1

图2. EA在交易日志中的交易记录

图3. EA交易与优化结果,时间段为2016年1月11日至2016年9月13日。USDCAD, GBPUSD, NZDUSD, H1
小贴士:
- 建议将该EA作为交易助手,帮助您开发自己的交易策略。

评论 0