[MQL]お気に入りのチャートプロパティに変更するインジケーターのコード
MQLのプログラムが分かる人向け。ロウソク足の色などMT4のチャートのプロパティを自分のお気に入りの設定にサクッと整えるインジケーターです。
プログラムコードをお好みにカスタマイズして使ってください。
ちょっと見るだけ、、、だったのに。
新規にチャートを開いてちょっと相場を見るだけのつもりだったのに、いつの間にかガッツリとラインを引いたりすることありませんか?
↑ちょっとのつもりがいつの間にやら熱が入ってラインを引いたところ。
こういう時「このチャート消すのもったいないな~。」って思ったりします。でもって「これを残すにしても、いつものプロパティに直すのめんどくさいな~」と。
補足:チャートのプロパティ
チャートのプロパティは、チャート上で右クリック→「プロパティ」で表示される設定のことです(下図)。
ローソク足の色をはじめ、チャートに関するもろもろの設定があります。設定内容は簡単ですが、色を一つ一つ選択したりと結構めんどくさいのです。
そんな時にチャートのプロパティをサクッとお気に入り設定に整えるインジケーターです。
↑チャートにこのインジを適用すると、ロウソク足などのプロパティがいつものお気に入りの設定に変更されます。ラインなどのオブジェクトは何も変わりません。
コードの内容
コードの内容は以下の通りです。チャートにひたすらプロパティの値を適用しているだけで、やっていることは単純です。
OnInit()関数で宣言している各変数の値がチャートのプロパティです。お好みの値に書き換えて使って下さい。
//+------------------------------------------------------------------+
//| Mi_ChartProperty.mq4 |
//| minagachi FX |
//| https://minagachi.com |
//+------------------------------------------------------------------+
#property copyright "minagachi FX"
#property link "https://minagachi.com"
#property description "https://minagachi.com"
#property version "4.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit(){
//---色の設定---
color chart_color_background = clrBlack; // 背景色
color chart_color_foreground = clrWhite; // 前景色
color chart_color_grid = clrDarkSlateGray; // グリッド
color chart_color_chart_up = clrRed; // 上昇バー
color chart_color_chart_down = clrAqua; // 下降バー
color chart_color_candle_bull = clrRed; // 上昇ロウソク足
color chart_color_candle_bear = clrAqua; // 下降ロウソク足
color chart_color_chart_line = clrLime; // ラインチャート
color chart_color_volume = clrLimeGreen; // 出来高
color chart_color_ask = clrRed; // Askのライン
color chart_color_stop_level = clrRed; // ストプ・レベル
//---全般---
bool chart_is_offline = false; // オフライン・チャート(機能しない 原因不明)
bool chart_foreground = false; // チャートを前面に表示
bool chart_shift = true; // チャートの右端移動
bool chart_autoscroll = true; // チャートの自動スクロール
bool chart_scalefix_11 = false; // スケールを1対1に固定
bool chart_scalefix = false; // スケールの固定
double chart_fixed_max = 0; // 上限設定
double chart_fixed_min = 0; // 下限設定
ENUM_CHART_MODE chart_mode = CHART_CANDLES; // チャートの種類
int chart_scale = 2; // チャートのスケール
bool chart_show_ohlc = true; // 四本値表示
bool chart_show_ask_line = false; // Askのラインを表示
bool chart_show_period_sep = false; // 期間区切り表示
bool chart_show_grid = false; // グリッドの表示
bool chart_show_volumes = false; // 出来高の表示
bool chart_show_object_descr = false; // ライン等の説明を表示
//---設定を適用---
ChartSetInteger(0, CHART_COLOR_BACKGROUND, 0, chart_color_background);
ChartSetInteger(0, CHART_COLOR_FOREGROUND, 0, chart_color_foreground);
ChartSetInteger(0, CHART_COLOR_GRID, 0, chart_color_grid);
ChartSetInteger(0, CHART_COLOR_CHART_UP, 0, chart_color_chart_up);
ChartSetInteger(0, CHART_COLOR_CHART_DOWN, 0, chart_color_chart_down);
ChartSetInteger(0, CHART_COLOR_CANDLE_BULL, 0, chart_color_candle_bull);
ChartSetInteger(0, CHART_COLOR_CANDLE_BEAR, 0, chart_color_candle_bear);
ChartSetInteger(0, CHART_COLOR_CHART_LINE, 0, chart_color_chart_line);
ChartSetInteger(0, CHART_COLOR_VOLUME, 0, chart_color_volume);
ChartSetInteger(0, CHART_COLOR_ASK, 0, chart_color_ask);
ChartSetInteger(0, CHART_COLOR_STOP_LEVEL, 0, chart_color_stop_level);
ChartSetInteger(0, CHART_IS_OFFLINE, 0, chart_is_offline);
ChartSetInteger(0, CHART_FOREGROUND, 0, chart_foreground);
ChartSetInteger(0, CHART_SHIFT, 0, chart_shift);
ChartSetInteger(0, CHART_AUTOSCROLL, 0, chart_autoscroll);
ChartSetInteger(0, CHART_SCALEFIX_11, 0, chart_scalefix_11);
ChartSetInteger(0, CHART_SCALEFIX, 0, chart_scalefix);
ChartSetInteger(0, CHART_MODE, 0, chart_mode);
ChartSetInteger(0, CHART_SCALE, 0, chart_scale);
ChartSetDouble(0, CHART_FIXED_MAX, chart_fixed_max);
ChartSetDouble(0, CHART_FIXED_MIN, chart_fixed_min);
ChartSetInteger(0, CHART_SHOW_OHLC, 0, chart_show_ohlc);
ChartSetInteger(0, CHART_SHOW_ASK_LINE, 0, chart_show_ask_line);
ChartSetInteger(0, CHART_SHOW_PERIOD_SEP, 0, chart_show_period_sep);
ChartSetInteger(0, CHART_SHOW_GRID, 0, chart_show_grid);
ChartSetInteger(0, CHART_SHOW_VOLUMES, 0, chart_show_volumes);
ChartSetInteger(0, CHART_SHOW_OBJECT_DESCR, 0, chart_show_object_descr);
ChartRedraw(0);
ChartIndicatorDelete(0, 0, WindowExpertName());
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
まとめ
自分用にカスタマイズして持っておくと予想以上に重宝すると思います。私自身は週一ぐらいの頻度で使っています。
よかったらカスタマイズしてお使いください。
私はいつもDefault.tplを使っていますよ。
ystkさんへ
コメントありがとうございます。
なるほど!そもそもdefault.tplをお好み設定にしておけば良いってことですね。全く思いつきませんでした。それ使わせていただきます。
人生最高のアプリのひとつです。バズってる空気を感じないのが不思議。
とりもとりあえすさんへ
コメントありがとうございます。
需要があるのか怪しいと思っていましたので、使ってくれている人がいると知っただけでちょっと嬉しいですよ。
こんばんは。
まさに探していたインジケーターです!
これってすべてのチャートに一括適用できますか?
てかそれ以前にどうやって使うのですか?
無知ですみません。
BONさんへ
コメントありがとうございます。
全チャートに一括で適用するのは処理がすこし複雑になるのでこのインジではできません。チャート1つずつ適用するタイプです。
このページのプログラムコードをコピペするなどしてインジケーターを自作してお使いください。