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

 
fxsaber:

Alpari-MT5-デモサーバーです。このスクリプトは 2回実行されました。

2017.02.08 22:55:13.170 Trades  '50075899': market buy 1.00 BRN
2017.02.08 22:55:15.817 Trades  '50075899': accepted market buy 1.00 BRN
2017.02.08 22:55:15.817 Trades  '50075899': deal #4163994 buy 1.00 BRN at 55.41 done (based on order #5506688)
2017.02.08 22:55:15.827 Trades  '50075899': order #5506688 buy 1.00 / 1.00 BRN at 55.41 done in 2658.948 ms
2017.02.08 22:55:15.827 Trades  '50075899': modify #5506688 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.41, tp: 56.41
2017.02.08 22:55:17.270 Trades  '50075899': accepted modify #5506688 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.41, tp: 56.41
2017.02.08 22:55:18.124 Trades  '50075899': modify #5506688 buy 1.00 BRN -> sl: 54.41, tp: 56.41 done in 2295.483 ms
2017.02.08 22:55:18.124 Trades  '50075899': market sell 1.00 BRN, close #5506688 buy 1.00 BRN 55.41
2017.02.08 22:55:23.246 Trades  '50075899': accepted market sell 1.00 BRN, close #5506688 buy 1.00 BRN 55.41
2017.02.08 22:55:23.246 Trades  '50075899': deal #4163995 sell 1.00 BRN at 55.27 done (based on order #5506689)
2017.02.08 22:55:23.246 Trades  '50075899': order #5506689 sell 1.00 / 1.00 BRN at 55.27 done in 5119.709 ms

2017.02.08 22:55:23.246 Trades  '50075899': buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.309 Trades  '50075899': accepted buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.314 Trades  '50075899': order #5506691 buy limit 1.00 / 1.00 BRN at market done in 66.501 ms
2017.02.08 22:55:23.314 Trades  '50075899': cancel order #5506691 buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.376 Trades  '50075899': accepted cancel order #5506691 buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.379 Trades  '50075899': cancel #5506691 buy limit 1.00 BRN at market done in 64.586 ms

2017.02.08 22:55:48.729 Trades  '50075899': market buy 1.00 BRN
2017.02.08 22:55:48.801 Trades  '50075899': accepted market buy 1.00 BRN
2017.02.08 22:55:48.801 Trades  '50075899': deal #4163999 buy 1.00 BRN at 55.39 done (based on order #5506694)
2017.02.08 22:55:48.809 Trades  '50075899': order #5506694 buy 1.00 / 1.00 BRN at 55.39 done in 78.782 ms
2017.02.08 22:55:48.809 Trades  '50075899': modify #5506694 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.39, tp: 56.39
2017.02.08 22:55:48.879 Trades  '50075899': accepted modify #5506694 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.39, tp: 56.39
2017.02.08 22:55:48.886 Trades  '50075899': modify #5506694 buy 1.00 BRN -> sl: 54.39, tp: 56.39 done in 77.030 ms
2017.02.08 22:55:48.886 Trades  '50075899': market sell 1.00 BRN, close #5506694 buy 1.00 BRN 55.39
2017.02.08 22:55:48.961 Trades  '50075899': accepted market sell 1.00 BRN, close #5506694 buy 1.00 BRN 55.39
2017.02.08 22:55:48.966 Trades  '50075899': deal #4164000 sell 1.00 BRN at 55.27 done (based on order #5506695)
2017.02.08 22:55:48.966 Trades  '50075899': order #5506695 sell 1.00 / 1.00 BRN at 55.27 done in 79.688 ms
2017.02.08 22:55:48.966 Trades  '50075899': buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.034 Trades  '50075899': accepted buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.041 Trades  '50075899': order #5506696 buy limit 1.00 / 1.00 BRN at market done in 75.393 ms
2017.02.08 22:55:49.041 Trades  '50075899': cancel order #5506696 buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.116 Trades  '50075899': accepted cancel order #5506696 buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.116 Trades  '50075899': cancel #5506696 buy limit 1.00 BRN at market done in 83.423 ms

このような予期せぬ速度低下は、ほとんどすべてのデモ用サーバーで発生しています。つまり、この問題はFORTSだけではないのです。

この場合の開発者は、橋がない分、楽なはずです。この状況をご覧ください。

デモではなくREALを
 
prostotrader:
デモではなくREALを

ですから、あなたの場合、開発者が整理するのはもっと大変なことなのです。

デモ - メタトレーダーのエコシステムからは何も出てきません。つまり、誰かに責任を押し付けることができないため、問題を局所化しやすいのです。

 
fxsaber:

