フォルツァ執行上の問題点 - ページ 9

 
Renat:
こちらは端末1060で、サーバーはまだ1035です。
了解です))
 

レナートさん、こんにちは。

OnTradeTransactionイベントが来なかった場合の)「緊急」注文追跡モードを設計している間。

3秒以上経過すると、履歴にマーケットオーダーが表示されることを検知しました。

CN      0       07:10:26.424    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:26
CE      0       07:10:26.424    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
CG      0       07:10:27.554    History_bug (Eu-3.15,H1)        Время ожидания составило = 1138 мсек
NN      0       07:10:27.554    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
JD      0       07:10:29.328    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:29
DK      0       07:10:29.328    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
EP      0       07:10:30.596    History_bug (Eu-3.15,H1)        Время ожидания составило = 1279 мсек
RE      0       07:10:30.596    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
KJ      0       07:10:41.112    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:41
LQ      0       07:10:41.112    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
GJ      0       07:10:43.123    History_bug (Eu-3.15,H1)        Время ожидания составило = 2012 мсек
HK      0       07:10:43.123    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
IQ      0       07:10:46.176    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:46
LG      0       07:10:46.176    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
DD      0       07:10:48.193    History_bug (Eu-3.15,H1)        Время ожидания составило = 2028 мсек
LQ      0       07:10:48.193    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
EG      0       07:10:58.440    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:58
NL      0       07:10:58.440    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
NN      0       07:11:01.531    History_bug (Eu-3.15,H1)        Время ожидания составило = 3104 мсек
PG      0       07:11:01.531    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
DM      0       07:11:06.359    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:06
NR      0       07:11:06.359    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
RG      0       07:11:09.649    History_bug (Eu-3.15,H1)        Время ожидания составило = 3292 мсек
HN      0       07:11:09.649    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
LS      0       07:11:19.636    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:19
GH      0       07:11:19.636    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
RQ      0       07:11:23.808    History_bug (Eu-3.15,H1)        Время ожидания составило = 4180 мсек
PF      0       07:11:23.808    History_bug (Eu-3.15,H1)        CheckOrders: Билет получен = 9833674
QE      0       07:11:27.865    History_bug (Eu-3.15,H1)        Время ожидания составило = 4056 мсек
HN      0       07:11:27.865    History_bug (Eu-3.15,H1)        CheckOrders: Сделка совершена, билет = 9833674
HD      0       07:11:30.832    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:30
IK      0       07:11:30.832    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
LP      0       07:11:34.962    History_bug (Eu-3.15,H1)        Время ожидания составило = 4134 мсек
DG      0       07:11:34.962    History_bug (Eu-3.15,H1)        CheckOrders: Билет получен = 9833675
CD      0       07:11:39.018    History_bug (Eu-3.15,H1)        Время ожидания составило = 4057 мсек
JN      0       07:11:39.018    History_bug (Eu-3.15,H1)        CheckOrders: Сделка совершена, билет = 9833675

このログを生成したEAコードを添付します。

最初は1000ms、次に2000ms、3000ms、最後に4000msの待ち時間が発生しました。

各期間(オープンポジション-クローズ)ごとに2コマンドを送信しました。

MARKETのオーダーは長すぎませんか?

P/Sデモのオープニング(ターミナルビルド1060)

ファイル:
History_bug.mq5  10 kb
 

まだコードを実行していませんが、ソースではHistorySelectの 終了日が正しくないという古典的なエラーが出ています。

最初のプログラマーは皆、間違った日付でこの関数を呼び出し、歴史の終わりを噛み締め続け、「歴史の中の長い取引」を見つけるのです。

 

これは、「あらゆる最初」が「古典的な間違い」を犯すということで、機能なのでしょう。

そのファイルには、ある日付から現在の瞬間までの履歴を読み取ろうとする試みがある。物語の最後をつまみ食い」しないための、正しい方法を教えてください。

 

間違いは、現在時刻がどうなっているかを考えず、間違ったソースの日付を入れることです。

廃止されたserverTimeではなく、既知の遠方の日付を終了日として指定すれば十分である。

 
Renat:

間違いは、現在時刻がどうなっているかを考えず、間違ったソースの日付を入れることです。

廃止されたserverTimeではなく、既知の遠方の日付を終了日として置くだけで十分です。

もしかしたら、例の入ったヘルプもその時に修正できるかも?

https://www.mql5.com/ru/docs/trading/historyselect

Документация по MQL5: Торговые функции / HistorySelect
Документация по MQL5: Торговые функции / HistorySelect
  • www.mql5.com
Торговые функции / HistorySelect - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
papaklass:

Renatさん、OnTradeTransaction()の操作はもうされましたか?

いいえ、残念ながら、とても忙しいのです。

MetaQuotes-Demoサーバーで是非お試しください。

 

レナートのフレーズより

廃止されたserverTimeではなく、既知の遠い日を終了日として指定すれば十分である。

明日の日付(あるいはもっと遠い日付)を終了日として指定すればいいのだと理解しました。

 
Renat:

間違いは、現在時刻がどうなっているかを考えず、間違ったソースの日付を入れることです。

廃止されたserverTimeではなく、既知の遠方の日付を終了日として指定すれば十分である。

また、「廃止」されたTimeTradeServer() は開始日としてOKなのでしょうか?
 
Mikalas:
また、開始日としては、「時代遅れ」のTimeTradeServer() も適しているのでは?

開始日と終了日は、許容範囲内で、必要なマージンをもって設定する必要があります。それは、少なくともマイナスN秒、プラスN秒です。

TimeTradeServer()は、reltimeの正確な時間ではなく、マーケット概要に入ってくる価格ティックによってのみ更新されます。


ヒストリーサンプルにいきなりデータがない場合、99%の誤差はクエリーの境界線にあります。

理由: