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

 
prostotrader:

これで納得!

非同期の場合、1行だけ書き込まれる

2017.02.17 16:20:47.300 Trades  '1007932': sell limit 1.00 RTS-3.17 at 121520 placed for execution in 8.287 ms

に対応する。

2017.02.17 16:20:47.300 Test_delay (RTS-3.17,M1)        8.305

そして、ログブックには他の行はないのだ!これに合わせて

2017.02.17 16:20:47.307 Test_delay (RTS-3.17,M1)        15.644

非同期処理では明らかにログは残りません。

しかし、同期処理では、ログに2行が表示されます。

2017.02.17 16:20:47.316 Trades  '1007932': sell limit 1.00 RTS-3.17 at 121520 placed for execution
2017.02.17 16:20:47.323 Trades  '1007932': order #54042531 sell limit 1.00 / 1.00 RTS-3.17 at 121520 done in 15.978 ms
そして、それらは記録と正確に対応している
2017.02.17 16:20:47.323 Test_delay (RTS-3.17,M1)        16.033

そのため、同期モードと非同期モードが同じ時間で実行され(論理的にはそうなっている)、ターミナルのログには非同期モードが2倍速いことが報告されています。これは嘘・間違いです!

と結論づけることができます。

非同期モードでは、ログは完全ではなく、誤解を招く恐れがあります。

 
fxsaber:


結論が導き出される。

非同期モードでは、ログが完全でないため、誤解を招く恐れがあります。

はい、しかし、これは残念ながらレイテンシーの問題を解決するものではありません...。
 
prostotrader:
はい、しかしそれでは残念ながらレイテンシーの問題は解決できません...。
  1. 非同期モードのログを参照することはまだできませんので、ご自身で測定していただく必要があります。そして、そのことをSDに書けば良いのです。
  2. SDでは数日前からブレーキの不具合が解消されています。高速再生のためのスクリプトを公開しました。もちろん、開発者は、テストベンチ(これは速い)、ユーザー端末(これは遅い)の順に、スクリプトが遅延を示さない状況に到達することになります。だから、すべてが極めて楽観的なのです。
 
fxsaber:
  1. 非同期モードのログを参照することはまだできませんので、ご自身で測定していただく必要があります。そして、そのことをSDに書けば良いのです。
  2. SDでは数日前からブレーキの不具合が解消されています。高速再生のためのスクリプトを公開しました。もちろん、開発者は、テストベンチ(これは速い)、ユーザー端末(これは遅い)の順に、スクリプトが遅延を示さない状況に到達することになります。だから、すべてが極めて楽観的なのです。

SDではずいぶん前に書きました。

私も楽観的です :)

 
prostotrader:

ずいぶん前にSRに書きました

申請した内容に対して、非常に迅速に対応してもらっています。おそらく、私の使っている言葉の方が、開発者には理解しやすいのでしょう。

言いたいことがわかりにくいことがあります。

 
同僚たちよ、この点について助言してくれ。私はいつもFORTSでORDER_FILLING_RETURN ポリシーを使っていますが、ここでORDER_FILLING_FOKをテストするタスクが発生しました。

しかし、時々FOKが動作せず、エラー4756を書き込むことがあります。
特に購入はSBを使っています。
bool  CTrade::BuyLimit(
                         1.0,                       // объем позиции
                         текущий аск,               // цена исполнения
                         NULL,                      // символ
                         0.0,                       // цена Stop Loss
                         0.0,                       // цена Take Profit
                         ORDER_TIME_DAY,            // тип истечения
                         0,                         // время истечения
                         ""                         // комментарий
   )
ご指摘ありがとうございます。
 
Dennis Kirichenko:
同僚、この点についてアドバイスをお願いします。私はいつもFORTSでORDER_FILLING_RETURN ポリシーを使っていますが、今、ORDER_FILLING_FOKをテストするタスクがあります。

しかし、時々FOKが動作せず、エラー4756を書き込むことがあります。
特に購入はSBを使っています。
bool  CTrade::BuyLimit(
                         1.0,                       // объем позиции
                         текущий аск,               // цена исполнения
                         NULL,                      // символ
                         0.0,                       // цена Stop Loss
                         0.0,                       // цена Take Profit
                         ORDER_TIME_DAY,            // тип истечения
                         0,                         // время истечения
                         ""                         // комментарий
   )
ご指摘ありがとうございます。

4756

取引要求の送信に失敗しました


オーダーフィリングとは関係ない。

SBをトレースしてみると、もしかしたらエラーの発生する場所がわかるかもしれません。

 
prostotrader:

4756

取引要求の送信に失敗しました


オーダーフィリングとは関係ない。

トレースルートSBで、エラーの発生箇所を確認する。

以下は、注文・取引履歴の 抜粋です。
2017.02.22 10:00:00 52884143 MIX-3.17 buy limit 1.00 / 0.00 213 700 213 525 213 900 2017.02.22 10:00:02 rejected Неполное сведение FOK заявки.


 
Dennis Kirichenko:
以下は、注文・取引履歴の 抜粋です。
2017.02.22 10:00:00 52884143 MIX-3.17 buy limit 1.00 / 0.00 213 700 213 525 213 900 2017.02.22 10:00:02 rejected Неполное сведение FOK заявки.


ブローカーがFOK注入をサポートしているかどうかを確認する

//---Filing mode
  int filling_mode = int(SymbolInfoInteger(a_symbol, SYMBOL_FILLING_MODE));
  
  if((SYMBOL_FILLING_IOC & filling_mode) != SYMBOL_FILLING_IOC)
  {
    MessageBox("Символ " + a_symbol + " не поддерживает filling IOC режим исполнения ордеров!", "Ошибка", MB_OK | MB_ICONHAND);
    return(false);
  }
  
  if((SYMBOL_FILLING_FOK & filling_mode) != SYMBOL_FILLING_FOK)
  {
    MessageBox("Символ " + a_symbol + " не поддерживает filling FOK режим исполнения ордеров!", "Ошибка", MB_OK | MB_ICONHAND);
    return(false);
  }

追加

また、SB 関数の bool CTrade::FillingCheck(const string symbol)
を参照してください。

 
Dennis Kirichenko:
以下は、注文・取引履歴の 抜粋です。
2017.02.22 10:00:00 52884143 MIX-3.17 buy limit 1.00 / 0.00 213 700 213 525 213 900 2017.02.22 10:00:02 rejected Неполное сведение FOK заявки.


リミッターはFOKになり得るか?

フォーラムでは、塗りつぶしタイプの自動選択機能が掲載されていました。

理由: