Документация
Automated Trading Championship 2010 - соревнование торговых роботов

Информация об инструменте

Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно.

Для функции SymbolInfoInteger()

ENUM_SYMBOL_INFO_INTEGER

Идентификатор

Описание

Тип свойства

SYMBOL_SELECT

Признак того, что символ выбран в Market Watch

bool

SYMBOL_VOLUME

Volume - объем в последней сделке

long

SYMBOL_VOLUMEHIGH

Максимальный Volume за день

long

SYMBOL_VOLUMELOW

Минимальный Volume за день

long

SYMBOL_VOLUMEBID

Объем в текущем Bid

long

SYMBOL_VOLUMEASK

Объем в текущем Ask

long

SYMBOL_TIME

Время последней котировки

datetime

SYMBOL_DIGITS

Количество знаков после запятой

int

SYMBOL_SPREAD

Размер спреда в пунктах

int

SYMBOL_SPREAD_FLOAT

Признак плавающего спреда

bool

SYMBOL_TICKS_BOOKDEPTH

Максимальное количество показываемых заявок в стакане. Для инструментов, не имеющих очереди заявок, значение равно 0

int

SYMBOL_TRADE_CALC_MODE

Способ вычисления стоимости контракта

ENUM_SYMBOL_CALC_MODE

SYMBOL_TRADE_MODE

Тип исполнения ордеров

ENUM_SYMBOL_TRADE_MODE

SYMBOL_START_TIME

Дата начала торгов по инструменту (обычно используется для фьючерсов)

datetime

SYMBOL_EXPIRATION_TIME

Дата окончания торгов по инструменту (обычно используется для фьючерсов)

datetime

SYMBOL_TRADE_STOPS_LEVEL

Минимальный отступ в пунктах от текущей цены закрытия для установки Stop ордеров

int

SYMBOL_TRADE_FREEZE_LEVEL

Дистанция заморозки торговых операций (в пунктах)

int

SYMBOL_TRADE_EXEMODE

Режим заключения сделок

ENUM_SYMBOL_TRADE_EXECUTION

SYMBOL_SWAP_MODE

Модель расчета свопа

ENUM_SYMBOL_SWAP_MODE

SYMBOL_SWAP_ROLLOVER3DAYS

День недели для начисления тройного свопа

ENUM_DAY_OF_WEEK

SYMBOL_EXPIRATION_MODE

Флаги разрешенных режимов истечения ордера

int

SYMBOL_FILLING_MODE

Флаги разрешенных режимов заливки ордера

int

Для функции SymbolInfoDouble()

ENUM_SYMBOL_INFO_DOUBLE

Идентификатор

Описание

Тип свойства

SYMBOL_BID

Bid - лучшее предложение на продажу

double

SYMBOL_BIDHIGH

Максимальный Bid за день

double

SYMBOL_BIDLOW

Минимальный Bid за день

double

SYMBOL_ASK

Ask - лучшее предложение на покупку

double

SYMBOL_ASKHIGH

Максимальный Ask за день

double

SYMBOL_ASKLOW

Минимальный Ask за день

double

SYMBOL_LAST

Цена, по которой совершена последняя сделка

double

SYMBOL_LASTHIGH

Максимальный Last за день

double

SYMBOL_LASTLOW

Минимальный Last за день

double

SYMBOL_POINT

Значение одного пункта

double

SYMBOL_TRADE_TICK_VALUE

Значение SYMBOL_TRADE_TICK_VALUE_PROFIT

double

SYMBOL_TRADE_TICK_VALUE_PROFIT

Рассчитанная стоимость тика для прибыльной позиции

double

SYMBOL_TRADE_TICK_VALUE_LOSS

Рассчитанная стоимость тика для убыточной позиции

double

SYMBOL_TRADE_TICK_SIZE

Минимальное изменение цены

double

SYMBOL_TRADE_CONTRACT_SIZE

Размер торгового контракта

double

SYMBOL_VOLUME_MIN

Минимальный объем для заключения сделки

double

SYMBOL_VOLUME_MAX

Максимальный объем для заключения сделки

double

SYMBOL_VOLUME_STEP

Минимальный шаг изменения объема для заключения сделки

double

SYMBOL_VOLUME_LIMIT

Максимально допустимый совокупный объем открытой позиции и отложенных ордеров (вне зависимости от направления) на одном символе

double

