SymbolInfoCommissions

Возвращает правила начисления комиссии для указанного торгового инструмента.

int  SymbolInfoCommissions(
   string           name,              // имя символа
   MqlCommission&   commissions[]      // массив правил комиссии
   );

Параметры

name

[in]  Имя символа. Если параметр равен NULL, используется текущий символ.

commissions

[out]  Динамический массив структур MqlCommission, в который будут записаны правила начисления комиссии для указанного символа.

Возвращаемое значение

В случае успешного выполнения функция возвращает количество элементов, записанных в массив commissions.

В случае ошибки возвращается -1. Для получения информации об ошибке можно использовать функцию GetLastError().

Примечание

Каждый элемент массива commissions описывает отдельное правило начисления комиссии. Общие условия применения комиссии задаются полями структуры MqlCommission, а конкретные значения и диапазоны комиссии — массивом уровней tiers.

Если для символа не заданы правила комиссии, функция возвращает 0.

Если в параметре name указано имя несуществующего или недоступного символа, функция возвращает -1.

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- объявляем динамический массив для получения правил начисления комиссии
   MqlCommission commissions[];
 
//--- получаем правила комиссии для текущего символа.
//--- если вместо NULL указать имя символа, функция вернет комиссии для этого символа.
   int total=SymbolInfoCommissions(NULL,commissions);
 
//--- проверяем результат выполнения функции
   if(total<0)
     {
      //--- в случае ошибки выводим код ошибки
      PrintFormat("SymbolInfoCommissions failed. Error %d",GetLastError());
      return;
     }
 
//--- выводим количество полученных правил комиссии
   PrintFormat("Commission rules: %d",total);
 
//--- перебираем все правила комиссии
   for(int i=0;i<total;i++)
     {
      //--- выводим основные параметры правила комиссии:
      //--- валюту, режим выбора диапазона и режим начисления
      PrintFormat("Rule %d: currency=%s, range mode=%d, charge mode=%d",
                  i,
                  commissions[i].currency,
                  commissions[i].mode_range,
                  commissions[i].mode_charge);
 
      //--- получаем количество уровней комиссии в текущем правиле
      int tiers_total=ArraySize(commissions[i].tiers);
 
      //--- перебираем уровни комиссии
      for(int j=0;j<tiers_total;j++)
        {
         //--- выводим параметры уровня комиссии:
         //--- способ расчета, значение, диапазон применения и валюту
         PrintFormat("  Tier %d: mode=%d, value=%G, range=%G - %G, currency=%s",
                     j,
                     commissions[i].tiers[j].mode,
                     commissions[i].tiers[j].value,
                     commissions[i].tiers[j].range_from,
                     commissions[i].tiers[j].range_to,
                     commissions[i].tiers[j].currency);
        }
     }
  }

 

Комиссии торгового инструмента

В этом разделе описаны перечисления и структуры, используемые для представления правил начисления комиссии по торговому инструменту.

Комиссия может задаваться в денежном выражении, пунктах, процентах, процентах от прибыли, а также рассчитываться по диапазонам объема, оборота, стоимости сделки или прибыли. Для одного правила комиссии может быть задано несколько уровней — MqlCommissionTier.

ENUM_SYMBOL_COMMISSION_MODE

Перечисление ENUM_SYMBOL_COMMISSION_MODE определяет способ расчета комиссии.

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

Описание

SYMBOL_COMMISSION_DISABLED

Комиссия отключена.

SYMBOL_COMMISSION_MONEY_DEPOSIT

Комиссия задается в валюте депозита торговой группы/счета.

SYMBOL_COMMISSION_MONEY_SYMBOL_BASE

Комиссия задается в базовой валюте торгового инструмента.

SYMBOL_COMMISSION_MONEY_SYMBOL_PROFIT

Комиссия задается в валюте прибыли торгового инструмента.

SYMBOL_COMMISSION_MONEY_SYMBOL_MARGIN

Комиссия задается в валюте маржи торгового инструмента.

SYMBOL_COMMISSION_PIPS

Комиссия задается в пунктах.

SYMBOL_COMMISSION_PERCENT

Комиссия задается в процентах.

SYMBOL_COMMISSION_MONEY_SPECIFIED

Комиссия задается в указанной валюте. Валюта указывается в соответствующем поле структуры комиссии или уровня комиссии.

SYMBOL_COMMISSION_PERCENT_PROFIT

Комиссия задается как процент от прибыли.

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

Перечисление ENUM_SYMBOL_COMMISSION_VOLUME_TYPE определяет, как значение комиссии применяется к торговой операции.

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

Описание

SYMBOL_COMMISSION_VOLUME_TYPE_TRADE

Комиссия начисляется за сделку.

SYMBOL_COMMISSION_VOLUME_TYPE_VOLUME

Комиссия рассчитывается пропорционально объему сделки.

SYMBOL_COMMISSION_VOLUME_TYPE_TURNOVER

Комиссия рассчитывается по обороту.

ENUM_SYMBOL_COMMISSION_RANGE_MODE

Перечисление ENUM_SYMBOL_COMMISSION_RANGE_MODE определяет показатель, по которому выбирается диапазон комиссии.

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

Описание

SYMBOL_COMMISSION_RANGE_VOLUME

Диапазон определяется по объему сделки.

SYMBOL_COMMISSION_RANGE_TURNOVER_MONEY

Диапазон определяется по денежному обороту.

SYMBOL_COMMISSION_RANGE_TURNOVER_VOLUME

Диапазон определяется по объемному обороту.

SYMBOL_COMMISSION_RANGE_VALUE

Диапазон определяется по стоимости сделки.

