MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
fxsaberが 正しい - 1つの 選択肢があります。
EXPRが2回計算されるなど、ちょっとキッチュな感じもしますが、それでも柔軟性は高いと思います。普遍的とは言い切れない(算術型のみ。誤差の値が等しくなければならないので、不愉快です。明示的な構造体/関数の特殊化によって回避しようとしたが、不可能である。
ごあいさつ
新しいトピックを開きたいのですが、問題を定式化できません...。問題があるんです )))しかし、素材はなかなか新鮮で面白い
あなたは素晴らしい仕事をしている、それを確定したいと思います - ユーザビリティ(@fxsaberは 1つのinluderで一度接続されたすべての彼の作品を持っている)は、実用的です!それは、あなたがそれを行うことができます。
また、プロフェッショナルに見せるために、C++ / C#の構文を使用する必要があります(または、可能な限り近づける必要があります)。
私の意見を言わせてもらうと
今あるものから静かに作っていきましょう。泣き言を言わず、バグを見つけるのを手伝ったり、修正を期待してお願いしたりしましょう - それらは修正され、新しい素晴らしい機能が現れます。
この考え方には賛成です。
---------
すでに最初のバージョンから一部、何らかのキャッシュを持っています。つまり、最初の10個のジグザグの極値について、時間、極小値の値、極大値の値の配列を作りました。
MT5用バージョンでは、バー番号を含む配列も追加しました。最初の10個の極値について。ほとんどの場合、これが役に立ちます。MT5では、非標準のバインディングのみが影響を受けます。
21のタイムフレームすべてについて、利用可能な履歴のフルキャッシュを作成しない。この方法では、コンピュータのメモリが足りなくなります。
理解するために:一部のマニアは、1つのチャートにMT4用の最大9つの指標を表示します。様々な通貨ペアのチャートが同時に開設されています。そして、全員がインジケーターを9枚持っています。この指標のアプリケーションは、Putniukが作成したシステムDML&EWAに対して実装されています。彼自身、最大で72個のインジケータを出力している。つまり、8つの通貨ペアで。
このような使い方をする場合、21個のTFと28個のバッファでキャッシュを追加すると、メモリに非常に大きな負荷がかかります。
これはあくまでメモリ負荷を考慮したものです。iTime, iLow, iHight, iClose, iBarShift関数の代わりにキャッシュを使用するために大規模なコードを再設計するのは面倒です。
=================
そんなマラソンを何度か経験したことがあります。
1.メインプログラムの本体に、複数の外部ジグザグインジケーターを含めることについてのマラソン。市場に受け入れてもらうために、外部指標を廃止した。
2.すべてのシングルバッファージグザグをダブルバッファに変換する。これには約半年を要した。
3.グラフィカルインターフェースの作成 トータルで2年以上かかったかな。約3年。さらに、グラフィカルなインターフェースには、もっと面白いアイデアがあります。でも、まだ実行するほどの勇気はないんです。
4.元々1年前にMT4からMT5への翻訳を試みた。その時は成功しなかった。今ならできる。しかし、翻訳の質には満足していません。
他のマラソン大会もありました。
キャッシュを作ると、行き詰まることがあります。手を出すと危険...。
------------
アーテム あなたの考え方(前掲書)は全面的に支持します。
...MQL5言語ガイドより引用。データアクセスの組織化という見出しで。
"...データアクセシビリティ
HCCフォーマットやHC Readyフォーマットであっても、これらのデータをグラフに表示したり、mql5-programで使用したりすることが必ずしも無条件に可能であるとは限りません。
mql5-programから価格 データや指標値にアクセスする場合、ある瞬間、ある時点から利用できることが保証されていないことに留意する必要が あります...」。
--------------
問題は残る。
プログラムのさまざまな部分で、見積もり履歴に数百回アクセスすることができます。番組表は約5万文字。
履歴へのアクセスの仕様上、-1が返されることがあります。その結果、配列オーバーランというエラーになります。また、その他のエラーもあります。プログラムのいくつかの断片で、履歴にアクセスしたときに-1が返されるかどうかを確認しました。この場合、-1 を受け取ると、グラフィカルコンストラクションの 個々のアイテムは描画されません。数百のチェックを追加すると、履歴へのアクセスの特殊性から既に存在するラグが発生します。
MT5用のプログラムも作成することが可能です。しかし、そのためには、アーキテクチャ全体を変える必要があります。そんな悪巧みをしている暇はないのです。
そんな無駄な作業は必要ないと判断したのです。プログラムはMT4で動作します。MT5への乗り換えは考えていない。ZUP for MT5を無料化しました。
ZUPをMT5用にフリーにしました。 希望者はダウンロードして、MT5での動作を確認してください。また、MT4での私のバージョンと比較してみてください。
これで、MT5とはおさらばです。時間の無駄でしかない。
他の掲示板でも同じようなメッセージを投稿したことがあります。
また、データにアクセスできないことを再現性高く証明できるのか?
サービスデスクでは、問題の再現方法について説明しています。問題を再現するためのソースコードもあります。
==========
MQL5 ドキュメントからのテキストhttps://www.mql5.com/ru/docs/series/timeseries_access :
データの有無
HCC 形式、あるいはすぐに使える HC 形式のデータが入手できても、これらのデータをグラフに表示したり、mql5 プログラムで使用したりすることが必ずしも無条件に可能とは限りません。
mql5-programから価格データやインジケータの値にアクセスする場合、ある瞬間、ある時点から利用できることが保証されていないことを忘れてはならない。これは、MetaTrader 5がmql5-programに必要なデータの完全なコピーを保存せず、リソースを節約するために端末のデータベースに直接アクセスできるようにしたためです。
この文章をロシア語に訳すと、次のような意味になる。いつ何をしてもデータにアクセスできなくなる可能性があります。
つまり、データアクセスの中断によるエラーを回避する方法がないのです。
私はこの文章をこのように理解しています。