口座残高
EA(エキスパートアドバイザー)を作成すると非常に重要になるのが口座残高に関する情報です。
開発する際に非常に重要です。
今回は口座残高系でよく活用するソースコードをご紹介したいと思います。
残高 (Balance)
残高 (Balance)はその名の通りで口座残高になります。
口座残高は含み損益を一切考慮していないので、ポジションが決済されるまでは値が変化しません。
含み損益を一切考慮していないので、ポジションを決済するまで値は変化しない。
double AccountBalance();
含み損益 (Floating Profit/Loss)
含み損益 (Floating Profit/Loss)はオープンポジションの損益合計になります。
double AccountProfit();
有効証拠金 (Equity)
有効証拠金は口座残高に未実現の損益(含み益/含み損)を加えた証拠金残高です。
有効証拠金 (Equity)はAccountEquity()で求めることができます。
double AccountEquity();//有効証拠金 = 残高 + 含み損益
必要証拠金 (Margin)
必要証拠金 (Margin)は売買に必要な最低額です。
必要証拠金 ≒ 約定金額 / レバレッジ
約低金額は本来売買に必要な金額(約定予定を含む)です。
1ドル=100円で1万通貨を売買する場合は100万円。
レバレッジが1の場合100万円が口座になければ、
売買できませんが、レバレッジ100でれば1万円あれば売買することができます。
注意点としては、実際の値は業者によって丸められることがあるので注意が必要です。
まず、新規ポジションの必要証拠金を調べるためにAccountFreeMarginCheck() を利用します。
double AccountFreeMarginCheck( string symbol, // symbol int cmd, // trade operation double volume // volume );
AccountFreeMarginCheck() は、新規ポジションを取った場合の余剰証拠金を求める点に注意が必要です。
必要証拠金に変換する場合は現時点の余剰証拠金との差分を取る必要があります。
必要証拠金と書いて、オープンポジションの必要証拠金合計を指すこともあります。
この合計値を正確に求めるには AccountMargin() が使える。
double new_margin = AccountFreeMargin() - AccountFreeMarginCheck(Symbol(), OP_BUY, MarketInfo(Symbol(), MODE_MINLOT);
余剰証拠金 (Free Margin)
余剰証拠金 (Free Margin)は有効証拠金から必要証拠金を差し引いた金額になります。
利益が発生すると、利益分が余剰証拠金に加えられます。
逆に損失が発生すると、損失分が余剰証拠金から差し引かられていきます。
余剰証拠金が新規の必要証拠金以上ないと新規注文は出来ないです。
余剰証拠金 (Free Margin)はAccountFreeMargin() で求めることができます。
double AccountFreeMarginCheck( string symbol, // symbol int cmd, // trade operation double volume // volume );//余剰証拠金 = 有効証拠金 - オープンポジションの必要証拠金合計
余剰証拠金維持率 (Margin Level)
余剰証拠金維持率 (Margin Level)は時価評価総額に対する必要証拠金の割合のことです。
一般的には余剰証拠金維持率が一定値以下になると強制ロスカットされます。
余剰証拠金維持率、強制ロスカットレベルなどはAccountInfoDouble() で求めることができる。
//余剰証拠金維持率 double margin_level = AccountInfoDouble(ACCOUNT_MARGIN_LEVEL); //SO_CALL はメールなどで連絡が来るレベル //SO_SO は強制ロスカットになるレベル double so_call = AccountInfoDouble(ACCOUNT_MARGIN_SO_CALL); double so_so = AccountInfoDouble(ACCOUNT_MARGIN_SO_SO);
なお強制ロスカットのレベルは業者によって、
- 割合(余剰証拠金維持率)
- 金額(余剰証拠金)
の2通りがあります。
ACCOUNT_MARGIN_SO_MODEがACCOUNT_STOPOUT_MODE_PERCENTの場合は、
余剰証拠金維持率を参照しており、
ACCOUNT_STOPOUT_MODE_MONEY の時は余剰証拠金の額そのものを参照します。
ENUM_ACCOUNT_STOPOUT_MODE stop_mode = (ENUM_ACCOUNT_STOPOUT_MODE) AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE); // 0: ACCOUNT_STOPOUT_MODE_PERCENT // 1: ACCOUNT_STOPOUT_MODE_MONEY
まとめ
今回は口座残高に関するソースコードをご紹介しました。
EA(エキスパートアドバイザー)を作成する場合に非常に重要なので、
ぜひ理解して使いこなせるようにしましょう。
コメント