Alpari-MT5-デモサーバーです。このスクリプトは 2回実行されました。

このような予期せぬ速度低下は、ほとんどすべてのデモ用サーバーで発生しています。つまり、この問題はFORTSだけではないのです。

この場合の開発者は、ブリッジがない分、楽なはずです。この状況をご覧ください。

MT5のビルド番号は何番ですか?
 
Rashid Umarov:
MT5のビルド番号は何番ですか?
1525.
 
Rashid Umarov:

再現性のあるブレーキ事例を発見!

FIBOGroup-MT5 Server、デモ、基本通貨USD、Netting、ビルド1525。

まだテストスクリプトを 実行しています(司会者がバイブルを更新する場合は動作します)。2回連続実行のログ

2017.02.09 09:28:19.404 Scripts script MT4Statement (EURUSD,M1) loaded successfully
2017.02.09 09:28:19.414 Trades  '1013175': exchange buy 1.00 EURUSD at market
2017.02.09 09:28:20.499 Trades  '1013175': deal #1542820 buy 1.00 EURUSD at 1.06721 done (based on order #2246203)
2017.02.09 09:28:20.499 Trades  '1013175': order #2246203 buy 1.00 / 1.00 EURUSD at 1.06721 done in 1078.071 ms

2017.02.09 09:28:20.499 Trades  '1013175': modify #2246203 buy 1.00 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.06621, tp: 1.06821
2017.02.09 09:28:20.557 Trades  '1013175': modify #2246203 buy 1.00 EURUSD -> sl: 1.06621, tp: 1.06821 done in 57.672 ms
2017.02.09 09:28:20.557 Trades  '1013175': exchange sell 1.00 EURUSD at market, close #2246203 buy 1.00 EURUSD 1.06721
2017.02.09 09:28:21.624 Trades  '1013175': deal #1542821 sell 1.00 EURUSD at 1.06720 done (based on order #2246204)
2017.02.09 09:28:21.624 Trades  '1013175': order #2246204 sell 1.00 / 1.00 EURUSD at 1.06720 done in 1067.918 ms

2017.02.09 09:28:21.627 Trades  '1013175': buy limit 1.00 EURUSD at 1.06621
2017.02.09 09:28:21.687 Trades  '1013175': order #2246205 buy limit 1.00 / 1.00 EURUSD at market done in 60.036 ms
2017.02.09 09:28:21.687 Trades  '1013175': cancel order #2246205 buy limit 1.00 EURUSD at 1.06621
2017.02.09 09:28:21.747 Trades  '1013175': cancel #2246205 buy limit 1.00 EURUSD at market done in 59.555 ms
2017.02.09 09:28:21.747 Scripts script MT4Statement (EURUSD,M1) removed
2017.02.09 09:28:31.214 Scripts script MT4Statement (EURUSD,M1) loaded successfully
2017.02.09 09:28:31.227 Trades  '1013175': exchange buy 1.00 EURUSD at market
2017.02.09 09:28:32.302 Trades  '1013175': deal #1542822 buy 1.00 EURUSD at 1.06723 done (based on order #2246206)
2017.02.09 09:28:32.302 Trades  '1013175': order #2246206 buy 1.00 / 1.00 EURUSD at 1.06723 done in 1068.513 ms

2017.02.09 09:28:32.304 Trades  '1013175': modify #2246206 buy 1.00 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.06623, tp: 1.06823
2017.02.09 09:28:32.364 Trades  '1013175': modify #2246206 buy 1.00 EURUSD -> sl: 1.06623, tp: 1.06823 done in 60.516 ms
2017.02.09 09:28:32.364 Trades  '1013175': exchange sell 1.00 EURUSD at market, close #2246206 buy 1.00 EURUSD 1.06723
2017.02.09 09:28:33.429 Trades  '1013175': deal #1542823 sell 1.00 EURUSD at 1.06722 done (based on order #2246207)
2017.02.09 09:28:33.432 Trades  '1013175': order #2246207 sell 1.00 / 1.00 EURUSD at 1.06722 done in 1068.809 ms

2017.02.09 09:28:33.432 Trades  '1013175': buy limit 1.00 EURUSD at 1.06623
2017.02.09 09:28:33.492 Trades  '1013175': order #2246208 buy limit 1.00 / 1.00 EURUSD at market done in 58.742 ms
2017.02.09 09:28:33.492 Trades  '1013175': cancel order #2246208 buy limit 1.00 EURUSD at 1.06623
2017.02.09 09:28:33.549 Trades  '1013175': cancel #2246208 buy limit 1.00 EURUSD at market done in 57.722 ms
2017.02.09 09:28:33.549 Scripts script MT4Statement (EURUSD,M1) removed

