口座プロパティ

現在の口座に関する情報を取得するには AccountInfoInteger()AccountInfoDouble() 及び AccountInfoString() の複数の関数があります。関数のパラメータは、対応するENUM_ACCOUNT_INFO の列挙からの値を受け入れることが出来ます。

AccountInfoInteger() 関数では

ENUM_ACCOUNT_INFO_INTEGER

識別子

説明

種類

ACCOUNT_LOGIN

口座番号。

long

ACCOUNT_TRADE_MODE

口座取引モード。

ENUM_ACCOUNT_TRADE_MODE

ACCOUNT_LEVERAGE

口座レバレッジ。

long

ACCOUNT_LIMIT_ORDERS

アクティブな未決注文の最大許容数。

int

ACCOUNT_MARGIN_SO_MODE

許容された最小証拠金を設定するモード。

ENUM_ACCOUNT_STOPOUT_MODE

ACCOUNT_TRADE_ALLOWED

現在の口座で許可された取引

bool

ACCOUNT_TRADE_EXPERT

エキスパートアドバイザーで許可された取引

bool

ACCOUNT_MARGIN_MODE

証拠金計算モード

ENUM_ACCOUNT_MARGIN_MODE

ACCOUNT_CURRENCY_DIGITS

取引結果を正確に表示するために必要な口座通貨の小数点以下の桁数

int

ACCOUNT_FIFO_CLOSE

FIFOルールによってのみポジションを決済できることを示します。プロパティ値がtrueに設定されている場合、各シンボルのポジションは、最も古いものから順に同じ順序で決済されます。別の注文でポジションを決済しようとした場合、適切なエラーが発生します。

 

ヘッジなしポジション会計モード(ACCOUNT_MARGIN_MODE!=ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)では、プロパティ値は常にfalseです。

bool

AccountInfoDouble() 関数では

ENUM_ACCOUNT_INFO_DOUBLE

識別子

説明

種類

ACCOUNT_BALANCE

預金通貨での勘定残高。

double

ACCOUNT_CREDIT

預金通貨での口座のクレジット。

double

ACCOUNT_PROFIT

預金通貨での現在の利益。

double

ACCOUNT_EQUITY

預金通貨の口座株式。

double

ACCOUNT_MARGIN

預金通貨での使用された口座の証拠金。

double

ACCOUNT_MARGIN_FREE

預金通貨での口座の余剰証拠金。

double

ACCOUNT_MARGIN_LEVEL

百分率で表した口座証拠金レベル。

double

ACCOUNT_MARGIN_SO_CALL

証拠金コールレベル。ACCOUNT_MARGIN_SO_MODE の設定によってパーセントまたは預金通貨で表されます。

double

ACCOUNT_MARGIN_SO_SO

証拠金ストップアウトレベル。ACCOUNT_MARGIN_SO_MODE の設定によってパーセントまたは預金通貨で表されます。

double

ACCOUNT_MARGIN_INITIAL

当初証拠金。全ての未決注文の証拠金をカバーするために口座内でリザーブされた額。

double

ACCOUNT_MARGIN_MAINTENANCE

維持証拠金。全ての未決済ポジションの最小額をカバーするために口座内でリザーブされた最低資本金。

double

ACCOUNT_ASSETS

口座の流動資産。

double

ACCOUNT_LIABILITIES

口座の流動負債。

double

ACCOUNT_COMMISSION_BLOCKED

口座の現在のブロックされた手数料の額。

double

AccountInfoString() 関数では

ENUM_ACCOUNT_INFO_STRING

識別子

説明

種類

ACCOUNT_NAME

クライアント名。

string

ACCOUNT_SERVER

取引サーバ名。

string

ACCOUNT_CURRENCY

口座通貨。

string

ACCOUNT_COMPANY

口座を提供する会社の名称。

string

取引サーバ上で開くことが出来る口座にはいくつかの種類があります。MQL5 が実行されている口座の種類は ENUM_ACCOUNT_TRADE_MODE 列挙を使用して見つけることが出来ます。

ENUM_ACCOUNT_TRADE_MODE

識別子

説明

ACCOUNT_TRADE_MODE_DEMO

デモ口座。

ACCOUNT_TRADE_MODE_CONTEST

コンテスト口座。

ACCOUNT_TRADE_MODE_REAL

リアル口座。

資本が保有中ポジションを維持するために不充分な場合には、ストップアウト、すなわち強制閉鎖が発生します。ストップアウトが起こる最小証拠金レベルは百分率または金銭で設定することが出来ます。口座がどちらのモードを使用するかは ENUM_ACCOUNT_STOPOUT_MODE 列挙で見つけられます。

ENUM_ACCOUNT_STOPOUT_MODE

識別子

説明

ACCOUNT_STOPOUT_MODE_PERCENT

口座ストップアウトの百分率モード。

ACCOUNT_STOPOUT_MODE_MONEY

口座ストップアウトの通貨モード。

ENUM_ACCOUNT_MARGIN_MODE

識別子

説明

ACCOUNT_MARGIN_MODE_RETAIL_NETTING

『ネッティング』モード(1つのシンボルに対し、1つのポジションのみ)におけるポジション計算時に市場外市場の為に使用されます。商品種別をベースに証拠金の計算が行われます(SYMBOL_TRADE_CALC_MODE)。

ACCOUNT_MARGIN_MODE_EXCHANGE

株式市場で使用されます。商品設定で指定された割引に基づいて証拠金が計算されます。割引はブローカーによって設定されますが、取引所が決めた額よりも低くなることはありません

ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

株式市場外の独立したポジション計算時(『ヘッジング』は一つのシンボルに対し複数のポジションを保有することができる)に使用されます。商品種別(SYMBOL_TRADE_CALC_MODE)に基づき、ヘッジ対象証拠金のサイズを考慮して(SYMBOL_MARGIN_HEDGED)証拠金の計算が行われます。

下記は簡単な口座情報を出力するスクリプトの例です。

//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- 会社名
  string company=AccountInfoString(ACCOUNT_COMPANY);
//--- クライアント名
  string name=AccountInfoString(ACCOUNT_NAME);
//--- 口座番号
  long login=AccountInfoInteger(ACCOUNT_LOGIN);
//--- サーバ名
  string server=AccountInfoString(ACCOUNT_SERVER);
//--- 口座通貨
  string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- デモ、コンテスト、またはリアル(実際の)口座
  ENUM_ACCOUNT_TRADE_MODE account_type=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
//--- 列挙値を理解出来る形式に変換する
  string trade_mode;
  switch(account_type)
    {
    case ACCOUNT_TRADE_MODE_DEMO:
        trade_mode="demo";
        break;
    case ACCOUNT_TRADE_MODE_CONTEST:
        trade_mode="contest";
        break;
    default:
        trade_mode="real";
        break;
    }
//--- ストップアウトは百分率または通貨で設定される
  ENUM_ACCOUNT_STOPOUT_MODE stop_out_mode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
//--- 証拠金コールとストップアウトが発生した時のレベルの値を取得する
  double margin_call=AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL);
  double stop_out=AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
//--- 簡単な口座情報を表示する
  PrintFormat("The account of the client '%s' #%d %s opened in '%s' on the server '%s'",
              name,login,trade_mode,company,server);
  PrintFormat("Account currency - %s, MarginCall and StopOut levels are set in %s",
              currency,(stop_out_mode==ACCOUNT_STOPOUT_MODE_PERCENT)?"percentage":" money");
  PrintFormat("MarginCall=%G, StopOut=%G",margin_call,stop_out);
 }