記事"MеtaTrader 5 チャート上の水平図"についてのディスカッション

 

新しい記事 MеtaTrader 5 チャート上の水平図 はパブリッシュされました:

水平方向の図は、ターミナルのチャート上で一般的ではありませんが、使用することができます。例えば、特定の期間のボリュームや価格分布を表示するインジケータを開発するとき、様々なマーケットデプスのバージョンを作成するときなどです。 この記事では、グラフィカルなプリミティブの配列としての水平ダイアグラムの構築と管理を検討します。

  1. いくつかの図があるかもしれません (ほとんどの場合そうです)。
  2. 興味があるほとんどの図は、足で構成されます。
  3. ダイアグラム足は水平方向に配置されます。

このような図がどのように見えるかを確認するために、よく知られた例を使用してみましょう。



以下に別の例を示します。 グラフィカルなプリミティブによって描画される同じダイアグラム:


この場合は、日によるティックボリューム分布を表示するインジケータです。 この例では、開発者が解決すべきタスクを明確に示しています。

  • 複数のグラフィカルオブジェクトを作成し、一意の名前を割り当てて、チャート上に配置します。
  • 必要に応じてオブジェクトをスケールおよび移動します。
  • インジケータのタスクが完了したら、チャートから削除します。

もう一度、図の配列について話すことができるように、図があることに注意してください。

直近の例を次に示します。

作者: Andrei Novichkov

 

なぜインクルード・ファイルをインクルード・フォルダではなく、インジケータのあるディレクトリに置こうと考えたのでしょうか?

#include "HDiagsE.mqh"

インクルード・フォルダではなく、インジケータのあるディレクトリにインクルード・ファイルを置こうと考えたのでしょうか?


サイトからダウンロードすると、インクルードファイルはインクルードフォルダで開かれます。

#include "HDiagsE.mqh"

の行を

#include <HDiagsE.mqh>
削除済み  
Vladimir Karputov:

そのため、初心者はディレクトリに悩まされることなく、インジケータのあるフォルダにすべてのファイルを放り込むだけでいい。ご覧のように、アーカイブはフォルダを解凍する構造を提供しません。

 
Alexey Kozitsyn:

そのため、初心者はディレクトリに煩わされることなく、すべてのファイルをインジケータのあるフォルダに放り込むだけでいい。見ての通り、アーカイブはフォルダを展開する構造を提供していない。

そのため、初心者はそれに引っかかってしまう。手順としては、インクルードされたファイルをクリックする - ダウンロードされ、ブラウザの下部に表示される - ダウンロードされたファイルをクリックする - ファイルがMetaEditorで開かれる(MetaEditorはインクルードされたファイルを正しいインクルードディレクトリに配置済み)。

削除済み  
Vladimir Karputov:

まさに初心者がこれに引っかかる方法だ。手順としては、インクルードされたファイルをクリックする - ダウンロードされ、ブラウザの下部に表示される - ダウンロードされたファイルをクリックする - ファイルがMetaEditorで開かれる(そしてMetaEditorはインクルードされたファイルを正しいインクルードディレクトリにすでに配置している)。

あなたがダウンロードした方法で、他のみんなもダウンロードすると本当に思っているのですか?例えば私は、まずアーカイブをダウンロードし、それからインジケーターファイルを 開き、インクルードファイルが引用符で囲まれているのを確認しました。そしてメタエディターはどこにも何も置かなかった。

一般的に、無駄な対話。どちらの方法でもできるのだから、議論する必要はない。

 
一般的に、記事は良いですが、特に初心者に有用であろう、アイデアは明確以上に開示されているが、重要性を開示し、もちろん、自分自身のために何も新しいが開かなかった、非常に望んでいたが(そのようなでした...しかし、それでも記事のおかげで!
削除済み  

正直なところ、私は別の実装を見てみたい。絶対にすべて

1.キャンバス上にヒストグラムを描画する実装がない(それぞれ、キャンバス上のチャートとグラフ・プリミティブからのチャートの更新速度の比較がない)。論理的には、MT5チャート上の水平ヒストグラムについて書くなら、少なくともこの描画方法を指摘すべきですが;

2.なぜティックボリュームについてしか話さないのですか?私は、例えば、あなたのインジケータを実際の出来高に適用したいのですが、できないようです。

3.私が理解する限り、すべてのチャートは「価格/時間」バインディングで構築されています。ピクセル・バインディングについては言及されていません。ヒストグラムの実装も;

4.このフレーズには疑問があります。「先ほど、水準数を計算するためには、価格間隔を所定の水準数に分割するだけでなく、より良い方法が使用されることが言及されました。なぜより良いのでしょうか?1, 10 и 100?なぜユーザー自身にレベル数を設定させないのですか?

5.タイマーについて:

  • iTimer パラメーターには、タイマーのトリガー頻度が含まれています。トリガーされると、新しいローソクの作成がチェックされ、必要なアクションが実行される。ここには、PeriodSeconds(SourcePeriod)コールの結果を入れることができます。しかし、デフォルト値は1秒であり、これは新しいローソク足が出現する瞬間をより正確に判断するためである。

なぜ新しいローソク足が出現する瞬間を判断するためにタイマーを起動し、追加のリソースを費やすのでしょうか?それはOnCalculate()の中で行うことができる(そして行うべきである)。また、IsNewCandle()関数を毎秒呼び出さなくてもよい(その上、とても重い);

6.ダイアグラムでチャートをスクロールすると、アーティファクトが飛び出す:


7.7.新しいi関数を使用しているため、新しいビルド(1881年以降)でもこれらすべてが動作することに言及していない;

8.8.コードがまったくコメントされていない。自分のためにあなたのコードを修正しようとする人たちをまったく軽んじている。もし記事なしでファイルを開くだけなら、すべてを理解するのに多くの時間がかかるだろう;

9.インジケータファイルをコンパイルするとき、警告が表示される。ユーザーは疑問を持つかもしれません;

10.「添付されたインジケーターは、デモやトレーニングを目的としたものであり、実際の取引では使用できないことをお忘れなく。- 興味深い機能です。最後の最後になぜ適用できないのですか?

11."特に、データソースとして使用されるタイムフレームにアーティファクトがあってはならないという事実に注意を払うべきである。"- この点についても明確にしていただきたい。どのような "アーティファクト "のことを言っているのか;

12.最も重要なことを忘れるところだった。収集されたデータの正しさはどのように保証されるのでしょうか?あなたはCopyTicks()を使っていない。では、構築されたレベルの正しさの検証はどのように行われるのでしょうか?

そして、これが問題の全リストではないと確信している。

一般的に、IMHOは、これはチュートリアル記事としては不成功な実装だと思います。初心者には難しいだろうし、経験豊富な人ならもっと早く(そしてより良く)自分で書けるだろう。

 

そのすべてに一度に答えようと思う。)

