見出し画像

【MT4】チャートの通貨をボタンで変更できるインジケーターの作り方

MT4で時間足はボタンで変えれるのに、通貨ペアはボタンで変える事が出来なくて不便だと思った事ないですか?

そこで、チャートの通貨ペアをボタンで簡単に変えれるインジケータを作りたいと思います。

ChartSetSymbolPeriod関数

MQLでは実は簡単にチャートの通貨ペアと時間足を変更する事が出来るんです。

ChartSetSymbolPeriod(チャートID、通貨ペア、時間足)

たったこれだけの命令!

チャートIDは自分のチャートなので、0
通貨ペアは変更したい通貨ペア名
時間足も一緒に変更できるので必要であれば。変更しない時は0

ChartSetSymbolPeriod(0,"USDJPY",0);

この命令で通貨ペアをUDSJPYに変更する事が出来ます!

ボタンを作ろう!

通貨ペアを変更する為のボタンを作る関数を用意しましょう!

//ボタン作成
void CreateButton(string sObjName,string sLabel, int iPoX,int iPoY,int iSizeX, int iSizeY, int iCorner, int iFontSize, color cFontColor , color cBgColor) {
  ObjectCreate(sObjName, OBJ_BUTTON, 0, 0, 0);
  ObjectSet(sObjName, OBJPROP_XDISTANCE, iPoX);
  ObjectSet(sObjName, OBJPROP_YDISTANCE, iPoY);
  ObjectSet(sObjName, OBJPROP_XSIZE, iSizeX);
  ObjectSet(sObjName, OBJPROP_YSIZE, iSizeY);
  ObjectSet(sObjName, OBJPROP_CORNER, iCorner);
  ObjectSet(sObjName, OBJPROP_FONTSIZE, iFontSize);
  ObjectSet(sObjName, OBJPROP_COLOR, cFontColor);
  ObjectSet(sObjName, OBJPROP_BGCOLOR, cBgColor);
  ObjectSetString(0, sObjName, OBJPROP_TEXT, sLabel);
  ObjectSetString(0, sObjName, OBJPROP_FONT, "MS ゴシック");
}

ボタン作成と同時に、サイズ・色や表示位置の設定を出来る関数を作っておきましょう!

こういう関数を作っておくと、いろいろな場面で使う事が出来て便利ですよ!

では、初期処理のところでボタンを作っていきましょう!

int OnInit()
 {
//--- indicator buffers mapping
  //ボタン作成
  CreateButton("btnUSDJPY","USDJPY",10,50,50,25,0,10,clrBlack,clrDarkGray);
  CreateButton("btnEURUSD","EURUSD",10,75,50,25,0,10,clrBlack,clrDarkGray);

//---
  return(INIT_SUCCEEDED);
 }

スクリーンショット 2020-12-26 094527

こんな感じにボタンが二つ作成できたかと思います。

ボタンが押されてた時の処理

では次にボタンが押された時の処理ですね。
OnChartEvent関数の中に書いていきます。

void OnChartEvent(const int id,
                 const long &lparam,
                 const double &dparam,
                 const string &sparam)
{

  if (sparam == "btnUSDJPY") {
     ChartSetSymbolPeriod(0,"USDJPY",0);
     ObjectSet(sparam, OBJPROP_STATE, False);
  } else if (sparam == "btnEURUSD") {
     ChartSetSymbolPeriod(0,"EURUSD",0);
     ObjectSet(sparam, OBJPROP_STATE, False);
  }      
}

どのボタンが押されたかを判断して、
ChartSetSymbolPeriod関数を呼ぶ事で、チャートの通貨ペアを変更する事が可能です!!

ObjectSet(sparam, OBJPROP_STATE, False);
これは、ボタンが推される前の状態に戻す処理ですね。
これを書かないと、ボタンが推されたままの状態になってしまいます。

たったこれだけで、チャートを切り替えるボタンの完成です!
MT4にデフォルトでつけてほしいですよね。。。

まとめ

今回はMT4についてない通貨ペアの変更ボタンを作成しました。
ChartSetSymbolPeriod関数を使う事で簡単に実装する事が出来ます。

有料エリアの全ソースコードの方では、

・表示する通貨ペアを自分の好きなように変更できる
・表示位置を自由に変更できる
・表示方法の変更(縦に何個ならべるか)
・ボタンの色、フォントカラーの変更

などが出来るようにしたものを公開しております。

■設定画面

画像2

■押したボタンの色が変わります。

画像3

■縦に表示する個数を変更する事が出来ます。

画像4

■縦の表示個数を2にすると、横並びに出来ます

画像5

■縦の表示個数を1にすると、全部横に並びます。

画像6

■沢山表示したくない人は自分が使う通貨ペアだけの表示に出来ます。

画像7

通貨ペア数を自由に設定できるよに、StringSplit関数、配列を使って処理したりしています。

ソースコードが欲しい方は、ご購入頂ければと思います。
インジケータが欲しい方は、
https://www.gogojungle.co.jp/tools/indicators/26780
こちらで販売しております。

以下、全ソースコードです。

ここから先は

3,872字
この記事のみ ¥ 1,000

この記事が気に入ったらサポートをしてみませんか?