チャート上にスプレッドを表示するインジケーター
チャート上にスプレッドを表示するインジケーターを作成していきます。
- チャート上にスプレッドを表示させる
メタエディタを開く
メタエディタ(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を活用することで他の情報を表示させることも可能になります。






コメント