
MT4で扱える商品の仕様を確認したいときに使えるスクリプトです。ちゃんと保存しておかないのでいつも調べながら作っているのですが、さすがに面倒くさいので動くコードをアップしておきます。
MT4の商品仕様(取引条件)はMT4の「気配値表示」に表示されているペアを選択した状態で右クリックで表示可能です。この仕様はFXとCFDで内容が異なるので細かい違いが分かるようになります。
目次
MarketInfo仕様
Google翻訳したものを置いておきますが、翻訳がおかしいものは公式のMarketInfoでご確認ください。
ID | 価値 | 説明 |
---|---|---|
MODE_LOW | 1 | 当日安値 |
MODE_HIGH | 2 | 当日高値 |
MODE_TIME | 5 | 最後の着信ティック時間(最後の既知のサーバー時間) |
MODE_BID | 9 | 最終入値。現在のシンボルの場合、事前定義された変数Bidに格納されます |
MODE_ASK | 10 | 最後の着信アスク価格。現在のシンボルについては、事前定義された変数Askに格納されます |
MODE_POINT | 11 | 見積もり通貨でのポイントサイズ。現在のシンボルの場合、事前定義された変数Pointに格納されます |
MODE_DIGITS | 12 | シンボル価格の小数点以下の桁数。現在のシンボルの場合、事前定義された変数Digitsに格納されます |
MODE_SPREAD | 13 | ポイント単位のスプレッド値 |
MODE_STOPLEVEL | 14 | ポイントでの停止レベル MODE_STOPLEVELのゼロ値は、ストップロス/テイクプロフィットの最小距離に制限がないか、トレードサーバーが動的レベル制御にいくつかの外部メカニズムを利用しているという事実のいずれかを意味します。これはクライアント端末では変換できません。2番目のケースでは、MODE_STOPLEVELが実際にはここで「フローティング」であるため、GetLastError()はエラー130を返す可能性があります。 |
MODE_LOTSIZE | 15 | 基本通貨でのロットサイズ |
MODE_TICKVALUE | 16 | 預金通貨でのティック値 |
MODE_TICKSIZE | 17 | ポイント単位のティックサイズ |
MODE_SWAPLONG | 18 | 購入注文の交換 |
MODE_SWAPSHORT | 19 | 販売注文の交換 |
MODE_STARTING | 20 | 市場開始日(通常は先物に使用されます) |
MODE_EXPIRATION | 21 | 市場の有効期限(通常は先物に使用されます) |
MODE_TRADEALLOWED | 22 | シンボルの取引は許可されています |
MODE_MINLOT | 23 | ロットの最小許容量 |
MODE_LOTSTEP | 24 | ロット変更のステップ |
MODE_MAXLOT | 25 | ロットの最大許容量 |
MODE_SWAPTYPE | 26 | スワップ計算方法。0-ポイントで; 1-シンボル基本通貨で; 2-興味による; 3-証拠金通貨で |
MODE_PROFITCALCMODE | 27 | 利益計算モード。0-外国為替; 1-CFD; 2-先物 |
MODE_MARGINCALCMODE | 28 | マージン計算モード。0-外国為替; 1-CFD; 2-先物; 3-インデックスのCFD |
MODE_MARGININIT | 29 | 1ロットの初期証拠金要件 |
MODE_MARGINMAINTENANCE | 30 | 1ロットで計算された未決済注文を維持するための証拠金 |
MODE_MARGINHEDGED | 31 | 1ロットで計算されたヘッジマージン |
MODE_MARGINREQUIRED | 32 | 1ロットあたりの証拠金 |
MODE_FREEZELEVEL | 33 | 凍結レベルをポイントで注文します。執行価格がフリーズレベルで定義された範囲内にある場合、注文を変更、キャンセル、またはクローズすることはできません |
MODE_CLOSEBY_ALLOWED | 34 | OrderCloseBy()を使用して、指定されたシンボルの反対の注文を閉じることができます |
【MQL4】MT4で扱える商品詳細をすべて取得しファイル出力するスクリプト
//+------------------------------------------------------------------+
//| CreateSymbolList.mq4 |
//| Copyright 2022, Greeds Corp |
//| https://greeds.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, Greeds Corp."
#property link "https://greeds.net/"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
int handle=FileOpen("MarketInfoAll.txt", FILE_CSV|FILE_WRITE, ';');
if(handle== INVALID_HANDLE)
{
printf("error.");
}
string header="SYMBOL,MODE_LOW,MODE_HIGH,MODE_TIME,MODE_BID,,MODE_ASK,MODE_POINT,MODE_DIGITS,MODE_SPREAD,MODE_STOPLEVEL,MODE_LOTSIZE,MODE_TICKVALUE,MODE_TICKSIZE,MODE_SWAPLONG,MODE_SWAPSHORT,MODE_STARTING,MODE_EXPIRATION,MODE_TRADEALLOWED,MODE_MINLOT,MODE_LOTSTEP,MODE_MAXLOT,MODE_SWAPTYPE,MODE_PROFITCALCMODE,MODE_MARGINCALCMODE,MODE_MARGININIT,MODE_MARGINMAINTENANCE,MODE_MARGINHEDGED,MODE_MARGINREQUIRED,MODE_FREEZELEVEL,MODE_CLOSEBY_ALLOWED";
FileWrite(handle,header);
string body="";
for(int i=0;i<SymbolsTotal(false);i++)
{
string name = SymbolName(i,false);
body=name+","
+DoubleToStr(MarketInfo(name,MODE_LOW))+","
+DoubleToStr(MarketInfo(name,MODE_HIGH))+","
+TimeToStr((datetime)MarketInfo(name,MODE_TIME))+","
+DoubleToStr(MarketInfo(name,MODE_BID))+","
+DoubleToStr(MarketInfo(name,MODE_ASK))+","
+DoubleToStr(MarketInfo(name,MODE_POINT))+","
+DoubleToStr(MarketInfo(name,MODE_DIGITS))+","
+DoubleToStr(MarketInfo(name,MODE_SPREAD))+","
+DoubleToStr(MarketInfo(name,MODE_STOPLEVEL))+","
+DoubleToStr(MarketInfo(name,MODE_LOTSIZE))+","
+DoubleToStr(MarketInfo(name,MODE_TICKVALUE))+","
+DoubleToStr(MarketInfo(name,MODE_TICKSIZE))+","
+DoubleToStr(MarketInfo(name,MODE_SWAPLONG))+","
+DoubleToStr(MarketInfo(name,MODE_SWAPSHORT))+","
+DoubleToStr(MarketInfo(name,MODE_STARTING))+","
+DoubleToStr(MarketInfo(name,MODE_EXPIRATION))+","
+DoubleToStr(MarketInfo(name,MODE_TRADEALLOWED))+","
+DoubleToStr(MarketInfo(name,MODE_MINLOT))+","
+DoubleToStr(MarketInfo(name,MODE_LOTSTEP))+","
+DoubleToStr(MarketInfo(name,MODE_MAXLOT))+","
+DoubleToStr(MarketInfo(name,MODE_SWAPTYPE))+","
+DoubleToStr(MarketInfo(name,MODE_PROFITCALCMODE))+","
+DoubleToStr(MarketInfo(name,MODE_MARGINCALCMODE))+","
+DoubleToStr(MarketInfo(name,MODE_MARGININIT))+","
+DoubleToStr(MarketInfo(name,MODE_MARGINMAINTENANCE))+","
+DoubleToStr(MarketInfo(name,MODE_MARGINHEDGED))+","
+DoubleToStr(MarketInfo(name,MODE_MARGINREQUIRED))+","
+DoubleToStr(MarketInfo(name,MODE_FREEZELEVEL))+","
+DoubleToStr(MarketInfo(name,MODE_CLOSEBY_ALLOWED));
FileWrite(handle,body);
}
}