注文執行モードの定数
注文執行の定数は、証券会社の注文執行モードを調べるときに使用されます。
主に、SymbolInfoInteger関数で使用されます。
それぞれ、SymbolInfoInteger関数の SYMBOL_TRADE_EXEMODEの返り値として使用されます。
注文執行モードの定数(ENUM_SYMBOL_TRADE_EXECUTION)
| 定数 | 説明 |
| SYMBOL_TRADE_EXECUTION_REQUEST | リクエストモード (提示された価格で約定) |
| SYMBOL_TRADE_EXECUTION_INSTANT | 即時執行モード (約定価格を最優先) (NDD方式) |
| SYMBOL_TRADE_EXECUTION_MARKET | マーケットモード (約定を最優先) (DD方式) |
注文執行モードの定数の使い方
主に、SymbolInfoInteger関数で使用されます。
それぞれ、SymbolInfoInteger関数の SYMBOL_TRADE_EXEMODEの返り値として使用されます。
ENUM_SYMBOL_TRADE_EXECUTION型の変数を作り、その変数にSymbolInfoIntegerの返り値を代入しましょう。
例えば、以下のように使用します。
SymbolInfoIntegerの返り値を ENUM_SYMBOL_TRADE_EXECUTION型にキャスト(型変換)し、変数に代入しています。
//SymbolInfoInteger関数
//注文執行モード情報を取得
ENUM_SYMBOL_TRADE_EXECUTION symbolTradeExecution = (ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE);
返り値は ENUM_SYMBOL_TRADE_EXECUTION型です。
サンプルプログラム
以下は、現在の通貨ペアの注文執行モードを取得し、チャート上にコメントとして表示するサンプルプログラムです。
//+------------------------------------------------------------------+
//| サンプル:注文執行モードの取得と表示 |
//+------------------------------------------------------------------+
void OnStart()
{
// 注文執行モードを取得
ENUM_SYMBOL_TRADE_EXECUTION execMode = (ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE);
string execModeStr = "";
// 取得した値に応じて文字列を設定
switch(execMode)
{
case SYMBOL_TRADE_EXECUTION_REQUEST:
execModeStr = "リクエストモード(提示された価格で約定)";
break;
case SYMBOL_TRADE_EXECUTION_INSTANT:
execModeStr = "即時執行モード(約定価格を最優先 / NDD方式)";
break;
case SYMBOL_TRADE_EXECUTION_MARKET:
execModeStr = "マーケットモード(約定を最優先 / DD方式)";
break;
default:
execModeStr = "不明な執行モード";
break;
}
// 結果をコメントとして表示
Comment("通貨ペア: ", _Symbol, "\n",
"注文執行モード: ", execModeStr, "\n",
"定数値: ", IntegerToString((int)execMode));
// エキスパートログにも出力
Print("通貨ペア: ", _Symbol, " / 注文執行モード: ", execModeStr);
}
このプログラムでは、SymbolInfoInteger関数でSYMBOL_TRADE_EXEMODEを指定し、現在の通貨ペアの注文執行モードを取得しています。取得した値をswitch文で判定し、対応する説明文字列をチャート上に表示します。
【補足】注文執行モードの定数の列挙型(ENUM_SYMBOL_TRADE_EXECUTION)
注文執行モードの定数は、ENUM_SYMBOL_TRADE_EXECUTIONという列挙型に含まれています。
列挙型は、定数群をひとまとめにしたものです。
以下のように使います。
ENUM_SYMBOL_TRADE_EXECUTION symbolTradeExecution = SYMBOL_TRADE_EXECUTION_INSTANT;上記のようにプログラムすると、symbolTradeExecution変数に SYMBOL_TRADE_EXECUTION_INSTANTの数値が代入されます。





