エキスパート: cheduecoglioni

 

cheduecoglioni:

このEA は、TP または SL がトリガするのを待ってから、反対方向にポジションを開きます。 トレードリクエストを送る前に十分な資金があるかどうか確認します。 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());
              }
 
非常に良い、どのように私はこのE Aを使用するのですか? 私はあなたの推論を愛し、私はいつもこのパラメータでロボットが説明したかった

 
sztusz1 :
非常に良い、どのように私はこのE Aを使用するのですか? 私はあなたの推論が大好きです、私はいつもこの説明されたパラメータでロボットを望んでいた

シンボルグラフィックスにインジケータを 取り付けます。それだけです。

 
勝ち星はまあまあだし、マーティンを加えることができればもっといい!
 
最初のポジションを開ける条件は?それとも手動で開けるのですか?
 
284954 #:
最初のポジションを開ける条件は?それとも手動で建てるのですか?

EAはTPまたはSLがトリガーされるのを待ち、それから反対方向のポジションをオープンします。取引リクエストを送信する前に、十分な資金があるかどうかをチェックします。OnTradeTransaction.

たとえば、買いポジションをオープンしているとします。TPまたはSLがトリガーされると、新しい売りポジションがオープンされます。次に、TPまたはSLがトリガーされると、新しい買いポジションがオープンされます。

取引の決済は「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_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;
           }
        }
     }
  }