[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 383

 

Question 最新の負け注文を見つける方法 ?
原理は何ですか?オープンプライスで発注するのか、それとも他の方法があるのか?
 
VOLDEMAR:
その原理は?注文開始価格 ?それとも他の方法があるのでしょうか ?

オーダープロフィット()
 
drknn:

オーダープロフィット()
何?OrderProfit() もう少し具体的にお願いします。
 
artmedia70:

このライブラリーをEAに接続するのです。コードの一番最初に、標準ライブラリが接続された後に記述してください。

EAのstart()関数の中で、ライブラリにある関数の呼び出しを行い、ライブラリではなく EAを コンパイルしてください。


言われたとおりにすべてやったのですが、EAをコンパイルするときに、プログラムファイルを開くことができないと出て、私の関数の名前の行を指します。#include <GetExstremumZZZPrice.mqh>.
 
VOLDEMAR:
何?OrderProfit() もう少し具体的にお願いします。
for() ループで、OrderSelect() 関数と MODE_HISTORY パラメータを使用して、注文を最後から順番に 調べます。OrderProfit()関数で負け注文を見つけたら、break()を呼び出します。探していたものが見つかりましたね。
 
OrderCloseByが 1つの注文が異なることを明確にし、何を行うかを説明します。
 
T-G:
OrderCloseByが 1つの注文が異なることを明確にし、何を行うかを説明します。
スプレッドが少し節約できます。
 
splxgf:
これにより、スプレッドが少し節約できます。

ざっくりとした推測ですが、ちょうど2倍くらいでしょうか。
 
VOLDEMAR:
何?OrderProfit() もう少し具体的にお願いします。

datetime型の変数(例:Ord_Time)を宣言し、すぐに0をセットする。Ticketなどの整数の変数を宣言し、それもクリアする。次に、履歴からすべての注文をループするループを作成します。次のオーダーが決まりました。その終了時刻が変数Ord_Timeのそれよりも高く(または等しく)、OrderProfit()がゼロより小さい場合、変数Ord_Time =OrderCloseTime()とTicket変数 =OrderTicket()とする。このループの結果、Ticket変数には最後の負け注文のチケットが格納され、履歴に負け注文が全くない場合はゼロとなります。
 
drknn:

datetime変数(例:Ord_Time)を宣言し、すぐにゼロに設定する。Ticketなどの整数変数を宣言し、同様に0をセットする。次に、履歴からすべての注文をループするループを作成します。次のオーダーが決まりました。その終了時刻が変数Ord_Timeのそれよりも高く(または等しく)、OrderProfit()がゼロより小さい場合、変数Ord_Time =OrderCloseTime()とTicket変数 =OrderTicket()とする。このループの結果、Ticket変数には最後の負け注文のチケットが格納され、履歴に負け注文が全くない場合はゼロとなります。

なぜ、こんなに複雑にするのか?

以下のスクリプトを実行します。

int start()
{
   for (int Pos = OrdersHistoryTotal()-1; Pos >= 0; Pos--)
      if(OrderSelect(Pos, SELECT_BY_POS, MODE_HISTORY))
      {
         Print(OrderTicket(), ": ", TimeToStr(OrderCloseTime()));
      }
}

上に解答を書きました。このコードに1行だけ挿入する必要があります。