チャート上にトレード情報を表示するインジケーター
今回は、チャート上にトレード情報を表示するインジケーターを作っていきたいと思います。
以下の3つの情報をチャートウインドウに表示するインジケーターを作っていきます。
- 通貨ペア
- 売値BID
- 買値ASK
メタエディタを開く
メタエディタ(MetaEditor)を立ち上げましょう。操作は以下に記載しています。
【MQL】カスタムインジケーターを作成の流れについてわかりやすく説明してみた
カスタムインジケーターの作成の流れ カスタムインジケーターの作成の流れを説明していきます。 メタエディターを起動する MetaEditor(メタエディタ)をMT4から起動させる方法は以下の通りです。 ツール→メタエデ...
今回は名前を「trade-info」で作成します。
OnDeinit()関数の記述する
OnDeinit()関数の記述しましょう。
今回はCommentを活用するので削除する際もCommentを活用します。
Comment("");//チャート削除後
Copy
OnTick()関数を記述する
OnTick()関数を記述していきます。
基本的に
- Comment
- MarketInfo
の2つを活用すればすぐにできてしまいます。
MarketInfoで通貨ペアを取得しましょう。
通貨ペアはint型ではないので、(int)を使い、無理やりint型に変更しています。
これは、Chart_digitもint型なので同じ箱にしかいれることができないからです。
MODE_DIGITSとは有効桁数を取得します。レートの少数点が4桁なら4、小数点が5桁なら5などです。
int Chart_digit = (int)MarketInfo(Symbol(), MODE_DIGITS);
Commentで通貨ペアにはSymbol()を表示させます。\n”は改行を意味しています。
通貨ペア=", Symbol(), "\n"
NormalizeDoubleというのは、指定された精度で丸められた浮動小数点数を返しています。
MarketInfoで通貨ペアのBidとAskを取得しています。
売値(BID)=", NormalizeDouble(MarketInfo(Symbol(), MODE_BID), Chart_digit), "\n", 買値(ASK)=", NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), Chart_digit), "\n",
これでOnTick()関数の記述は完了です。
int Chart_digit = (int)MarketInfo(Symbol(), MODE_DIGITS);//通貨のペアの小数点取得 Comment("------ チャート上の通貨ペアの情報 -----------------------------------------", "\n", "│ 通貨ペア=", Symbol(), "\n",//通貨ペアを表示 "│ 売値(BID)=", NormalizeDouble(MarketInfo(Symbol(), MODE_BID), Chart_digit), "\n",//Bidを表示 "│ 買値(ASK)=", NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), Chart_digit), "\n",Askを表示 "-----------------------------------------------------------------------------------", "\n" );
Copy
コンパイルする
コンパイルしましょう。インジケーターを表示して左上に表示されていたら完了です。
ソースコード全体
trade-infoのソースコード全体は以下に記載しています。
//+------------------------------------------------------------------+ //| trade-info.mq4 | //| Copyright 2020, FX-EA System Project Creator | //| https://creator.fx-ea-system-project.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, FX-EA System Project Creator" #property link "https://creator.fx-ea-system-project.com/" #property version "1.00" #property strict #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping //--- return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { Comment("");//チャート削除後 } //+------------------------------------------------------------------+ //| 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[]) { //--- int Chart_digit = (int)MarketInfo(Symbol(), MODE_DIGITS);//通貨のペアの小数点取得 Comment("------ チャート上の通貨ペアの情報 -----------------------------------------", "\n", "│ 通貨ペア=", Symbol(), "\n",//通貨ペアを表示 "│ 売値(BID)=", NormalizeDouble(MarketInfo(Symbol(), MODE_BID), Chart_digit), "\n",//Bidを表示 "│ 買値(ASK)=", NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), Chart_digit), "\n",Askを表示 "-----------------------------------------------------------------------------------", "\n" ); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Copy
まとめ
簡単にトレード情報を表示させることができましたね。
情報を追記して作成したらより細かく様々なデータを表示させることができるので試してみてください。
コメント