MQL5で学び、共に書く - ページ 34

 
Yedelkin:

次のような簡単なスクリプトで、奇妙な結果が得られます。

どなたか、その理由を説明してください。254番を明示的にucharに変換した場合、意図したとおりに動作する。

メッセージありがとうございます!調べてみます。
 
Rosh:
メッセージありがとうございました、整理します。

ushortと同じ話です。

void OnStart()
  {
   for(ushort i=32760;i<32775;i++)
     {
      switch(i>USHORT_MAX-2)
        {
         case   true:  Print(__FILE__," ",__FUNCTION__,": ",i,">(USHORT_MAX-2) - true");   break;
         case  false:  Print(__FILE__," ",__FUNCTION__,": ",i,">(USHORT_MAX-2) - false");  break;
        }
     }
  }
 

ある条件が発生したときに、音楽が始まるようにするにはどうしたらいいでしょうか。へっへっへ、ちょっと不思議なmqlの応用ですね))でも、映像を見ながらタイミングを待つのはつまらないし、ロボットに全部任せてしまうのもなんだか腑に落ちない。なので、音楽は好きな時に自分で流すことにしました))

参考書を見たのですが、探しすぎなのか、見つかりませんでした(笑)。

 
関数PlaySound()を確認する。
 
Rosh:
関数PlaySound()を確認する。

ありがとうございました(笑)。
 

リクオートの追跡について質問です。

OrderSend()関数の説明には、「成行注文の場合、OrderSend()メソッドの正常終了は、必ずしも取引の成功を意味しない」とあります。を確認する必要があります。retcodeの値"。つまり、OrderSend()==trueであれば、まだrequoteを取得できると推論できる。オッケーです。

しかし、例(「結果処理を伴う取引要求の送信」)の「取引要求結果の構造」の項では、OrderSend() ==falseの場合のみ、リクオートに関するメッセージがチェックされます。

では、どのような場合にリクオートをチェックするのか。OrderSend()が返すすべての値でチェックするのか、それともOrderSend()==falseの場合のみチェックするのか。

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - Документация по MQL5
 
Yedelkin:

リクオートの追跡について質問です。

OrderSend()関数の 説明には、「成行注文の場合、OrderSend()メソッドの正常終了は、必ずしも取引の成功を意味しない」とあります。

OrderSend() の実行が成功すると、要求が正しいかどうかがチェックされ、実行のための待ち行列に入れられることだけを意味する。しかし、その先の運命は保証されていません。例えば、充填政策により、その処理中に注文がキャンセルされることもあります。

しかし、一般的には、requoteがあった場合、OrderSend()は明らかに失敗している。

 
Rosh:

OrderSend() の成功は、要求が正しいかどうかチェックされ、実行のためにキューに入れられたことだけを意味する。しかし、その先の運命は保証されていません。例えば、充填政策により、注文が処理中にキャンセルされることもあります。

しかし、一般的には、requoteがあった場合、OrderSend()は明らかに失敗している。

つまり、リクオートは、最初にリクエストが正しさのチェックをパスできなかったことを意味するのですね。
 
Yedelkin:
つまり、リクオートは、最初にリクエストが正しさのチェックをパスできなかったことを意味するのですね。

そうですね、リクエストに記載された価格が合わなかったので、MqlTradeResult サーバーのレスポンス構造から得られる新しい価格を考慮するよう促されます。

struct MqlTradeResult
  {
   uint     retcode;          // Код результата операции
   ulong    deal;             // Тикет сделки, если она совершена
   ulong    order;            // Тикет ордера, если он выставлен
   double   volume;           // Объем сделки, подтверждённый брокером
   double   price;            // Цена в сделке, подтверждённая брокером
   double   bid;              // Текущая рыночная цена предложения (цены реквота)
   double   ask;              // Текущая рыночная цена спроса (цены реквота)
   string   comment;          // Комментарий брокера к операции (по умолчанию заполняется расшифровкой)
  };

 
Rosh:

はい、リクエストに記載された価格が一致しなかったため、新しい価格を考慮するよう促されます。この価格は、MqlTradeResult サーバーの応答構造から取得できます。

よっしゃー

おそらく、やりすぎだと思うのですが、ここでまた質問です。成行注文(ポジションを建てる)のリクエストを出す前に、トレードチケットをゼロにリセットする、つまりresult.deal=0にするのです。MqlTradeResult レスポンス構造でサーバーが null 取引チケットを返しますが、少し後に取引が実行され、ポジションが開かれることを期待してもよいでしょうか。それとも、サーバーが null のトレードチケットを返すことで、ポジションを開くことができず、この要求に基づいてさらに開くことがないことを保証するのでしょうか。