EA: cheduecoglioni

 

cheduecoglioni:

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

作者: Vladimir Karputov

 

你好,我的朋友,弗拉基米尔。

我对这个条件很感兴趣:

            if( m_trade.ResultDeal()==0 )
              {
               Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
              }

以下条件适合 OrderSendAsync() 函数 还是挂单?

            if( m_trade.ResultDeal()==0  ||  m_trade.ResultOrder()==0 )
              {
               Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
                     ", description of result: ",m_trade.ResultRetcodeDescription());
              }
 
Automated-Trading:

cheduecoglioni

作者:弗拉基米尔-卡尔普托夫

非常好,我该如何使用这个 E A? 我喜欢你的推理,我一直想要一个这样参数描述的机器人

 
sztusz1 :
非常好,我该如何使用这个 E A? 我喜欢你的推理,我一直想要一个这样描述参数的机器人

指标 附加到符号图形上。就是这样。

 
胜率还可以,如果能添加马丁的话,会更好!
 
打开第一个位置的条件是什么?还是必须手动打开?
 
284954 #:
打开第一个位置的条件是什么?还是必须手动开仓?

EA 会等待 TP 或 SL 触发,然后反向开仓。在发送交易请求之前,它会检查是否有足够的资金。OnTradeTransaction.

例如,我们有一个未平仓的买入头寸。一旦触发 TP 或 SL,就会建立一个新的卖出头寸。然后,在触发 TP 或 SL 后,再建立一个新的买入头寸。

交易关闭在"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;
           }
        }
     }
  }