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

 
fxsaber:

Anton さん、多くの標準的な関数では、文字の代わりにNULLを指定することができます。実行速度に影響はないのか?

それとも、Terminal/Testerでは違いがないのでしょうか?

Symbol()、_Symbolの項目は、NULLと同等です(シンボル名の代わりにNULLが許される場合)。

この場合、現在のシンボルのプロパティはキャッシュされているため、現在のシンボルの存在、マーケットウォッチでの現在のシンボルの存在、現在のシンボルの不要な呼び出しプロパティについての余分なチェックは行われません。

つまり、Symbol()、_Symbol、NULLの代わりに単純な文字列パラメータを指定した場合、プログラム全体をチェックし、なおかつプロパティを要求します。

 
Slava:

Symbol()、_Symbolの項目は、NULLと同等です(シンボル名の代わりにNULLが許される場合)。

この場合、現在のシンボルのプロパティがキャッシュされるため、現在のシンボルが存在するかどうか、マーケットウォッチに現在のシンボルが存在するかどうか、現在のシンボルのプロパティの不要な呼び出しはありません。

Slavaさん、コメントお願いします。株の場合、シンボル指定でのティック価格は「0」に設定されています。そして、サポートにはこう書かれています。

"技術部門から確認を受けた。銘柄の「ティック価格」パラメータを記入することはできませんので、ご了承ください。値はデフォルトで0になります。
ご連絡ありがとうございました!"


本当にそうなのでしょうか?株式だけティック価格が0になるのは、Symbol Specificsに書いてあるのですが?

 
Vladimir Karputov:

Slavaさん、コメントお願いします。株では、シンボル指定のティックプライスが「0」になっています。そして、サポートにはこのように書かれています。

"技術部門から確認を受けた。銘柄の「Tick price」パラメータを記入することはできませんので、ご了承ください。値はデフォルトで0になります。
ご連絡ありがとうございました!"


本当にそうなのでしょうか?株式だけティック価格が0になるのは、Symbol Specificsに書いてあるのですが?

そうですね、ニュアンスはありますね。

ゼロが出展されると、自分で計算しなければならない。計算式については、ブローカーにお尋ねください

 
fxsaber:

スキップなしで LATE ticks を取得する問題は、CopyTicks* を介してのみ解決されるようになりました。このように広範囲に及ぶ問題に対して、非常に面倒な仕組みになっています。

ちなみに、本日のMT5最新リリース版のフレッシュログより。

Time[Main.mqh 162 in ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 704931 mcs.
Time[Main.mqh 162 in ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 704684 mcs.
Time[Main.mqh 162 in ProcessTicks: CopyTicksRange(_Symbol,OldTicks,COPY_TICKS_INFO,LastTickParsed.time_msc)] = 704425 mcs.

1つのシンボルに3つのEAをぶら下げ、それぞれのチャートに表示させていたのです。そして、リクエストは刻々と 続く。このようなスパイクはもちろんまれですが、実際、最後のティックから来る新しいティックのリクエストは1回で700ミリ秒でした。

 
Renat Fatkhullin:

そうではありません。

どの番組でも必ずランダムな遅れが発生します。すべてを記録し始めると、Windowsの現実にぞっとすることでしょう。これについては、すでに何度か詳しく説明しています。

私たちも一時期、システムのWinAPI関数で0msではなく60~80msのランダムバーストが発生し、驚かされたことがあります。


現在、Windowsソリューションのほとんどを特別に縮退したWindows Server 2019 Coreバージョンに、.NET CoreのWebプロジェクトをLinuxに 一斉に移行しています。これにより、システムリソースの大幅な節約と、システムレイテンシーの大幅な短縮を実現しました。

MataTrader 5の端末をスキミングする最初のステップは、リソースの消費量をその場で把握するタスクマネージャーの導入に着手することでした。自分たちのために、より多くの情報を集めているのです。

すでに明らかになっていることですが、私たちは

  • 閑古鳥が鳴く
  • オーバースケーリング
  • キャッシュを増やしすぎる
次のリリースまでに、リソースの問題を順次修正していきます。

リナックスターミナルもあるといいですね ))))

 
Slava:

そうですね、ニュアンスはありますね。

ゼロの場合は自分で計算する必要があります。計算式は証券会社に聞いてください。

SymbolInfoXXXXで すべて正しい。問題は、なぜ仕様書では株式に'0'が設定されていると言うのか、であった。1ティック=1セントと明確に言われています。しかし、それは仕様書に'0'を設定する理由にはならないのでは?

 
fxsaber:

関数内部では、やはり対応するテロップ文字にジャンプする必要があります。この時、文字列の変数を解析するのです。NULLで行う必要はありません。

その時に 確認しましたが、大きな速度差は見られませんでした。ご自身でご確認ください

 
Slava:

Symbol()、_Symbol、NULLの代わりに通常の文字列パラメータが指定された場合、プログラム全体をチェックし、プロパティも問い合わせます。

情報ありがとうございましたこのようにしたほうがいいということがわかりました。

// Быстрый SymbolInfoTick.
bool SymbolInfoTickFast( const string &Symb, MqlTick &Tick )
{
  return((Symb == _Symbol) ? SymbolInfoTick(_Symbol, Tick)
                           : SymbolInfoTick(Symb, Tick));
}
 
fxsaber:

情報提供ありがとうございましたこのようにしたほうがいいということがわかりました。

技術的なことは抜きにしても、機能でどう違うことができるのか、想像がつかなかった...。

標準のSymbolInfoTick()よりも高速に構築するにはどうしたらよいでしょうか?

 
Artyom Trishkin:

標準のSymbolInfoTick()よりも速いとはどういうことでしょうか?

もっと早く