標準的な機能/アプローチの代替実装 - ページ 2

 
Renat Fatkhullin:

2016年までに、ほとんどのC++コンパイラが同じレベルの最適化に到達しています。

MSVCはアップデートのたびに改善されていることに疑問を感じさせますし、コンパイラとしてのIntel C++はマージされましたが、大規模プロジェクトにおける「内部エラー」からまだ回復していません。

1400 ビルドでのコンパイラのもう一つの改良点は、複雑なプロジェクトのコンパイルをより高速に行えるようにしたことです。

この対談がなければ、おそらく私たちはこのことを知ることはなかったでしょう。もっと素晴らしい作品の情報をお願いします。
 
fxsaber:

トピックについて標準の関数では間違った出力が出ることがあるので、代替の関数を作る必要があります。以下は、SymbolInfoTickの代替の例です。

テスターの各イベントNewTickで SymbolInfoTickを呼び出し、Volumeフィールドを合計することで、株価の回転数を知ることができます。でも、ダメなんです!もっと論理的なMySymbolInfoDoubleを作らなければならない。

あなたがクリエイターであるプログラミングへようこそ!

私たちは、あなたがやりたいことを何でもできる、最も完全なツールを提供します。

 
Renat Fatkhullin:

身の回りのものをすべて最適化することができるのです。

終わりのない作業です。しかし、99%は経済的に成り立たないのです。

ここでは最適化の話ではなく、古い機能を新しい現実に対応させるということです。確かに、NormalizeDoubleを 全く書かないという手もありますね。そして、人々は自分なりのバリエーションを作っていたことでしょう。でも、時間短縮のために作ったんですよね。今はまだ十分ではありません。そして、同じ純正工具を満足させるために、古い自転車を修理するのも良いだろう。
 
fxsaber:
これは、最適化ではなく、古い機能を新しい現実に対応させることです。NormalizeDoubleを全く書かないという手もあったことは明らかです。そして、人々は自分なりのバリエーションを作っていたことでしょう。でも、時間短縮のために作ったんですよね。今はまだ十分ではありません。そして、同じ純正工具を満足させるために、古い自転車を修理するのも良いだろう。
ありがとうございます。確認して、ライブラリを変更できるかどうか確認します。
 

ところで、少し前に@iliyasが、コンパイル時に多くのシステム関数をMQL5のソースコードとして挿入し、インライン化と最大限の最適化に参加させることを提案しました。

最初はそのアイデアを評価していなかったのですが、今となっては素晴らしいことだと思います。同じMSVCがやっている。

 
Renat Fatkhullin:
ありがとうございます。ライブラリを変更できるかどうか、確認してみます。

あなたは誤解している。ライブラリではなく、NormalizeDouble。過負荷を加えること。

double NormalizeDouble( double Value, double TickSize );

TickSize = 25, VolumeStep = 0.5で価格とロットを正規化する場合。

例えば、正規化すると次のようになります。

NormalizeDouble(Price, 0.00001) // Нормализация до пятого знака
NormalizeDouble(Price, 10.0) // Нормализация цены для RTS-9.16
NormalizeDouble(Price, 25.0) // Нормализация цены для MIX-9.16
 
Renat Fatkhullin:

ところで、少し前に@iliyasが、コンパイル時に多くのシステム関数をMQL5のソースコードとして挿入し、インライン化に参加させて最適化を最大化することを提案しました。

すぐには評価できませんでしたが、今となっては素晴らしいアイデアだと思います。同じMSVCがやっている。

import ex5が最適化の弊害であることが判明。

プリプロセッサー機能にご注目ください

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

エニュメレーションを順次行うにはどうしたらよいですか?

アレクセイ・ナヴォイコフ さん 2016.09.01 23:20

マクロは引数の数が決まっていて、引数の数は8個までなので、enumの値は3つしかないのですが、MQL5で上記の原理を実装済みです。

理論的な外観については、enumを解析するための関数を社内で作った方が早いでしょう。 開発者はすでに何かを作ると約束しています。


その結果、非常に巧妙で使い勝手の良い構造を作り上げることができました。

 
fxsaber:

あなたは誤解している。ライブラリではなく、NormalizeDouble。過負荷を加えること。

TickSize = 25, VolumeStep = 0.5で価格とロットを正規化する場合。

例えば、正規化すると次のようになります。

これでは、過大な負荷をかけることはできません。同じファンクションシグネチャーを使用しています。

しかし、考え方は明快で、ダニ粒状化を考慮した正規化の機能です。

 
Renat Fatkhullin:

これでは、過大な負荷をかけることはできません。同じファンクションシグネチャーを使用しています。

そこに問題はなさそうです。あるバリエーションでは、第2パラメータはint(was)であり、他のバリエーションではdouble(will appear)である。

しかし、考え方は明快で、刻みの粒状性を考慮した正規化の機能である。

そのとおりです。
 

エフエックスセイバー

あなたのコードにエラーがあります