SYMBOL_SWAP_LONG

Значение свопа в покупку

double

SYMBOL_SWAP_SHORT

Значение свопа в продажу

double

SYMBOL_MARGIN_INITIAL

Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия позиции объемом в один лот. Используется при проверке средств клиента при входе в рынок.

double

SYMBOL_MARGIN_MAINTENANCE

Поддерживающая маржа по инструменту. В случае если задана – указывает размер маржи в маржинальной валюте инструмента, удерживаемой с одного лота. Используется при проверке средств клиента при изменении состояния счета клиента. Если поддерживающая маржа равна 0, то используется начальная маржа.

double

SYMBOL_MARGIN_LONG

Коэффициент взимания маржи по длинным позициям

double

SYMBOL_MARGIN_SHORT

Коэффициент взимания маржи по коротким позициям

double

SYMBOL_MARGIN_LIMIT

Коэффициент взимания маржи по Limit ордерам

double

SYMBOL_MARGIN_STOP

Коэффициент взимания маржи по Stop ордерам

double

SYMBOL_MARGIN_STOPLIMIT

Коэффициент взимания маржи по Stop Limit ордерам

double

Для функции SymbolInfoString()

ENUM_SYMBOL_INFO_STRING

Идентификатор

Описание

Тип свойства

SYMBOL_CURRENCY_BASE

Базовая валюта инструмента

string

SYMBOL_CURRENCY_PROFIT

Валюта прибыли

string

SYMBOL_CURRENCY_MARGIN

Валюта в которой вычисляется залоговые средства

string

SYMBOL_BANK

Источник текущей котировки

string

SYMBOL_DESCRIPTION

Строковое описание символа

string

SYMBOL_PATH

Путь в дереве символов

string

 

Для каждого финансового инструмента могут быть указаны несколько режимов срока действия (истечения) отложенных ордеров. Каждому режиму сопоставлен флаг, флаги могут комбинироваться операцией логического ИЛИ (|), например, SYMBOL_EXPIRATION_GTC|SYMBOL_EXPIRATION_SRECIFIED. Чтобы проверить разрешенность конкретного режима для инструмента, необходимо результат логического И (&) сравнить с флагом режима.

Если для символа указан флаг SYMBOL_EXPIRATION_SRECIFIED, то при отправке отложенного ордера можно конкретно указать, до какого момента действует данный отложенный ордер.

Идентификатор

Значение

Описание

SYMBOL_EXPIRATION_GTC

1

Ордер действителен неограниченно по времени до явной его отмены

SYMBOL_EXPIRATION_DAY

2

Ордер действителен до конца дня

SYMBOL_EXPIRATION_SRECIFIED

4

Срок истечения указывается в ордере

Пример:

//+------------------------------------------------------------------+
//| проверяет разрешенность указанного режима экспирации             |
//+------------------------------------------------------------------+
bool IsExpirationTypeAllowed(string symbol,int exp_type)
  {
//--- получим значение свойства, описывающего допустимые режимы истечения срока действия
   int expiration=(int)SymbolInfoInteger(symbol,SYMBOL_EXPIRATION_MODE);
//--- вернем true, если режим exp_type разрешен
   return((expiration&exp_type)==exp_type);
  }

 

При отправке ордера можно указать политику заполнения заявленного в торговом приказе объема. Допустимые варианты исполнения ордера по объему для каждого символа указаны таблице. Для каждого инструмента может быть установлен не один режим, а несколько через комбинацию флагов. Комбинация флагов выражается операцией логического ИЛИ (|), например, SYMBOL_FILLING_ALL_OR_NONE|SYMBOL_CANCEL_REMAIND.  Чтобы проверить разрешенность конкретного режима для инструмента, необходимо результат логического И (&) сравнить с флагом режима.

Идентификатор

Значение

Описание

SYMBOL_FILLING_ALL_OR_NONE

1

Указано "Все или ничего", если необходимый объем в ордере по указанной цене не набирается, то ордер отменяется и сделка не проводится

SYMBOL_CANCEL_REMAIND

2

Если по указанной в ордере цене сделку можно заполнить только частично, то совершается сделка на доступный объем. Остаток по ордеру снимается, новый ордер не выставляется

SYMBOL_RETURN_REMAIND

4

Совершается сделка по указанной в заявке цене в пределах доступного объема. На остаток от заполнения выставляется новый ордер по той же цене