SYMBOL_COMMISSION_RANGE_PROFIT

Диапазон определяется по прибыли.

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

Перечисление ENUM_SYMBOL_COMMISSION_CHARGE_MODE определяет момент начисления комиссии.

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

Описание

SYMBOL_COMMISSION_CHARGE_DAILY

Комиссия начисляется в конце дня.

SYMBOL_COMMISSION_CHARGE_MONTHLY

Комиссия начисляется в конце месяца.

SYMBOL_COMMISSION_CHARGE_INSTANT

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

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

Перечисление ENUM_SYMBOL_COMMISSION_ENTRY_MODE определяет, на каком этапе торговой операции начисляется комиссия.

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

Описание

SYMBOL_COMMISSION_ENTRY_INOUT

Комиссия начисляется при входе в позицию и при выходе из позиции.

SYMBOL_COMMISSION_ENTRY_IN

Комиссия начисляется при входе в позицию.

SYMBOL_COMMISSION_ENTRY_OUT

Комиссия начисляется при выходе из позиции.

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

Перечисление ENUM_SYMBOL_COMMISSION_DIRECTION_MODE определяет направление сделок, к которым применяется комиссия.

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

Описание

SYMBOL_COMMISSION_DIRECTION_BOTH

Комиссия применяется к сделкам покупки и продажи.

SYMBOL_COMMISSION_DIRECTION_BUY

Комиссия применяется только к сделкам покупки.

SYMBOL_COMMISSION_DIRECTION_SELL

Комиссия применяется только к сделкам продажи.

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

Перечисление ENUM_SYMBOL_COMMISSION_PROFIT_MODE определяет, применяется ли комиссия в зависимости от финансового результата сделки.

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

Описание

SYMBOL_COMMISSION_PROFIT_ALL

Комиссия применяется ко всем сделкам.

SYMBOL_COMMISSION_PROFIT_PROFIT

Комиссия применяется только к прибыльным сделкам.

SYMBOL_COMMISSION_PROFIT_LOSS

Комиссия применяется только к убыточным сделкам.

 

MqlCommissionTier

Структура MqlCommissionTier описывает один уровень комиссии.

struct MqlCommissionTier
  {
   ENUM_SYMBOL_COMMISSION_MODE           mode;
   ENUM_SYMBOL_COMMISSION_VOLUME_TYPE    volume_type;
   double                                value;
   double                                min_value;
   double                                max_value;
   double                                range_from;
   double                                range_to;
   string                                currency;
  };

Описание полей

Поле

Тип

Описание

mode

ENUM_SYMBOL_COMMISSION_MODE

Способ расчета комиссии для данного уровня.

volume_type

ENUM_SYMBOL_COMMISSION_VOLUME_TYPE

Способ применения значения комиссии: за сделку, по объему или по обороту.

value

double

Значение комиссии. Интерпретация значения зависит от поля mode: денежная сумма, количество пунктов, процент или процент от прибыли.

min_value

double

Минимальное значение комиссии для данного уровня.

max_value

double

Максимальное значение комиссии для данного уровня.

range_from

double

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

range_to

double

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

currency

string

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

Примечание

Диапазон уровня комиссии определяется полями range_from и range_to. Показатель, по которому выбирается диапазон, задается в поле mode_range структуры MqlCommission.

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

 

MqlCommission

Структура MqlCommission описывает правило начисления комиссии по торговому инструменту.

struct MqlCommission
  {
   string                                   currency;
   ENUM_SYMBOL_COMMISSION_RANGE_MODE        mode_range;
   ENUM_SYMBOL_COMMISSION_CHARGE_MODE       mode_charge;
   ENUM_SYMBOL_COMMISSION_ENTRY_MODE        mode_entry;
   ENUM_SYMBOL_COMMISSION_DIRECTION_MODE    mode_direction;
   ENUM_SYMBOL_COMMISSION_PROFIT_MODE       mode_profit;
   MqlCommissionTier                        tiers[];
  };

Описание полей

Поле

Тип

Описание

currency

string

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

mode_range

ENUM_SYMBOL_COMMISSION_RANGE_MODE

Показатель, по которому выбирается диапазон комиссии: объем, денежный оборот, объемный оборот, стоимость сделки или прибыль.

mode_charge

ENUM_SYMBOL_COMMISSION_CHARGE_MODE

Момент начисления комиссии: в конце дня, в конце месяца или сразу при выполнении сделки.

mode_entry

ENUM_SYMBOL_COMMISSION_ENTRY_MODE

Этап торговой операции, на котором начисляется комиссия: вход, выход или вход и выход.

mode_direction

ENUM_SYMBOL_COMMISSION_DIRECTION_MODE

Направление сделок, к которым применяется комиссия: покупка, продажа или оба направления.

mode_profit

ENUM_SYMBOL_COMMISSION_PROFIT_MODE

Условие применения комиссии в зависимости от финансового результата сделки.

tiers

MqlCommissionTier[]

Динамический массив уровней комиссии. Каждый элемент массива описывает отдельный диапазон и параметры расчета комиссии для этого диапазона.

Примечание

Структура MqlCommission задает общие условия применения комиссии, а массив tiers содержит уровни комиссии с конкретными значениями и диапазонами.

При расчете комиссии сначала проверяются общие условия правила: направление сделки, этап входа или выхода, финансовый результат, момент начисления и причина начисления. Затем по значению mode_range выбирается подходящий уровень из массива tiers.

Если массив tiers пуст, уровни комиссии для данного правила не заданы.

 

Смотри также

SymbolsTotal, SymbolSelect, SymbolInfoMarginRate