もちろん、この記事が経験豊富な開発者に根本的な新しさを提供することはないだろう。提案するコードは、私の理解と能力の及ぶ限り、このようなダイアグラムを構築する非常に面倒なプロセスを自動化するものです。私は、範囲オーバーランなどでいろいろな種類のエラーをキャッチするのにうんざりした後で、これを実行することに決めた。

インクルードファイルはincludeの中に入れてもよかったのですが、誰もがインクルードファイルをそこに置きたがるので、このフォルダを乱雑にしないことにしました)。

キャンバスについて。私はそれについて新しいことは何も言えないので、やらなかった。キャンバスに絵を描くことに関しては、私の前にとても役に立つ記事をたくさん書いてきた。この点はすでに十分にカバーされているという結論に達した。

ティック・ボリュームを例として取り上げる。コードとしては、いくつかの配列を渡すことが重要で、それだけである。例えば、このコードを使っていくつかの暗号取引所のタンブラーを作成する。

なぜピクセル・バインディングがないのか。これはキャンバス側の問題だ。そしてなぜキャンバスがないのか、私はこう答えた。

コードがコメントアウトされていない理由。コメントアウトはされていたが、Doxygenと併用するためだった。私はそれを削除しなければならなかった。そして英語でコメントしなければならなかっただろう。コードは自動翻訳されないし、私はそれが得意ではない。googleを使うのは最良の選択ではない。

なぜレベル数を選択できないのですか?記事の内容とは違う。記事にはそう書いてある。この記事はグラフィカルプリミティブの配列の描画と管理について書かれているのであって、インジケータの書き方について書かれて いるのではない。開発者は初期データをどのように取得するかを決定する。この記事では、この作業は二次的なものであり、したがってそれほど重要ではないと考えている。このコードを使った実用的なインジケータはすぐに市場に出回るでしょう。

トレーニング用インジケータは、データ・ソースの状態に依存するため、実際の取引に適 用することはできません。トレーニング用インジケータでは、データソースが完璧な状態であることが前提です。しかし、実際にはそうではありません。人生にはタイムフレームに穴があり、「アーティファクト」について書いたとき、私はそのことを考えていました。私は、実際の取引に使えるような指標を記事に添付することはありません。

CopyTickはここでは使わないし、必要ないと考えている。超高精度のチャートをキャンバスに描くことには意味があるのかもしれないが、かなりシビアな丸めを使うこのケースでは必要ない。

削除済み  
Andrei Novichkov:

一度に全部答えてみるよ ))

あなたは、近似的に、しかも実際には存在しない環境でも機能する「抽象的なもの」を書いていることがわかった。言葉はない。

そしてレンダリングは、上で指摘したように、曲がっている。製品のPRとしては非常に良い。

 
Alexey Kozitsyn:

つまり、あなたはおおよその方法で、しかも実際には存在しない環境で機能する「抽象的なもの」を書いたわけだ。言葉を失う。

レンダリングも、上で指摘したように曲がっている。製品のPRとしては非常に良い。

いや、うまくいかない。

それに、言葉がないなら書く必要はない。確かに何を書いているのかわからない。

削除済み  
Andrei Novichkov:

いや、うまくいっていない。

言葉がなければ書く必要もない。確かに何を書いているのか完全に理解できていない。

それで終わりだよ。理解し切れていないのかもしれない。ただ、こんな大きなタイトルのもとでは、もっともっと多くのことを見てみたいものだ。幸運を祈る。