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

 
// 変更リスト:
// 10.06.2020
// 追加: OrderPrint()にミリ秒を追加し、価格と数量の丸めを削除しました。
// 13.08.2020
// 追加: MT4ORDERS_BENCHMARK_MINTIMEマクロによるライブラリ部品のパフォーマンスチェックの可能性を追加しました。
 

私のラグ数は桁外れなので、こうしている。

sinput int inMT4OrdersMinTimeAlert = 0; // ミリ秒単位の警告しきい値
  
#define  MT4ORDERS_BENCHMARK_MINTIME inMT4OrdersMinTimeAlert // 最小警告-生産性スプラタバイト時間。

小さなラグについてはアラートをフィルタリングしている。

 
fxsaber:

わずかな遅れのためにアラートリガーをフィルタリングする。

同様の結果は、30msを超えるラグを出力した場合にも見られる。

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.
 

非同期オペレーションを扱う人にとって、自分のアカウントで処理可能な非同期オペレーションの最大数の設定を知っておくと便利だろう。

それを知るのは難しいことではない。

Alert: 60 - Too many trade requests


制限にぶつかるかもしれないので注意してください。


このような情報を入手する方法として、次のようなものが考えられる。

// trueの場合、Amountは最大量を含む。
// ターミナル全体に対する未処理の非同期リクエスト。
bool GetMaxAsync( const TICKET_TYPE TicketPending, int &Amount )
{
  const bool Res = OrderSelect(TicketPending);
  
  if (Res)
    for (Amount = 0; !IsStopped() && OrderDeleteAsync(TicketPending); Amount++)
      ;
      
  return(Res);
}

void OnStart()
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() > OP_SELL))
    {
      int Amount = 0;
      
      if (GetMaxAsync(OrderTicket(), Amount))
        Alert((string)Amount + " - " + MT4ORDERS::LastTradeResult.comment);
                
      break;
    }
}
 
// 変更リスト:
// 20.08.2020
// 修正:検出された部分的なオーダー実行の特殊性の会計処理。

単純なことではなかった。機能のひとつに過ぎない

ZY ライブラリーが発表されてから4年以上が経ちました。そしてそれはまだ最終的な仕上げを余儀なくされている。単純なMT5ではない。

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2020.08.02
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

フォーラムでのMT5普及の興味深いバリエーション。

mq4多通貨Expert Advisorが 投稿され、デモに置かれ、監視される。スレッドが維持される。人々は議論する。

mq5バリアントは、変換ライブラリの接続を介して投稿されます。人々はMT5-Testerを実際のティックで実行することを余儀なくされ(多通貨)、立ち往生する。同時に、MT5用に書くのは4用と同じくらい簡単であることに気づく。

 
fxsaber:

フォーラムでMT5を普及させる興味深いオプションだ。

mq4多通貨Expert Advisorが投稿され、デモに置かれ、監視される。スレッドが管理される。人々はそれについて議論する。

変換ライブラリの接続を通じてmq5-variantが投稿される。人々はMT5-Testerを実際のティックで実行することを余儀なくされ(多通貨)、立ち往生する。同時に、MT5用に書くのは4用と同じくらい簡単であることに気づく。

そう、そしてmt5 testerの方が数十倍有益で、テストの質という点でも優れています。

ライブラリをありがとう!

 
fxsaber:

mq4マルチカレンシー・エキスパート・アドバイザーを掲載し、デモを行い、モニターしています。ブランチがあります。人々は議論する。

alas、これはトレーダーの教育の欠如である、それは戦略テスターでの テストは数週間のデモ口座でのテストとは異なるという非常に一般的な誤解である、多通貨Expert Advisorはそれとは何の関係もありません。

fxsaber:

人々はMT5-Testerを実際のティックで実行することを余儀なくされ(多通貨)、行き詰まります。同時に、MT5でも4と同じように簡単に書けることに気づく。

MKのプライドは、あなたが適切な決定を下すことを許さない、あなたは1つで、MT5の注文システムの研究に時間を費やすことなく、MT5上で取引戦略を書くことができる仕事を作ったが、残念なことに、このフォーラムの「セミプログラマのスキルを揺さぶる」は、取引戦略の開発とテストよりも優先順位が高い、イミホ。

 
Igor Makanu:

ストラテジーテスターで テストするのと、デモ口座で数週間テストするのは違うというのはよくある誤解で、多通貨取引は関係ありません。

MKのプライドは適切な判断を許さない。あなたはMT5の注文システムの勉強に時間を費やすことなく、MT5で取引戦略を書く ことができる仕事をしているが、残念なことに、このフォーラムでは、取引戦略の開発やテストよりも「セミ・プログラマーのスキルを揺さぶる」ことの方が優先順位が高い。

どういう関係?

 
Vitaly Muzichenko:

どういう関係なんだ?

4の注文システムの簡潔さとシンプルさにあります。注文を使った初歩的なアクションの解決に気を取られることなく、「その場で」ストラテジーを書くことができます。

必要であれば、MT5の注文システムで簡単な注文アクションを練習することができます:


Igor Makanu:

覚えたチケットの使い方

見つける:

1. ポジションがクローズされているか?

2. クローズしたポジションはどのような取引か?

3. 9つの注文との同時作業が必要か。

この質問は「MT5初心者からの質問」というトピックでしたのですが、回答は「なぜそれが必要なのか」というスタイルでした。)