Пример:

//+------------------------------------------------------------------+
//| проверяет разрешенность указанного режима заполнения             |
//+------------------------------------------------------------------+
bool IsFiilingTypeAllowed(string symbol,int fill_type)
  {
//--- получим значение свойства, описывающего режим заполнения
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен
   return((filling&fill_type)==fill_type);
  }

 

Для получения информации о способе вычисления величины залоговых средств по инструменту (размера маржинальных требований) предназначено перечисление ENUM_SYMBOL_CALC_MODE.

ENUM_SYMBOL_CALC_MODE

Идентификатор

Описание

Формула

SYMBOL_CALC_MODE_FOREX

Forex mode – расчет прибыли и маржи для Форекс

Margin:  Lots*Contract_Size/Leverage

Profit:   (close_price-open_price)*Contract_Size*Lots

SYMBOL_CALC_MODE_FUTURES

Futures mode – расчет залога и прибыли для фьючерсов

Margin: Lots *InitialMargin*Percentage/100

Profit:  (close_price-open_price)*TickPrice/TickSize*Lots

SYMBOL_CALC_MODE_CFD

CFD mode – расчет залога и прибыли для CFD

Margin: Lots *ContractSize*MarketPrice*Percentage/100

Profit:  (close_price-open_price)*Contract_Size*Lots

SYMBOL_CALC_MODE_CFDINDEX

CFD index mode – расчет залога и прибыли для CFD на индексы

Margin: (Lots*ContractSize*MarketPrice)*TickPrice/TickSize

Profit:  (close_price-open_price)*Contract_Size*Lots

SYMBOL_CALC_MODE_CFDLEVERAGE

CFD Leverage mode – расчет залога и прибыли для CFD при торговле с плечом

Margin: (Lots*ContractSize*MarketPrice*Percentage)/Leverage

Profit:  (close_price-open_price)*Contract_Size*Lots

 

Существует несколько режимов торговли по финансовым инструментам. Информация о режимах торговли по конкретному инструменту отображена в значениях перечисления ENUM_SYMBOL_TRADE_MODE.

ENUM_SYMBOL_TRADE_MODE

Идентификатор

Описание

SYMBOL_TRADE_MODE_DISABLED

Торговля по символу запрещена

SYMBOL_TRADE_MODE_LONGONLY

Разрешены только покупки

SYMBOL_TRADE_MODE_SHORTONLY

Разрешены только продажи

SYMBOL_TRADE_MODE_CLOSEONLY

Разрешены только операции закрытия позиций

SYMBOL_TRADE_MODE_FULL

Нет ограничений на торговые операции

 

Возможные режимы заключения сделок по конкретному инструменту определены в перечислении  ENUM_SYMBOL_TRADE_EXECUTION.

ENUM_SYMBOL_TRADE_EXECUTION

Идентификатор

Описание

SYMBOL_TRADE_EXECUTION_REQUEST

Торговля по запросу

SYMBOL_TRADE_EXECUTION_INSTANT

Торговля по потоковым ценам

SYMBOL_TRADE_EXECUTION_MARKET

Исполнение ордеров по рынку

 

Способы начисления свопов при переносе позиции указаны в перечислении ENUM_SYMBOL_SWAP_MODE.

ENUM_SYMBOL_SWAP_MODE

Идентификатор

Описание

SYMBOL_SWAP_MODE_DISABLED

Нет свопов

SYMBOL_SWAP_MODE_BY_POINTS

Свопы начисляются в пунктах

SYMBOL_SWAP_MODE_BY_MONEY

Свопы начисляются в деньгах, размер свопа в свойствах символа указан в валюте депозита клиента.

SYMBOL_SWAP_MODE_BY_INTEREST

Свопы начисляются в годовых процентах (банковский режим – 360 дней в году)

SYMBOL_SWAP_MODE_BY_MARGIN_CURRENCY

Свопы начисляются в деньгах, размер свопа в свойствах символа указан в маржинальной валюте символа.

 

Для указания дня недели предназначены значения перечисления ENUM_DAY_OF_WEEK.

ENUM_DAY_OF_WEEK

Идентификатор

Описание

SUNDAY

Воскресенье

MONDAY

Понедельник

TUESDAY

Вторник

WEDNESDAY

Среда

THURSDAY

Четверг

FRIDAY

Пятница

SATURDAY

Суббота