標準のインジケータープログラムの色を変更するにはどうすればよいですか?
今までやったことがないのですが、こんなアイデアもあります。標準のインジケータのコードを開いて、indicator_color*の 行を見つける必要があります。
みたいな感じ。
//--- японские свечи будут рисоваться цветом clrDodgerBlue #property indicator_color1 clrDodgerBlue
そして、必要な色を入れることになります。MQL5 Reference / Custom Indicators / Indicator Properties and Functions andMQL5 Reference / Standard Constants, Enumer and Structures / Indicator Constants / Drawing Styles も参照してください。
もちろん、ありがとうございます。
しかし、そのたびにコードを修正しなければならないことが判明したのです。
ミハイル
もちろん、ありがとうございます。
でも、それって、毎回コードを変えなきゃいけないんですか?
もちろん、ありがとうございます。
しかし、毎回コードを修正しなければならないことが判明したのですか?
あなたの論理には何かある。当初のご質問は
標準インジケーターの色をプログラムで変更するには?
あなたの論理には何かある。元々聞いていたんですね。
abolkさんへ
明らかに、あなたのコードから。
ミハイル
自社製」インジケーターを自分のものにする、つまり、オプションを挿入する。例えば(純粋なアイデア):入力パラメータに色を入れ、Oninit()で関数PlotIndexSetInteger(N-1,PLOT_LINE_COLOR, nColor) により処理します。リファレンスに掲載されている例が参考になります。そうすると、コード自体を編集するのではなく、インジケーターの起動時や変更時に、プロパティから希望の色を設定することができます。
ありがとうございました。
開発者がそれを考えなかったのが残念です。
このコードはうまくいくはずだったのですが、しかし・・・残念です。
params[0].type = TYPE_INT; params[0].integer_value = 10; params[1].type = TYPE_INT; params[1].integer_value = 0; params[2].type = TYPE_INT; params[2].integer_value = MODE_SMA; params[3].type = TYPE_INT; params[3].integer_value = PRICE_MEDIAN; params[4].type = TYPE_COLOR; params[4].double_value = clrBlue; ma_handle = IndicatorCreate( NULL, PERIOD_CURRENT, IND_MA, 5, params ); if ( ma_handle != INVALID_HANDLE ) { ChartIndicatorAdd( 0, 0, ma_handle ); }
このコードはうまくいくはずだったのですが、しかし・・・残念です。
IndicatorCreate() 関数で動作しなかった-カスタムインジケーターを 作成する方が簡単であることが判明。それにしても、コードの一部しか引用していないので質問ですが、変数paramsを使う前にゼロにしたのでしょうか?例えば、こんな風に。
MqlParam params; ZeroMemory(params);
また、あなたのエントリーで再生されるエラーコードは何ですか?
そうだったんですね。
ArrayResize(params,5);?
また、IND_MA(iMA)インジケータには「色」というパラメータがありませんが、指定 されていますね。 iMAの使用例はこちら: MQL5 Reference / Access to timeseries and indicators / IndicatorCreate.
このコードで動作するはずでした
それはなぜでしょうか?まず、なぜ色が実数なのかを説明してください。
params[4].type = TYPE_COLOR; params[4].double_value = clrBlue;
stringoさん、Yedelkinさん、こんにちは。
私のメッセージをよく読まなかったのでしょう、次のように書いてあります。
"開発者が思いつかなかった "のが残念です。"
さて、なぜ上記のようなコードを書いたのか、その理由を説明します。
Moving Averageの設定から、このインディケータが7つのパラメータ(5つのメインパラメータ+2つのライン)を持っていることがよくわかります。
これは、「パラメータ」タブに書かれていることです。
もし、すべての パラメータを「手動」で変更できるのであれば、それは、何か原因があるはずです。
開発者がやったこと、それはすべての パラメータをプログラムで変更することです。
IndicatorCreate 関数で、最後までやらない( or it's a BAG)。
MqlParam 構造体では、色 -TYPE_COLOR(ENUM_DATATYPE) を入力 することができます。
MQL5リファレンスより。
カラータイプは 、 色情報を格納するためのもので、メモリ内で4バイトを占有 する。 1 バイト目は無視され、残りの 3 バイトが RGB 成分となる。
......
整数表現は16進数または10進数で表記する。16進数で表すと、0x00BBGGRR です。
//--- 整数表現
0xFFFFFFFF //白色
16777215 //ホワイト
0x008000 //緑
32768 //グリーン
引用終わり。
struct MqlParam
{
ENUM_DATATYPE type; // 入力パラメータ型、ENUM_DATYPE 列挙値
long integer_value; // 整数値を格納するためのフィールド
double double_value; // double または float の値を 格納するためのフィールド.
string string_value; // string 型の値を 格納するためのフィールド
};
(最初にlongを試しましたがうまくいかず、次にdoubleを試しましたが、これもうまくいかず、コードに残っています).
こんな感じでいいんじゃないでしょうか。
MqlParam params[5]。
.........
params[4].type =TYPE_COLOR;
params[4].integer_value = clrBlue; // - 青色 0x00FF0000 (16711680)
stringoさん、「なんでやねん」という質問には答えましたよ。
今回も、開発者がカラーチェンジをしなかったのが残念です。
敬称略、ミハイル
stringoさん、Yedelkinさん、こんにちは。
私のメッセージをよく読まなかったのでしょう、次のように書いてあります。
"開発者が思いつかなかった "のが残念です。"
ミカラス さん、ここにはもう専門家がたくさんいて、他人のために結論を急ぐから、怖いんですよ。増やさないでください。
次に、感情的でない具体的な質問をすることで、あなたを助けました。それに答えず、「どうしてこんなことになったのか」と言う。 何がしたいのか。-自分が検出したバグがあると誰かを説得したり、「プログラム的に」コードを改善したりすること?もし、何らかの「バグ」を発見した場合、その状況を詳しく説明した上で、サービスデスクにご連絡ください。プログラム的に」仕事をしたいなら-指標の作成と運用を深く掘り下げる。

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
こんにちは。
標準インジケーターの色を変えるには?
ミハイルさん、ありがとうございました。