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_fromrange_to에 의해 결정됩니다. 범위를 선택하는 데 사용되는 지표는 MqlCommission 구조체의 mode_range 필드에 지정됩니다.

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