Steve Cartwright的Camel CCI MACD策略 - MetaTrader 5的交易专家

Mike 2017.03.23 01:33 26 0 0
附件

创意作者John SmithMQL5代码作者barabashkakvn

这款智能交易助手(EA)专为在H1时间框架内交易美元兑日元(USDJPY)而配置。

该EA使用了两条移动平均线、一个MACD和一个CCI指标。在交易过程中,会利用OnTradeTransaction函数来接收开仓时间。

所有指标值均来自于索引为 1 的K线。

//--- 指标设置 
   CAMELHIGHP1=iMAGet(handle_iMA_PRICE_HIGH,1);
   CAMELLOWP1=iMAGet(handle_iMA_PRICE_LOW,1);
//
   MACDSP1=iMACDGet(SIGNAL_LINE,1);
   MACDSP2=iMACDGet(SIGNAL_LINE,2);
//
   MACDHP1=iMACDGet(MAIN_LINE,1);
   MACDHP2=iMACDGet(MAIN_LINE,2);
//
   CCIP1=iCCIGet(1);

在当前K线上会进行适当的控制,以确认是否已开仓,因此无需检查所有仓位(因为同一交易账户可能有其他EA在运行)。

在OnTradeTransaction中控制开仓时间。如果记录到了平仓,将会重置开仓时间:

//+------------------------------------------------------------------+
//| 交易事务函数                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- 获取交易类型的枚举值 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- 如果交易是历史中交易的结果
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_entry        =0;
      long     deal_time         =0;
      string   deal_symbol       ="";
      long     deal_magic        =0;
      if(HistoryDealSelect(trans.deal))
        {
         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_time=HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
        {
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            m_last_close_time=(datetime)deal_time;
           }
         else if(deal_entry!=DEAL_ENTRY_OUT)
           {
            m_last_close_time=0;
           }
        }
     }
  }
列表
评论 0