Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
CopyTicksオフラインの呼び出しに成功した後、GetLastErrorは 4403を返します。
CopyTicksRange経由でやりますが、CopyTicksの挙動は変更するのが正しいようです。
CopyTicks (build 1881) は、新しいティックが要求されない場合、要求されたものより古いデータを返します。つまり、パラメータより古いデータが返される。バグが浮いている - 異なる時間に表示されるので、私はそれを再現するいくつかの小さなコードを書いた。EURUSD H1、2017.08.01~2018.08.01でテスターで動かしてみました。
以下はその出力です。
2018.10.17 21:31:26.221 2017.08.01 12:00:00 dt[0]=2017.08.01 03:00:00
2018.10.17 21:31:26.221 2017.08.01 12:00:00 cnt=2000
2018.10.17 21:31:26.221 2017.08.01 12:00:00 ERROR: i=0, ticks[i].time_msc=1501552175606 (2017.08.01 01:49:35)
つまり、03:00からリクエストして、01:49から受信しました。実際の条件では、その差は1ヶ月以上ありました。
ここで、専門家の方に質問です。この方法で新鮮なダニを入手する場合、どのようなエラーが発生する可能性がありますか?
同じ時刻の刻みの順番は保証されていないようです。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
リアルタイムの刻み
アンドレイ・ハチムリアンスキー さん 2020.01.31 14:40
ちなみに、ダニの正しい採取法については、Vasily Sokolov氏の素晴らしい記事が あります。そこにはアナログ同期処理の詳細が書かれています(私はこれを持っていないので、時々同じ目盛りが印刷されることがあります)。
しかし、CopyTiks関数では、最後のN個のティックを要求することはできません。その代わり、指定した時刻に発生したすべてのティックを提供します。これが作業を複雑にしている。クエリーを実行し、tickの配列を取得し、前回の更新時に受け取ったtickの配列と比較する必要があります。同時に、新しく受け取ったティックのうち、どれが「前の供給」に含まれないか、つまり新しいものかを調べます。しかし、両者の刻みを直接比較することは不可能で、単に目に見える違いが全くない場合もあるからです。例えば、下の取引表を見てみましょう。
図5.全案件の一覧と同一案件の例。
すぐに全く同じダニの2つのグループを見ることができます。赤枠で示されたものは、時間、数量、方向、価格が同じである。このように、個々のダニ同士を比較することは不可能であることがわかります。
しかし、一群の ダニを比較することは可能である。2つのティックのグループが互いに等しい場合、これらのティックとそれに続くティックは、前回の価格更新時にすでに分析されたと結論付けることができます。
同じ時刻の刻みの順番は保証されていないようです。
ティックのグループということであれば、コード上は何も問題ないようです。
結果(コールド運転-ターミナル起動直後)。
Expert Advisor をオフにすることは可能ですが、ターミナルによる消費は何も変わりません。