ライブラリ: MT4Orders - ページ 15

 
Aleksey Vyazmikin:

最新のライブラリーはどこで入手できますか?

最新バージョンは、ライブラリーのページでいつでも入手できます。

私が持っているものでは、EAの動作が遅くなります。

ライブラリ

2017.08.23 12:03:00.097 Core 3 Si Splice,M1: 992989 ticks, 248280 bars generated.環境は0:00:00.078に同期。テストは0:01:24.069でパス(ティックの前処理0:00:00.421を含む)。

ライブラリなし

2017.08.23 12:06:38.022 Core 3 Si Splice,M1: 992989 ticks, 248280 bars generated.環境は0:00:00.079に同期。テストは0:01:09.186でパス(ティックの前処理0:00:00.421を含む)。

唯一の違いは、初期化解除中に動作し、クローズした注文を実行するクラスである。

このようなクラスは数ミリ秒で動作するはずです。

 
fxsaber:

最新バージョンはライブラリーのページでいつでも入手できる。

このようなクラスは数ミリ秒で動作するはずだ。


ライブラリを更新し、より良い結果を得た。

2017.08.23 14:02:22.204 Core 3 Si Splice,M1: 992989 ticks, 248280bars generated.環境は0:00:00.062に同期。テストは0:01:10.341でパス(ティックの前処理0:00:00.437を含む)。


 
Aleksey Vyazmikin:

ライブラリーを更新し、より良い結果に

このニュアンスを考慮してほしい。多くの人は次のように書きます。

for (int i = 0; i < OrdersHistoryTotal(); i++)
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
    // ...

これは、各ループパスで OrdersHistoryTotal() を呼び出すことにつながります。この関数は最適化され、素早く実行されますが、それでも毎回履歴の変更をチェックすることになります。これは明らかに不要であり、貴重な時間を消費します。ですから、このように書くのが正しいのです。

const int Total = OrdersHistoryTotal();

for (int i = 0; i < Total; i++)
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
    // ...

その方が速くなる。

 
// 変更リスト:
// 26.08.2017:
// 追加: OrderOpenTimeMsc() および OrderCloseTimeMsc() を追加 - 対応する時間はミリ秒単位。
// 修正: MT4 と同様に、以前はすべてのトレードチケットは int 型でした。MT5でint型を超えるケースが発生したため、チケットの型をlong型に変更しました。
// したがって、OrderTicket と OrderSend は long 値を返す。MT4 と同じ型(int)のリターン・モードは
#include <MT4Orders.mqh> の前に次の行を書く。

// #define MT4_TICKET_TYPE // OrderSendとOrderTicketがMT4と同じint型の値を返すようにする。
 
// 変更リスト:
// 03.09.2017:
// 追加:OrderTicketOpen() - MT5のポジション開始取引チケットを追加しました。
// OrderOpenReason() - MT5が取引を開始する理由 (ポジションを開く理由)
// OrderCloseReason() - MT5決済取引の理由 (ポジションを決済する理由)
削除済み  

// if (MT4ORDERS::OrderSendBug)
// // {
//Alert("BUG!!!!");
//
// // mt4orders_benchmark;
// }.

このコード内のアラートは何ですか?履歴が一定時間同期されていないと「バグ」と表示されるのですか?

以前、kamentsの中で見つけたのですが、その質問はなくなりました。だから致命的なものではないよ。

 
Maxim Dmitrievsky:

// if (MT4ORDERS::OrderSendBug)
// // {
// Alert("BUG!!!!");
//
// // mt4orders_benchmark;
// }.

このコード内のアラートは何ですか?履歴が一定時間同期されていないと「バグ」と表示されるのですか?

以前、kamentsの中で見つけたのですが、その質問はなくなりました。だから、致命的なものではないんだ。

そうです。開発者の珍しいバグだ。ヶ月以上ライブラリにあるものだけがこのように見える。

      if (!Res || MT4ORDERS::OrderSendBug)
      {
        Alert(Res ? "OrderSend - BUG!" : "MT4ORDERS - not Sync with History!");

アップデートを強くお勧めします。

削除済み  
fxsaber:

そう、その通り だ。開発者による珍しいバグだ。ヶ月以上ライブラリにあるだけで、こんな感じだ。

アップデートを強く勧める。

たった今アップデートしました。)
 
MQL5標準関数の影響を受けやすいライブラリの例
#include <MT4Orders.mqh>

void OnStart()
{
  if (PositionsTotal() > 1)
  {
    OrderSelect(0, SELECT_BY_POS); // 選択されたMT4Orders。
    OrderPrint();                  // MT4のようにポジションを表示する
    
    PositionGetTicket(1);          // MQL5が選出
    OrderPrint();                  // MT4のようにポジションを表示する
  }
}
 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

ライブラリ: TesterBenchmark

fxsaber, 2017.09.05 09:36 pm.

最大に最適化された純粋なMQL5からのMT4Ordersのラグはパーセント未満です。