MT5とスピードの関係 - ページ 32

 
Renat Fatkhullin:

このコラムの状況について、ご回答をお願いします。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MetaTrader 5の新バージョン(ビルド2560):組み込み学習システムの改善

fxsaber, 2020.08.16 23:02

取引履歴→ポジション→コメント欄が全取引で空欄になっている。これは間違いではないでしょうか。

空っぽなだけでなく、使用可能なスペースを大きく食っている。

 
fxsaber:

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state

OrderSendAsyncが成功した後、Started-stateは発生しないのでしょうか?

ステータスは発生しても、チケットは発生しない。

注文は単に形式的な正誤 チェックをクリアしただけで、市場とのマッチングすらできていない。非同期オーダーはパイプライン上で渡されただけで、その運命はどこかで決まるのだ。

 
fxsaber:

このコラムの状況について、ご回答をお願いします。

空いているだけでなく、使用可能なスペースを大きく食っているのです。

はい、その通りです。

履歴の案件から仮想ポジションを収集する際に、コメントを正しく移動させることを忘れていた。直そう。

 
Renat Fatkhullin:

状態は発生しうるが、チケットは発生しえない。

OrdersTotal() は変化しないので、この状態を見ることはできません。

 
fxsaber:

OrdersTotal()は変化しないので、この状態を見ることはできません。

行方不明のドアをノックしてはいけない。

私は、「注文が形式的に正しいかどうかをチェックし、どこかに送信した」ということを詳しく説明しました。このオーダーには番号がなく、ベルトコンベアの次のステップに渡されただけである。実行キューを通過して初めて番号が付与される。

非同期パーセルでこれ以上情報を得ることはできません。マーケット/トレーディングのステータスは、しばらくして非同期リクエストのステップバイステップの詳細を受け取るまで変化しませんが、これはOnTradeTransactionで キャッチできます。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Renat Fatkhullin:

不在のドアを叩いてはいけない。

私は、「注文が形式的に正しいかどうかをチェックし、どこかに送信した」ということを詳しく説明しました。このオーダーには番号がなく、ただベルトコンベアの次のステップに渡されただけだ。実行キューを通過して初めて番号が付与される。

非同期パーセルでこれ以上情報を得ることはできません。あなたの市場/取引の状態は、あなたがOnTradeTransactionで キャッチできる、いくつかの時間後にあなたの非同期要求のステップバイステップの詳細を取得するまで変更されません。

分かりやすい説明ありがとうございます、調査してみます。

 

話が大きくなったかもしれません。

しかし、b2617ではこのEAがアラートに戻ってしまいました。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MT5とスピードの関係

fxsaber, 2020.09.08 19:46

// Демонстрация полного (не частичного) пересбора HistorySelect-кеша.
#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

input int inAlertTime = 1; // Нижний порог в миллисекундах

#define _B2(A) _B(A, inAlertTime)

const bool Init = EventSetTimer(1);

void OnTimer()
{
  static MqlTradeRequest Request = {0};
  static MqlTradeResult Result = {0};

  if (PositionSelectByTicket(Result.order)) // Если позиция открыта - закрываем.
  {
    Request.type = ORDER_TYPE_SELL;
    Request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
    Request.position = Result.order;
  }
  else // Иначе - открываем.
  {
    Request.action = TRADE_ACTION_DEAL;
    Request.type = ORDER_TYPE_BUY;
    Request.symbol = _Symbol;
    Request.volume = 0.1;
    Request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    Request.position = 0;
  }

  if (OrderSend(Request, Result))
    _B2(HistorySelect(0, INT_MAX));
}
 

ベータ2619のチェックをお願いします。

ヒストリーサンプリングを高速化するために、様々な最適化を行いました。強制的にキャッシュを無効化するケースがありました。

 
Renat Fatkhullin:

ベータ2619のチェックをお願いします。

ヒストリーサンプリングを高速化するために、様々な最適化を行いました。強制的にキャッシュを無効化するケースがありました。

加速はしましたが、残念ながらキャッシュの更新が1ミリ秒単位ではないため、履歴が更新されるステップごとにアラートが発生します。

2020.09.24 05:17:49.541 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:49.543 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:50.526 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:50.527 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:51.569 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:51.571 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:52.530 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:52.532 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.


ぜひ、大きな履歴で試してみてください。


このミリ秒は、キャッシュリフレッシュのためのメモリ割り当てによるものだと推測されます。他に遅くなっているものはないようです。

 
fxsaber:

分かりやすい説明ありがとうございます、調べてみます。

旗を立てろ、古い話題だ。