初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1454

 
Mikhail Toptunov #:

諸君、大臣諸君!)

再び25歳

   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }

馬、人...。

これはいったい何なんだ?

未決済の注文数を聞いているのに、ポジションを確認している。それじゃダメだ。
 
JRandomTrader #:

残念ながら、そうではない。コード10012、ゼロの注文券を受け取ったが、注文は実行されたことはすでにここで紹介した。MQはこの件について沈黙している。

そのための松葉杖を書いたのだが、それを確認できるのは、また10012を受け取ってからである。)

これはルールの例外であり、注文、取引、ポジションの違いを理解できない人である。そして、あなたはまた、例外で彼を混乱させる))))))

彼がその仕組みを理解したとき、自分の必要な小切手を書くことができるようになるだろう。

 
Aleksandr Slavskii #:

...そして、注文、取引、ポジションの違いを理解できない人

その仕組みを理解したとき、その人は自分の必要な小切手を書くことができるだろう。

すべてはここに 詳細に記載されています。

よろしく、ウラジミール。

 

ありがとう!


//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction&    trans,     // структура торговой транзакции
                        const MqlTradeRequest&        request,   // структура запроса
                        const MqlTradeResult&         result)    // структура ответа
  {
//--- результат выполнения торгового запроса
 ulong            lastOrderID   =trans.order; 

//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE  trans_type=trans.type;
   switch(trans.type)
     {
      case  TRADE_TRANSACTION_POSITION:   // изменение позиции
        {

        }
      break;
      //---
      case TRADE_TRANSACTION_ORDER_ADD:    // добавление нового действующего ордера
        {
         fix_position_open(lastOrderID);
        }
      break;
      case TRADE_TRANSACTION_REQUEST:    // добавление нового действующего ордера
        {

        }
      break;
     }
//---
  }
//--- Фиксируем если позиция открыта --------------------------------+
void fix_position_open(ulong lastOrderID)
  {
//--- Фиксируем если позиция открыта
   for(int i=0; i<ArraySize(position_buff); i++)
      if(position_buff[i].timeOp==1)
         if(!match_open_orders(lastOrderID))
           {
            position_buff[i].timeOp= 0;     // Фиксировать время
            Print("Метод OnTrade() по рынку не выполнен. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
         else
           {
            position_buff[i].timeOp= TimeCurrent();
            Print("Метод OnTrade() по рынку выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
  }
//--- Соответствие открытых ордеров ---------------------------------+
bool match_open_orders(long lastOrderID)
  {
//---
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Identifier()==lastOrderID)
            return(true);
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_order.SelectByIndex(i))
         if(m_order.Ticket()==lastOrderID)
            return(true);
   return(false);
  }
 
Mikhail Toptunov #:

ありがとう!

ポジションは、注文が約定したときにオープンされます。つまり、取引が行われ、注文が履歴に残ります。

 
MQL5ですべての関数が利用できない場合の対処法
 
Baruandreas #:
MQL5ですべての関数が 使えない場合の対処法

MQL4のことは完全に忘れて、MQL5のドキュメントを常に読むこと。

 
Baruandreas #:
MQL5ですべての関数が利用 できない場合の対処法

あなたの質問は明確ではありません。まず質問を明確にしてください:

  1. MQL5に すでにある関数について話しているのですか?
  2. MQL5の既成 関数のセットの中に関数はありますが、動作しませんか?
  3. ある関数が必要だが、MQL5の既成関数セットにはそのような 関数はないのですか?
よろしくお願いします。
 
MrBrooklin #:

あなたの質問は明確ではない。まず、質問を明確にしてください:

  1. MQL5に すでにある関数について話しているのですか?
  2. 既製のMQL 5のセットの中に関数はありますが、動作しませんか?
  3. ある関数が必要だが、そのような関 数は既製のMQL5のセットにはないのですか?
よろしく、ウラジミール。

後でわかったことだが、この人は自分の質問でフォーラム全体を汚している一人だ。彼は別のトピックまで作って いる...。

 
Alexey Viktorov #:

後でわかったことだが、その質問者はフォーラム全体を自分の質問でいっぱいにしてしまう人の一人だった。彼は別のトピックまで作って...。

こんにちは、アレクセイ。

ありがとう、ウラジミール。

理由: