FX-EA System Projectはこちら公式ラインに登録して
プレゼントをもらう

【MQL】チャート上にスプレッドを表示するインジケーター【初級編】

MQL インジケーター作成 スプレッド 表示MT4インジケーター作成

チャート上にスプレッドを表示するインジケーター

チャート上にスプレッドを表示するインジケーターを作成していきます。

  • チャート上にスプレッドを表示させる

メタエディタを開く

メタエディタ(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);
ObjectSet("spread",OBJPROP_YDISTANCE,18);

最後にObjectSetTextで文字の表記を設定します。

ObjectSetText("spread","Spread:"+spread,20,"MS ゴシック",clrWhite);
   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()関数を記述することでインジケーターを削除すると表示が消えます。

void OnDeinit(const int reason)
{
 ObjectDelete("spread");//インジケーター削除すると表示が消える
}
Copy

コンパイルする

コンパイルしましょう。通貨ペアの隣にSpreadと表示されていたら成功です。

MQL インジケーター作成 スプレッド 表示

ソースコード全体

//+------------------------------------------------------------------+
//|                                                 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を活用することで他の情報を表示させることも可能になります。

コメント

タイトルとURLをコピーしました