下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

EA

cheduecoglioni - MetaTrader 5EA

| Chinese English Русский Español Deutsch 日本語 Português

发布者:
Vladimir Karputov
显示:
256
等级:
投票: 18
已发布:
2017.08.18 09:25

思路的作者ef91 (相关讨论的开端)

MQL5 代码作者Vladimir Karputov.

该EA交易会等待获利或止损触发之后,再在相反方向上建立仓位。在发送交易请求之前它会检查是否有足够的资金。OnTradeTransaction.

例如,我们有了一个已经建立的买入仓位,当触发了获利或者止损时,就建立一个新的卖出仓位。然后,在触发了获利或者止损之后,就又建立一个新的买入仓位。

交易的关闭是在"OnTradeTransaction中监控的":

//+------------------------------------------------------------------+
//| TradeTransaction 函数                      |
//+------------------------------------------------------------------+
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_type         =0;
      string   deal_symbol       ="";
      long     deal_magic        =0;
      long     deal_time         =0;
      if(HistoryDealSelect(trans.deal))
        {
         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_type=HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_time=HistoryDealGetInteger(trans.deal,DEAL_TIME);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
        {
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
              {
               if(deal_type==DEAL_TYPE_BUY)
                  m_close_pos_type=POSITION_TYPE_SELL;
               else if(deal_type==DEAL_TYPE_SELL)
                  m_close_pos_type=POSITION_TYPE_BUY;
               else
                  return;
               m_is_trade=true;
              }
           }
         else if(deal_entry==DEAL_ENTRY_IN)
           {
            m_is_trade=false;
           }
        }
     }
  }

    在 OrderSend 之前检查交易量 (以建立买入仓位为例):

    //+------------------------------------------------------------------+
    //| 建立买入仓位                             |
    //+------------------------------------------------------------------+
    void OpenBuy(double sl,double tp)
      {
       sl=m_symbol.NormalizePrice(sl);
       tp=m_symbol.NormalizePrice(tp);
    
    //--- 在 OrderSend 之前检查交易量以避免 "资金不足" 的错误 (CTrade)
       double check_volume_lot=m_trade.CheckVolume(m_symbol.Name(),InpLots,m_symbol.Ask(),ORDER_TYPE_BUY);
    
       if(check_volume_lot!=0.0)
         {
          if(check_volume_lot>=InpLots)
            {
             if(m_trade.Buy(InpLots,NULL,m_symbol.Ask(),sl,tp))
               {
                if(m_trade.ResultDeal()==0)
                  {
                   Print("买入 -> 错误. 结果返回值: ",m_trade.ResultRetcode(),
                         ", 结果的描述: ",m_trade.ResultRetcodeDescription());
                  }
                else
                  {
                   Print("Buy -> true. 结果返回值: ",m_trade.ResultRetcode(),
                         ", 结果的描述: ",m_trade.ResultRetcodeDescription());
                  }
               }
             else
               {
                Print("买入 -> 错误. 结果返回值: ",m_trade.ResultRetcode(),
                      ", 结果的描述: ",m_trade.ResultRetcodeDescription());
               }
            }
          else
            {
             m_is_trade=false;
            }
         }
       else
         {
          m_is_trade=false;
         }
    //---
      }
    

    本文译自 MetaQuotes Software Corp. 撰写的俄文原文
    官方代码: https://www.mql5.com/ru/code/18294

    烛形大小 (文字) 烛形大小 (文字)

    烛形的大小,大小是根据下面的公式来计算的: "被减数" 减去 "减数"。

    有关交易品种的所有信息 有关交易品种的所有信息

    有关当前交易品种的所有信息 (使用了来自 CSymbolInfo 类对象的信息),体现为一个对话框面板。

    CandleRange CandleRange

    在一个窗口中的两个柱形图,显示了距离初始值的最大平均价格偏移点数。

    TotalPowerIndicatorX_HTF TotalPowerIndicatorX_HTF

    在指标输入参数中带有时段选择选项的 TotalPowerIndicatorX 指标。