首页 系统交易 帖子

多货币夜间剥头皮交易系统 - MetaTrader 5 专业顾问

附件
16350.zip (1.72 KB, 下载 0次)

大家好,今天想跟大家分享一款多货币夜间剥头皮交易系统,它是专为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);

所有仓位会在止损触发时平仓,或在午夜后强制平仓:

else if(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";
   double Ask=SymbolInfoDouble(symb,SYMBOL_ASK);
   double Bid=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);
     }
   else if(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);

设置:

input string Symbol1     = "USDCAD";       // 货币对1
input int    StopLoss1   = 370;            // 止损1
input int    TakeProfit1 = 20;             // 止盈1
input int    BBPeriod1   = 40;             // 布林带周期1
input double BBDev1      = 1;              // 布林带偏差1
input double Razmah1     = 450;            // 布林带偏差1(点数)
input int    Start1      = 19;             // 开盘时间1

input string Symbol2     = "GBPUSD";       // 货币对2
input int    StopLoss2   = 450;            // 止损2
input int    TakeProfit2 = 80;             // 止盈2
input int    BBPeriod2   = 8;              // 布林带周期2
input double BBDev2      = 1;              // 布林带偏差2
input double Razmah2     = 200;            // 布林带偏差2(点数)
input int    Start2      = 20;             // 开盘时间2

input string Symbol3     = "NZDUSD";       // 货币对3
input int    StopLoss3   = 410;            // 止损3
input int    TakeProfit3 = 40;             // 止盈3
input int    BBPeriod3   = 4;              // 布林带周期3
input double BBDev3      = 1.2;            // 布林带偏差3
input double Razmah3     = 450;            // 布林带偏差3(点数)
input int    Start3      = 19;             // 开盘时间3

input string Symbol4     = "";             // 货币对4
input int    StopLoss4   = 500;            // 止损4
input int    TakeProfit4 = 40;             // 止盈4
input int    BBPeriod4   = 24;             // 布林带周期4
input double BBDev4      = 1;              // 布林带偏差4
input double Razmah4     = 200;            // 布林带偏差4(点数)
input int    Start4      = 20;             // 开盘时间4

input string Symbol5     = "";             // 货币对5
input int    StopLoss5   = 500;            // 止损5
input int    TakeProfit5 = 40;             // 止盈5
input int    BBPeriod5   = 24;             // 布林带周期5
input double BBDev5      = 1;              // 布林带偏差5
input double Razmah5     = 200;            // 布林带偏差5(点数)
input int    Start5      = 20;             // 开盘时间5

input string Symbol6     = "";             // 货币对6
input int    StopLoss6   = 500;            // 止损6
input int    TakeProfit6 = 40;             // 止盈6
input int    BBPeriod6   = 24;             // 布林带周期6
input double BBDev6      = 1;              // 布林带偏差6
input double Razmah6     = 200;            // 布林带偏差6(点数)
input int    Start6      = 20;             // 开盘时间6

input string Symbol7     = "";             // 货币对7
input int    StopLoss7   = 500;            // 止损7
input int    TakeProfit7 = 40;             // 止盈7
input int    BBPeriod7   = 24;             // 布林带周期7
input double BBDev7      = 1;              // 布林带偏差7
input double Razmah7     = 200;            // 布林带偏差7(点数)
input int    Start7      = 20;             // 开盘时间7

input string Symbol8     = "";             // 货币对8
input int    StopLoss8   = 500;            // 止损8
input int    TakeProfit8 = 40;             // 止盈8
input int    BBPeriod8   = 24;             // 布林带周期8
input double BBDev8      = 1;              // 布林带偏差8
input double Razmah8     = 200;            // 布林带偏差8(点数)
input int    Start8      = 20;             // 开盘时间8

input string Symbol9     = "";             // 货币对9
input int    StopLoss9   = 500;            // 止损9
input int    TakeProfit9 = 40;             // 止盈9
input int    BBPeriod9   = 24;             // 布林带周期9
input double BBDev9      = 1;              // 布林带偏差9
input double Razmah9     = 200;            // 布林带偏差9(点数)
input int    Start9      = 20;             // 开盘时间9

input double Lot         = 1;              // 交易手数

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

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

图3. EA交易与优化结果,时间段为2016年1月11日至2016年9月13日。USDCAD, GBPUSD, NZDUSD, H1

小贴士:

  • 建议将该EA作为交易助手,帮助您开发自己的交易策略。

相关帖子

评论 (0)