void OnStart()
{
//--- строковые переменные
string output_string;
string temp_string;
string format_string;
//--- подготовим заголовок спецификации
temp_string=StringFormat("Спецификация контракта для %s:\r\n",_Symbol);
StringAdd(output_string,temp_string);
//--- вывод значения int
int digits=(int)SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
temp_string=StringFormat(" SYMBOL_DIGITS = %d (количество знаков после запятой)\r\n",
digits);
StringAdd(output_string,temp_string);
//--- вывод значения double с переменным количеством цифр после десятичной точки
double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
format_string=StringFormat(" SYMBOL_POINT = %%.%df (значение одного пункта)\r\n",
digits);
temp_string=StringFormat(format_string,point_value);
StringAdd(output_string,temp_string);
//--- вывод значения int
int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
temp_string=StringFormat(" SYMBOL_SPREAD = %d (текущий спред в пунктах)\r\n",
spread);
StringAdd(output_string,temp_string);
//--- вывод значения int
int min_stop=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
temp_string=StringFormat(" SYMBOL_TRADE_STOPS_LEVEL = %d (минимальный отступ в пунктах для стоп-ордеров)\r\n",
min_stop);
StringAdd(output_string,temp_string);
//--- вывод значения double без дробной части
double contract_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);
temp_string=StringFormat(" SYMBOL_TRADE_CONTRACT_SIZE = %.f (размер контракта)\r\n",
contract_size);
StringAdd(output_string,temp_string);
//--- вывод значения double с точностью по умолчанию
double tick_size=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
temp_string=StringFormat(" SYMBOL_TRADE_TICK_SIZE = %f (минимальное изменение цены)\r\n",
tick_size);
StringAdd(output_string,temp_string);
//--- определение способа начисления свопов
int swap_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_SWAP_MODE);
string str_swap_mode;
switch(swap_mode)
{
case 0: str_swap_mode="0 (в пунктах)"; break;
case 1: str_swap_mode="1 (в базовой валюте инструмента)"; break;
case 2: str_swap_mode="2 (в процентах)"; break;
case 3: str_swap_mode="3 (в валюте залоговых средств)"; break;
}
//--- вывод значения string
temp_string=StringFormat(" SYMBOL_SWAP_MODE = %s\r\n",
str_swap_mode);
StringAdd(output_string,temp_string);
//--- вывод значения double с точностью по умолчанию
double swap_long=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG);
temp_string=StringFormat(" SYMBOL_SWAP_LONG = %f (своп на покупку)\r\n",
swap_long);
StringAdd(output_string,temp_string);
//--- вывод значения double с точностью по умолчанию
double swap_short=SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT);
temp_string=StringFormat(" SYMBOL_SWAP_SHORT = %f (своп на продажу)\r\n",
swap_short);
StringAdd(output_string,temp_string);
//--- определение режима торговли
int trade_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_MODE);
string str_trade_mode;
switch(trade_mode)
{
case SYMBOL_TRADE_MODE_DISABLED: str_trade_mode="SYMBOL_TRADE_MODE_DISABLED (торговля по символу запрещена)"; break;
case SYMBOL_TRADE_MODE_LONGONLY: str_trade_mode="SYMBOL_TRADE_MODE_LONGONLY (разрешены только покупки)"; break;
case SYMBOL_TRADE_MODE_SHORTONLY: str_trade_mode="SYMBOL_TRADE_MODE_SHORTONLY (разрешены только продажи)"; break;
case SYMBOL_TRADE_MODE_CLOSEONLY: str_trade_mode="SYMBOL_TRADE_MODE_CLOSEONLY (разрешены только операции закрытия ордеров)"; break;
case SYMBOL_TRADE_MODE_FULL: str_trade_mode="SYMBOL_TRADE_MODE_FULL (нет ограничений на торговые операции)"; break;
}
//--- вывод значения string
temp_string=StringFormat(" SYMBOL_TRADE_MODE = %s\r\n",
str_trade_mode);
StringAdd(output_string,temp_string);
//--- вывод значения double в компактном виде
double volume_min=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
temp_string=StringFormat(" SYMBOL_VOLUME_MIN = %g (минимальный объем сделки)\r\n",volume_min);
StringAdd(output_string,temp_string);
//--- вывод значения double в компактном виде
double volume_step=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
temp_string=StringFormat(" SYMBOL_VOLUME_STEP = %g (минимальный шаг изменения объема сделки)\r\n",volume_step);
StringAdd(output_string,temp_string);
//--- вывод значения double в компактном виде
double volume_max=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
temp_string=StringFormat(" SYMBOL_VOLUME_MAX = %g (максимальный объем сделки)\r\n",volume_max);
StringAdd(output_string,temp_string);
//--- определение способа вычисления величины залоговых средств
int calc_mode=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_CALC_MODE);
string str_calc_mode;
switch(calc_mode)
{
case 0:str_calc_mode="0 (Forex)";break;
case 1:str_calc_mode="1 (CFD)";break;
case 2:str_calc_mode="2 (фьючерсы)";break;
case 3:str_calc_mode="3 (CFD на индексы)";break;
}
//--- вывод значения string
temp_string=StringFormat(" SYMBOL_TRADE_CALC_MODE = %s\r\n",
str_calc_mode);
StringAdd(output_string,temp_string);
//--- вывод значения double с 2 цифрами после десятичной точки
double margin_initial=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL);
temp_string=StringFormat(" SYMBOL_MARGIN_INITIAL = %.2f (начальная маржа)\r\n",
margin_initial);
StringAdd(output_string,temp_string);
//--- вывод значения double с 2 цифрами после десятичной точки
double margin_maintenance=SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_MAINTENANCE);
temp_string=StringFormat(" SYMBOL_MARGIN_MAINTENANCE = %.2f (поддерживающая маржа)\r\n",
margin_maintenance);
StringAdd(output_string,temp_string);
//--- вывод значения int
int freeze_level=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_FREEZE_LEVEL);
temp_string=StringFormat(" SYMBOL_TRADE_FREEZE_LEVEL = %d (дистанция заморозки операций в пунктах)",
freeze_level);
StringAdd(output_string,temp_string);
Print(output_string);
Comment(output_string);
/* результат выполнения
Спецификация контракта для EURJPY:
SYMBOL_DIGITS = 3 (количество знаков после запятой)
SYMBOL_POINT = 0.001 (значение одного пункта)
SYMBOL_SPREAD = 23 (текущий спред в пунктах)
SYMBOL_TRADE_STOPS_LEVEL = 100 (минимальный отступ в пунктах для стоп-ордеров)
SYMBOL_TRADE_CONTRACT_SIZE = 100000 (размер контракта)
SYMBOL_TRADE_TICK_SIZE = 0.001000 (минимальное изменение цены)
SYMBOL_SWAP_MODE = 0 (в пунктах)
SYMBOL_SWAP_LONG = -1.600000 (своп на покупку)
SYMBOL_SWAP_SHORT = -1.100000 (своп на продажу)
SYMBOL_TRADE_MODE = SYMBOL_TRADE_MODE_FULL (нет ограничений на торговые операции)
SYMBOL_VOLUME_MIN = 0.01 (минимальный объем сделки)
SYMBOL_VOLUME_STEP = 0.01 (минимальный шаг изменения объема сделки)
SYMBOL_VOLUME_MAX = 1000 (максимальный объем сделки)
SYMBOL_TRADE_CALC_MODE = 0 (Forex)
SYMBOL_MARGIN_INITIAL = 0.00 (начальная маржа)
SYMBOL_MARGIN_MAINTENANCE = 0.00 (поддерживающая маржа)
SYMBOL_TRADE_FREEZE_LEVEL = 20 (дистанция заморозки операций в пунктах)
*/
} |