マーケット情報の定数(MODE)
マーケット情報の定数は、マーケット情報を取得するときに使用します。
主に、MarketInfo関数で使います。
マーケット情報には、自動売買を作る上で、かなり重要な情報があります。
重要な情報を取得するテンプレートを作っておくと良いでしょう。
それぞれ、MarketInfo関数のtype引数の入力値として、マーケット情報の定数を使うことができます。
マーケット情報の定数(MODE)
| 定数 | 説明 |
| MODE_LOW | 当日の安値 |
| MODE_HIGH | 当日の高値 |
| MODE_TIME | 最新のサーバー時間 |
| MODE_BID | 最新の売値 |
| MODE_ASK | 最新の買値 |
| MODE_POINT | 通貨ペアのポイント |
| MODE_DIGITS | 通貨ペアの小数点桁数 |
| MODE_SPREAD | 通貨ペアのスプレッド(0.1pips単位) |
| MODE_STOPLEVEL | 通貨ペアのストップレベル(0.1pips単位) |
| MODE_LOTSIZE | 1ロットあたりの通貨数 |
| MODE_TICKVALUE | 通貨ペアのポイント |
| MODE_TICKSIZE | 通貨ペアのtick値(pips単位) |
| MODE_SWAPLONG | 通貨ペアの買いスワップ |
| MODE_SWAPSHORT | 通貨ペアの売りスワップ |
| MODE_STARTING | マーケット開始日 |
| MODE_EXPIRATION | マーケット期日 |
| MODE_TRADEALLOWED | トレード可能な通貨ペア |
| MODE_MINLOT | 最小ロット数 |
| MODE_LOTSTEP | ロットステップ |
| MODE_MAXLOT | 最大ロット数 |
| MODE_SWAPTYPE | スワップの計算方法 0:FX, 1:CFD, 2:先物, 3:CFDインデックス |
| MODE_PROFITCALCMODE | 損益計算モード 0:FX, 1:CFD, 2:先物 |
| MODE_MARGINCALCMODE | 証拠金計算モード 0:FX, 1:CFD, 2:先物, 3:CFDインデックス |
| MODE_MARGININIT | 1ロットの初期証拠金 |
| MODE_MARGINMAINTENANCE | 1ロットの初期証拠金(計算モード) |
| MODE_MARGINHEDGED | 1ロットの必要証拠金 |
| MODE_MARGINREQUIRED | 1ロットの余剰証拠金 |
| MODE_FREEZELEVEL | 注文凍結レベル(pips単位) |
| MODE_CLOSEBY_ALLOWED | 両建て同時決済の可否 |
マーケット情報の定数(MODE)の使い方
主に、MarketInfo関数で使います。
それぞれ、MarketInfo関数のtype引数の入力値として、マーケット情報の定数を使うことができます。
上記の定数を入力しましょう。
すると、その定数に対応したマーケット情報を取得することができます。
例えば、以下のように使用します。
//MarketInfo関数
//最大ロット数を取得する
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
プログラム例:主要なマーケット情報を一括取得する
以下は、MarketInfo関数とマーケット情報の定数を使って、主要なマーケット情報をまとめて取得・表示するサンプルプログラムです。
//+------------------------------------------------------------------+
//| マーケット情報取得スクリプト |
//+------------------------------------------------------------------+
void OnStart()
{
string sym = Symbol(); // 現在の通貨ペア
// 価格情報
double bid = MarketInfo(sym, MODE_BID);
double ask = MarketInfo(sym, MODE_ASK);
double high = MarketInfo(sym, MODE_HIGH);
double low = MarketInfo(sym, MODE_LOW);
// 通貨ペアの基本情報
double point = MarketInfo(sym, MODE_POINT);
int digits = (int)MarketInfo(sym, MODE_DIGITS);
double spread = MarketInfo(sym, MODE_SPREAD);
double stopLevel = MarketInfo(sym, MODE_STOPLEVEL);
// ロット関連情報
double lotSize = MarketInfo(sym, MODE_LOTSIZE);
double minLot = MarketInfo(sym, MODE_MINLOT);
double maxLot = MarketInfo(sym, MODE_MAXLOT);
double lotStep = MarketInfo(sym, MODE_LOTSTEP);
// スワップ情報
double swapLong = MarketInfo(sym, MODE_SWAPLONG);
double swapShort = MarketInfo(sym, MODE_SWAPSHORT);
// 証拠金情報
double marginReq = MarketInfo(sym, MODE_MARGINREQUIRED);
double freezeLvl = MarketInfo(sym, MODE_FREEZELEVEL);
// tick情報
double tickValue = MarketInfo(sym, MODE_TICKVALUE);
double tickSize = MarketInfo(sym, MODE_TICKSIZE);
// トレード可否
double tradeOK = MarketInfo(sym, MODE_TRADEALLOWED);
// ログ出力
Print("========== マーケット情報 [", sym, "] ==========");
Print("【価格情報】");
Print(" Bid(売値) : ", DoubleToStr(bid, digits));
Print(" Ask(買値) : ", DoubleToStr(ask, digits));
Print(" 当日高値 : ", DoubleToStr(high, digits));
Print(" 当日安値 : ", DoubleToStr(low, digits));
Print("【通貨ペア基本情報】");
Print(" ポイント : ", DoubleToStr(point, digits));
Print(" 小数点桁数 : ", digits);
Print(" スプレッド : ", spread, "(0.1pips単位)");
Print(" ストップレベル : ", stopLevel, "(0.1pips単位)");
Print("【ロット関連】");
Print(" 1ロットの通貨数 : ", lotSize);
Print(" 最小ロット : ", minLot);
Print(" 最大ロット : ", maxLot);
Print(" ロットステップ : ", lotStep);
Print("【スワップ情報】");
Print(" 買いスワップ : ", swapLong);
Print(" 売りスワップ : ", swapShort);
Print("【証拠金・その他】");
Print(" 1ロット必要証拠金 : ", marginReq);
Print(" 注文凍結レベル : ", freezeLvl);
Print(" Tick値 : ", tickValue);
Print(" Tickサイズ : ", DoubleToStr(tickSize, digits));
Print(" トレード可否 : ", (tradeOK == 1) ? "可能" : "不可");
Print("==============================================");
}
このスクリプトを実行すると、エキスパートタブに現在の通貨ペアの主要なマーケット情報が一覧で表示されます。
自動売買を開発する際に、ロット計算やストップレベルの確認などで頻繁に使用する情報ばかりですので、テンプレートとして活用してください。





