こんにちは、ダニエル、
多色のインジケーターで困っているのですが、あなたの記事を読んでいると、解決策をご存知かもしれません。
例えば、#property indicator_color1 clrCrimson,clrWhite,clrLime などです。
下のテスト・プログラムでわかったことは、#property indicator_color1 clrCrimson,clrWhite,clrLimeが 含まれている場合、プログラムは正しく動作するのに対し、コメントアウトした場合、プログラムは正しく動作しないということです。この場合、"高い?"時間枠を使用しているかのようにデータ・ポイントの一部だけをプロットしているか、いくつかのデータ・ポイントをスキップしているようです。 私は、複数の色が指定されている場合、property colorディレクティブが、私が識別していない属性をさらに設定しているのではないかと疑っています。
2つ目の問題は、マルチカラー・プロットを使用するための詳細と要件を明らかに理解していないことです。 ドキュメントを検索しましたが、マルチカラー・インジケータの 使用方法の概要を提供する記事は見つかりませんでした。 最初のプロットは正しく色が変わりますが、安値をプロットする2番目のプロットは、私の関数呼び出しに従って色が変わりません。このプロットが正しく動作するには、type2、color2、width2の3つのプロパティすべてが必要です。 プロパティ宣言が3ではなく2を使用している理由にも困惑しています。MladenのLaguerre Adaptive Filterインジケータを使用して、プロパティインジケータが正しく表示するためにインジケータ番号3ではなく、プロット番号2を使用していることを確認しました。
何かご提案、参考文献、ヘルプがありましたら、ぜひご連絡ください。
ありがとうございました。
何かご提案、ご参考、お力添えなどございましたら、何なりとお申し付けください。
敬具 CapeCoddah
あなたが少し混乱しているのは理解できますが、その混乱はすべて、あなたが実際にコードの詳細を見ていないことにあります。コメントにある詳細をいくつか説明してから、あなたのコードについて少し話そうと思う...。
最初のポイントは、#property indicator_colorNを使わなくても、多色のインジケータを作成することはできますが、ユーザーにとっても、あなたにとっても、より実用的で、より安全で、コードを理解し修正するのが簡単だということです。これは、#property indicator_colorN を 使用しない場合の方法です。しかし、プロパティを使用する場合、他の色を設定するためにPlotIndexSetInteger コマンドを使用する意味がないことがよくあります、たとえそのコードがあなたのもので、あなただけがそのインジケータを使用するとしても、まれに動的なカラーパターンを作成する場合を除き、あまり意味がないからです。
次に2つ目の点について:この場合の問題は、インジケータがプロットするものの数(2本の線の場合は2つ)とオブジェクトのプロパティ(この場合は線)を混同していることです。線をプロットするためには、実際には少なくとも3つの情報を宣言する必要があります。あきらめないで...勉強し続ければ、すぐに物事はクリアになる...。😁👍
では、君のコードをいくつか見てみよう...。具体的な直し方を紹介するつもりはない(これをやると面白くなくなる......😁👍✌)が、次の事実に注目してほしい、これは重要なことだ:
Buf=Set_IndexBuffer5(Buf, dataHi, INDICATOR_DATA , DRAW_COLOR_LINE , 4 , "High" , clrYellow , clrWhite , clrDodgerBlue ); Buf=Set_IndexBuffer5(Buf, dataHic, INDICATOR_COLOR_INDEX ); Buf=Set_IndexBuffer5(Buf, dataLo, INDICATOR_DATA , DRAW_COLOR_LINE , 4 , "Low" , clrYellow , clrWhite , clrDodgerBlue ); Buf=Set_IndexBuffer5(Buf, dataLoc, INDICATOR_COLOR_INDEX );
あなたのコードで2つのことに印をつけたことに注目してください...それでは、グラフ上で再生されたときに何が起こっているのか見てみましょう...。
LOWタグが表示されていないという事実は、使用されているカラーパターンが#property indicator_color 2で宣言されているものであることを示しています。これは、PlotIndexSetInteger コールの使用によって動的に行われます......奇妙に思えますが......これが起こっていることなのです......。
もし、PlotIndexSetIntegerを使って行オブジェクトのデータをダイナミックに宣言したいのであれば、#property indicator_color コンパイル・コマンドをシーンから削除することができます。
さて、上の画像を見て、#property indicator_colorで使っている色と比較してほしい......これらの色を注意深く見てほしい......そうすれば、そこに何か奇妙なものがあることに気づくだろう......もう一度言うが、楽しみを失うなとは言わないが、どれも繰り返さずに、異なる色を使ってみてほしい......繰り返すと、どこに間違いがあるのか理解するのが難しくなる......。😁👍
さて、最後に細かいことを一つ:いくつかのポイントだけをプロットして、他のポイントを飛ばしていると思うのは、2つの理由が考えられます:色パターンがグラフの背景と対照的でない。グラフの背景と対照的な色を使うようにしてください。もう一つは、実際にはそうではないと思いますが、OnCalculeイベントで失敗している可能性があります。
こんにちは、ダニエル、
描画特性はMQ4のようにバッファ仕様で定義されると思っていたのですが、少なくともDRAW_COLOR...仕様では、描画特性はシーケンシャルプロット識別子で定義されるのですね。さらに、indicator_colorXプロパティは実際には2つの機能を持っており、まず色 数をカウントして設定し、次に指定された各色を適切な配列位置に設定します。2つのファイルを添付します。1つはColor Testで、現在正しく動作していますが、さらに改良が必要です。もう1つはMLADENのMACD Original2_1を少し修正したものです。 Mladenのプログラムは、2つのプロットを定義していますが、1つのカラー・インデックス・バッファしか使用しておらず、興味深いものです。
ご協力ありがとうございました。

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事「単一チャート上の複数インジケータ(第04部): エキスパートアドバイザーに進む」はパブリッシュされました:
以前の記事では、複数のサブウィンドウでインジケータを作成する方法を説明しました。これは、カスタムインジケータを使用するときに興味深いものになります。今回は、エキスパートアドバイザーに複数のウィンドウを追加する方法を説明します。
OOP(オブジェクト指向プログラミング)を使用して新しいものを作成することにしたのは、このアプローチを使用するとセキュリティと継承を含む大きなメリットがあることをすでに知っていたからです。ポリモーフィズムもありますが、これは後で両建て注文システムを作成するときに使用します。この特定の場合、OOPのメリットの1つである継承を使用します。C_TemplateChartはすでに完全に機能するクラスです。これを見れば、すべてを再プログラミングする手間をかけたり、クラスが他の場所で使用できなくなるリスクを冒してクラスにコードを追加したくはなくなるでしょう。解決策は、元のコードをまったく変更せずに新しいコードまたは関数を追加できる継承を使用することです。
継承を使用することには、すでにテストされたコードはテストされたままである、コードサイズを均等に増やさずに複雑さを増す、実際にテストする必要があるのは新機能だけである、変わらないものは単に継承されて安定性が得られるといった多くのメリットがあります。言い換えれば、最小限の労力で物事を改善し、最大限のセキュリティを持つことができます。これを理解するために、下の図を見てみましょう。
作者: Daniel Jose