TRADE_ACTION_DEALは他のモードより20倍も遅い!再生します。

 
prostotrader:
2016.12.14 22:01:41.371 Trades  'xxxxx': cancel order #49932961 buy limit 1.00 CHMF-6.17 at 92501 placed for execution in 64873.549 ms

この場合、OrderSendはほぼ瞬時にtrueを返しますが、65秒が観測された(ENUM_ORDER_STATE)::OrderGetInteger(ORDER_STATE) ==ORDER_STATE_STARTED ということで理解してよいでしょうか。

このチェックをあなたのコードに追加してください。

 
fxsaber:

この場合、OrderSendはほぼ瞬時にtrueを返しますが、65秒が観測された(ENUM_ORDER_STATE)::OrderGetInteger(ORDER_STATE) ==ORDER_STATE_STARTED ということで理解してよいでしょうか。

このチェックをあなたのコードに追加してください。

OrderSendAsyncを使用しています。

しかし、1秒以上の遅延が発生した場合、注文状況を確認します。

case ORDER_BUSY:
      switch(o_status)
      {
        case BUY_ORDER:
          BuyOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Buy ордер в переходном состоянии.");
        break;
        case SELL_ORDER:
          SellOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Sell ордер в переходном состоянии.");
        break;
      }
    break;
 
prostotrader:

OrderSendAsyncを使用しています。

しかし、1秒以上の遅延があった場合、注文の状況を確認する

case ORDER_BUSY:
      switch(o_status)
      {
        case BUY_ORDER:
          BuyOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Buy ордер в переходном состоянии.");
        break;
        case SELL_ORDER:
          SellOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Sell ордер в переходном состоянии.");
        break;
      }
    break;
ということは、やはりStartedなんですね。
 
fxsaber:
だから、スターテッドはまだホバリングしているんです。

というのも、何とも言えないんです。

switch(ord_data.state)
      {
        case ORDER_STATE_STARTED:
        case ORDER_STATE_REQUEST_ADD:
        case ORDER_STATE_REQUEST_MODIFY:
        case ORDER_STATE_REQUEST_CANCEL:
          ord_data.real_state = ORDER_BUSY;
        break;

        case ORDER_STATE_PARTIAL:
          ord_data.real_state = ORDER_EXIST_PARTIAL;
        break;
                                          
        case ORDER_STATE_PLACED:
          ord_data.real_state = ORDER_EXIST;
        break;
      }


4つのオプションのうち1つ

case ORDER_STATE_STARTED:
        case ORDER_STATE_REQUEST_ADD:
        case ORDER_STATE_REQUEST_MODIFY:
        case ORDER_STATE_REQUEST_CANCEL:
 

最大の疑問はこれ

6~7msで、あとはブレーキが理解できない(917.779)

2017.02.10 14:07:32.008 Trades  'xxxxx': buy limit 2.00 BR-7.17 at 56.89 placed for execution in 7.124 ms
2017.02.10 14:07:32.020 Trades  'xxxxx': cancel order #52361023 buy limit 2.00 BR-7.17 at 56.89
2017.02.10 14:07:32.025 Trades  'xxxxx': accepted cancel order #52361023 buy limit 2.00 BR-7.17 at 56.89
2017.02.10 14:07:32.026 Trades  'xxxxx': cancel order #52361023 buy limit 2.00 BR-7.17 at 56.89 placed for execution in 6.297 ms
2017.02.10 14:08:00.711 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.40 sl: 0.00 tp: 0.00 -> 58.23, sl: 0.00 tp: 0.00
2017.02.10 14:08:01.628 Trades  'xxxxx': accepted modify order #52360848 sell limit 1.00 BR-9.17 at 58.40 sl: 0.00 tp: 0.00 -> 58.23, sl: 0.00 tp: 0.00
2017.02.10 14:08:01.629 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.40 sl: 0.00 tp: 0.00 -> 58.23, sl: 0.00 tp: 0.00 placed for execution in 917.779 ms
2017.02.10 14:08:04.005 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.23 sl: 0.00 tp: 0.00 -> 58.08, sl: 0.00 tp: 0.00
2017.02.10 14:08:04.011 Trades  'xxxxx': accepted modify order #52360848 sell limit 1.00 BR-9.17 at 58.23 sl: 0.00 tp: 0.00 -> 58.08, sl: 0.00 tp: 0.00
2017.02.10 14:08:04.012 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.23 sl: 0.00 tp: 0.00 -> 58.08, sl: 0.00 tp: 0.00 placed for execution in 6.677 ms
理由: