チャート上にスプレッドを表示するインジケーター
チャート上にスプレッドを表示するインジケーターを作成していきます。
- チャート上にスプレッドを表示させる
メタエディタを開く
メタエディタ(MetaEditor)を立ち上げましょう。操作は以下に記載しています。
【MQL】カスタムインジケーターを作成の流れについてわかりやすく説明してみた
カスタムインジケーターの作成の流れ カスタムインジケーターの作成の流れを説明していきます。 メタエディターを起動する MetaEditor(メタエディタ)をMT4から起動させる方法は以下の通りです。 ツール→メタエデ...
今回は名前を「trade-spread」で作成します。
OnStart()関数に記述する
OnStart()関数に記述します。
double spread()では、スプレッドの値に0.1をかけた値を代入しています。
MarketInfo関数については以下の記事を参照してください。
【MQL】気配値表示ウインドウに表示されている様々な情報を返す関数『MarketInfo』についてわかりやすく説明してみた
気配値表示ウインドウに表示されている様々な情報を返す関数『MarketInfo』 MarketInfo関数とは、気配値表示ウインドウに表示されている各通貨ペアの Ask Bid スプレッド スワップ など...
double spread = MarketInfo(Symbol(),MODE_SPREAD)*0.1;//スプレッドの値を取得
そしてObjectsDeleteAll()で一旦MT4に表示されているオブジェクトを削除してクリーンにしています。
ObjectsDeleteAll();//全オブジェクトを削除
ObjectCreate()でオブジェクトのレイアウトを設定します。
ObjectCreate( "spread",OBJ_LABEL,0,0,0);//オブジェクトを設定
ObjectSetで原点からX軸とY軸の距離を設定します。
ObjectSet("spread",OBJPROP_XDISTANCE,5);//原点からX軸に距離5 ObjectSet("spread",OBJPROP_YDISTANCE,18);//原点からY軸に距離18
最後にObjectSetTextで文字の表記を設定します。
ObjectSetText("spread","Spread:"+spread,20,"MS ゴシック",clrWhite);//表示形式
これでOnStart()関数の記述は完了です。
double spread = MarketInfo(Symbol(),MODE_SPREAD)*0.1;//スプレッドの値を取得 ObjectsDeleteAll();//全オブジェクトを削除 ObjectCreate( "spread",OBJ_LABEL,0,0,0);//オブジェクトを設定 ObjectSet("spread",OBJPROP_XDISTANCE,5);//原点からX軸に距離5 ObjectSet("spread",OBJPROP_YDISTANCE,18);//原点からY軸に距離18 ObjectSetText("spread","Spread:"+spread,20,"MS ゴシック",clrWhite);//表示形式
Copy
OnDeinit()関数に記述する
OnDeinit()関数に記述しましょう。
OnDeinit()関数を記述することでインジケーターを削除すると表示が消えます。
ObjectDelete("spread");//インジケーター削除すると表示が消える
これでOnDeinit()関数の記述は完了です。
void OnDeinit(const int reason) { ObjectDelete("spread");//インジケーター削除すると表示が消える }
Copy
コンパイルする
コンパイルしましょう。通貨ペアの隣にSpreadと表示されていたら成功です。
ソースコード全体
trade-spreadのソースコード全体は以下に記載しています。
//+------------------------------------------------------------------+ //| trade-spread.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 OnStart() { double spread = MarketInfo(Symbol(),MODE_SPREAD)*0.1;//スプレッドの値を取得 ObjectsDeleteAll();//全オブジェクトを削除 ObjectCreate( "spread",OBJ_LABEL,0,0,0);//オブジェクトを設定 ObjectSet("spread",OBJPROP_XDISTANCE,5);//原点からX軸に距離5 ObjectSet("spread",OBJPROP_YDISTANCE,18);//原点からY軸に距離18 ObjectSetText("spread","Spread:"+spread,20,"MS ゴシック",clrWhite);//表示形式 } void OnDeinit(const int reason) { ObjectDelete("spread");//インジケーター削除すると表示が消える } //+------------------------------------------------------------------+ //| 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 value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Copy
まとめ
今回はスプレッドを表示させてみました。
MarketInfoを活用することで他の情報を表示させることも可能になります。
コメント