OrderClosePrice()が誤った値を返す

コミュニティの皆さん

私はここで初心者です、そしてこのコードを実行するとき、私はMT4テスター(バージョン4.00ビルド225)から間違った結果を受け取っているようです:

if(OrderSelect(ticket、SELECT_BY_TICKET、MODE_HISTORY)== true){
//クローズドトレード
order_closed_bar =バー;
order_states [rec] [ORDER_CLOSED_BAR] = order_closed_bar;
order_states [rec] [ORDER_OPEN_PRICE] = OrderOpenPrice();
order_states [rec] [ORDER_CLOSE_PRICE] = OrderClosePrice();
order_states [rec] [ORDER_CLOSE_TIME] = OrderCloseTime();
log_trade(チケット);
Print( "Rec:"、rec、 "注文を含む:"、ticket、 "開業日:"、OrderOpenPrice()、 "閉店日:"$ B!”OrderClosePrice());
else Print( "OrderSelectが失敗したエラーコードは"、GetLastError()、 "ticket:"、ticket);

コードが実行され、エラーが発生せず、OrderOpenPrice()によって返された価格は正しいです。しかし、OrderClosePrice()によって返される価格は、テスターの「結果」ウィンドウと「ジャーナル」ウィンドウの価格とは非常に異なります。

たとえば、トレード#7は1.48580の「結果」ウィンドウで開き、1.49242で閉じます。

13 2009.01.07 08:30売り7 0.10 1.48580 0.00000 0.00000 0.00 9727.80
14 2009.01.07 11:30閉じる7 0.10 1.49242 0.00000 0.00000 -66.20 9661.60

同じことが雑誌にも見られます。上記の私のコードも1.48580で開きますが、OrderClosePrice()は1.48620 :(を返します。

2010.01.06 12:14:06 2009.01.07 11:30 spandau_ballet_v3.1 GBPUSD、M30:クローズ#7販売1.49802で1.48580で0.10 GBPUSD
2010.01.06 12:14:06 2009.01.07 08:30 spandau_ballet_v3.1 GBPUSD、M30:Rec:6含まれている順序:7で開かれた: 1.4858で閉まった: 1.4862

誰かが私が間違ったことをしたかもしれないことを提案できますか

どうもありがとう、

モヌ


バーは何でも6、16000?また、最大値に達することもあります(オプションを参照)。その後、すべてのエントリは同じ値になります。

rec、何ですか?毎回配列のサイズを変更していますか。

order_states [] []はダブルですか?しかし、あなたはそれにints / doubles /とdatetimeを格納していますか?

"log_trade(ticket)"は別の注文をしますか?履歴以外の可能性がありますか?


こんにちはWHR、

お返事をありがとうございます。私は自分で問題を解決しました。

何らかの理由で "MODE_HISTORY"がクローズされていない注文を返していたため、OrderClosePrice()が正しくないことがわかりました。私はこの問題を解決 するOrderCloseTime()!= 0をテストすることによってこの問題を回避しました。

お手数をおかけしてありがとうございます。

よろしく、

モヌ


OrderSelect()がそのバグだったのであれば、このフォーラムにはそれに関する投稿がたくさんあり、ずっと前に修正されていたでしょう。他に何か問題があるはずです。




4938: https://www.mql5.com/en/forum/122998


Originally posted 2019-08-04 02:54:25.

Translate »