スポンサーリンク
ホーム » MQL5リファレンス » 【MQL5】AccountInfoInteger関数について
a

【MQL5】AccountInfoInteger関数について

スポンサーリンク
MQL5リファレンス
スポンサーリンク

スポンサーリンク

AccountInfoInteger関数の働き・役割について

AccountInfoInteger関数は、アカウントに関する様々な整数型の情報を取得するために使用されます。例えば、アカウントで許容されているレバレッジ待機注文の注文数など、トレードを行う上で知っておくべき基本情報を提供してくれます。

スポンサーリンク

AccountInfoInteger関数の引数について

AccountInfoInteger関数は、一つの引数を取ります。

MQL5公式リファレンスでの定義は以下のようになっています。

MQL5公式リファレンスの見方については↓の記事をご参照ください↓

long  AccountInfoInteger(
  ENUM_ACCOUNT_INFO_INTEGER  property_id      // プロパティ識別子
  );

この引数は、取得したいアカウント情報の種類を指定するためのものです。

引数データ型MQL5側で事前に定められたenum列挙型であるENUM_ACCOUNT_INFO_INTEGERです。

enum列挙型については↓の記事をご参照ください。

ENUM_ACCOUNT_INFO_INTEGERで事前に設定されている定数の中から、取得したい情報を引数に記述して使います。

例えば、アカウントのレバレッジを知りたい場合は、引数ACCOUNT_LEVERAGEを記述する、といった感じです。次のセクションではENUM_ACCOUNT_INFO_INTEGERについてのより詳しい解説をしていきます。

ENUM_ACCOUNT_INFO_INTEGERについて

改めての説明になりますが、

ENUM_ACCOUNT_INFO_INTEGERAccountInfoInteger関数を使って口座情報を取得する際に、定められているenum列挙型定数リストです。

ENUM_ACCOUNT_INFO_INTEGERは、アカウントに関する情報を整数値で取得するための識別子を定義しています。

これらの識別子AccountInfoInteger関数引数として使用することで、様々なアカウント情報を取得することができます。

以下は、主な※識別子の一覧と、それぞれがどんな情報を提供するか、およびそのデータ型についての説明です。

識別子とは?

識別子」とは、、プログラミングにおいて、変数関数などの要素を、一意(=ユニーク/唯一の存在)としてに識別するための名前やシンボルのことを指します。

今回のENUM_ACCOUNT_INFO_INTEGERにおける識別子とは、アカウント情報を指定して取得するために使用される一連の定数リストになります。

ENUM_ACCOUNT_INFO_INTEGERの識別子

ENUM_ACCOUNT_INFO_INTEGER識別子は以下の通りです。

※混乱してきた方もいるかもしれないので再度書きますが、ENUM_ACCOUNT_INFO_INTEGER識別子AccountInfoInteger関数引数として使用する為のものです。

ACCOUNT_LOGIN

役割: ACCOUNT_LOGINはアカウント番号(=口座番号)を取得します。

データ型: long

ACCOUNT_TRADE_MODE

役割: ACCOUNT_TRADE_MODEはアカウント(口座)の取引モードを取得します。例えば、使われているアカウントの種類がデモアカウントかリアルアカウントかを確認するために使います。

データ型: ENUM_ACCOUNT_TRADE_MODE

ENUM_ACCOUNT_TRADE_MODEについて

ENUM_ACCOUNT_TRADE_MODEは、MQL5におけるアカウントの取引モードを表す識別子で、アカウントがどのような取引をサポートしているかを示します。

AccountInfoInteger関数引数に「ACCOUNT_TRADE_MODE」を指定した時の、戻り値の種類、と考えればOKです。

ENUM_ACCOUNT_TRADE_MODEを使用して、プログラムはアカウントがデモ取引なのか、リアル取引なのか、または他の取引モードを使用しているのかを判別できます。具体的には、以下の値を取ることができます

TRADE_MODE_DEMO

TRADE_MODE_DEMOはデモ取引モードを示します。実際の金銭は関与せず、トレーディングの練習や戦略のテストに使用されます。

TRADE_MODE_CONTEST

TRADE_MODE_CONTESTはコンテスト(競争)モードを示します。トレーディングコンテストに参加しているアカウントで使用されます。

TRADE_MODE_REAL

TRADE_MODE_REALはリアル取引モードを示します。実際の資金を使用したトレーディングが行われます。

ACCOUNT_LEVERAGE

役割: ACCOUNT_LEVERAGEはアカウントのレバレッジを取得します。

データ型: long

レバレッジとは?

レバレッジとは、少ない資金で大きな取引を行うことができる仕組みのことです。

レバレッジとは「てこ」を意味し、あたかも「てこの原理」を使って少ない力でより重いものを持ち上げるかのように、トレーダーが自身の資金の何倍もの金額で取引を行うことを可能にします。

例えば、レバレッジが10倍であれば、1000ドルの自己資金で10,000ドル分の取引が可能になります。

レバレッジの仕組みにより、小さな資金でも大きな利益を目指すことができますが、同時に損失のリスクも大きくなるため、注意が必要です。レバレッジは、特に外国為替(FX)取引や株式取引などでよく使用されます。

ACCOUNT_LIMIT_ORDERS

役割:ACCOUNT_LIMIT_ORDERSはアカウントで許可されている待機注文の最大数を取得します。

データ型:int

待機注文については↓の記事リンクをご参照ください。

ACCOUNT_MARGIN_SO_MODE

役割: ACCOUNT_MARGIN_SO_MODEはマージンコール(強制ロスカット)に関するモードを取得します。このモードには、マージンコールが発生する条件が定義されています。

データ型: ENUM_ACCOUNT_STOPOUT_MODE

ENUM_ACCOUNT_STOPOUT_MODEについて

ENUM_ACCOUNT_STOPOUT_MODEはアカウントのストップアウト(強制ロスカット)モードを示します。

ENUM_ACCOUNT_STOPOUT_MODEは、AccountInfoInteger関数引数に「ACCOUNT_MARGIN_SO_MODE」を指定した時の、戻り値の種類、と考えればOKです。

ストップアウトとは、トレーダーの口座の資金が一定の水準以下になった際に、自動的にポジションが閉じられることを指します。これは、さらなる損失を防ぐための保護措置です。

ENUM_ACCOUNT_STOPOUT_MODEには主に以下の2つの値があります

ACCOUNT_STOPOUT_MODE_PERCENT

ACCOUNT_STOPOUT_MODE_PERCENTのモードが返ってきた場合、ストップアウトは口座のマージンレベルが特定のパーセンテージに達した時に発生します。

例えば、マージンレベルが20%に設定されている場合、口座の有効マージンに対する損失が80%に達した時点でストップアウトが発生します。

ACCOUNT_STOPOUT_MODE_MONEY

ACCOUNT_STOPOUT_MODE_MONEYのモードが返ってきた場合、ストップアウトは口座の資金が特定の金額に達した時に発生します。

この場合、口座の残高が設定された金額以下になると、ポジションが自動的に閉じられます。

ACCOUNT_TRADE_ALLOWED

役割: ACCOUNT_TRADE_ALLOWEDはアカウントでの取引が許可されているかどうかを示します。

データ型: bool

※falseが返される場合、ローカーが特定のアカウントに対して取引を一時的に禁止している状況であったり、取引所が閉まっている時間帯(例えば、週末や祝日)であったりする、などの可能性が考えられます。

ACCOUNT_TRADE_EXPERT

役割:ACCOUNT_TRADE_EXPERTEAによる取引が許可されているかどうかを示します。ACCOUNT_TRADE_ALLOWEDが自動/手動を問わず、取引自体の許可を確認されているかを確認するのに対し、ACCOUNT_TRADE_EXPERTEAによる取引が許可されているかを確認する、という違いがあります。

データ型: bool

※falseが返された場合、ブローカーが提供する特定のアカウントタイプでEAの使用を制限している可能性、トレーダーがMetaTrader5のプラットフォーム設定で「自動取引を許可する」オプションを無効にしている可能性などが考えられます。

ACCOUNT_MARGIN_MODE

働き:ACCOUNT_MARGIN_MODEはアカウントのマージン計算モードを示す識別子です。

マージンとは、ポジションを開くために必要な証拠金のことで、ACCOUNT_MARGIN_MODEの設定はトレーダーがどのように証拠金を計算し、管理する必要があるかを決定します。ACCOUNT_MARGIN_MODEを使用することで、プログラムはアカウントで採用されているマージン計算方式を判断できます。

※いろんな定数リストが出てきて混乱しがちなので、くどいようですが書いておきます。

ACCOUNT_MARGIN_MODEAccountInfoInteger関数引数として使用する為のものです。

データ型ENUM_ACCOUNT_MARGIN_MODE

ENUM_ACCOUNT_MARGIN_MODE

ENUM_ACCOUNT_MARGIN_MODEには主に以下の3つのモードがあります

ENUM_ACCOUNT_MARGIN_MODEAccountInfoInteger関数引数としてACCOUNT_MARGIN_MODEを記述した際の戻り値、と考えればOKです。

ACCOUNT_MARGIN_MODE_RETAIL_NETTING

ACCOUNT_MARGIN_MODE_RETAIL_NETTINGは小売顧客向けのネッティングシステムで使用されます。このモードでは、同じシンボルの複数のポジションが合算され、1つのネットポジションとして扱われます。マージン(証拠金)はこのネットポジションに基づいて計算されます。

ネッティングシステムについての詳細は↓の記事リンクをご参照ください

ACCOUNT_MARGIN_MODE_EXCHANGE

ACCOUNT_MARGIN_MODE_EXCHANGEの場合、交換取引所の規則に従ったマージン計算が行われます。ACCOUNT_MARGIN_MODE_EXCHANGEは、主に商品先物取引などで見られ、ポジションごとにマージンが計算される場合があります。

ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

ACCOUNT_MARGIN_MODE_RETAIL_HEDGINGが返ってきた場合、ヘッジングシステムを採用している事を意味します。

ヘッジングシステムでは、同じシンボルの異なる方向への複数のポジションを個別に保持することができ、それぞれのポジションに対してマージンが計算されます。これにより、より柔軟なリスク管理が可能になります。

ヘッジングシステムについての詳細は↓の記事リンクをご参照ください

ACCOUNT_CURRENCY_DIGITS

働き:ACCOUNT_CURRENCY_DIGITSはアカウントの基準通貨の価値をどの程度の精度で扱うかを知るためのものです。例えば、ACCOUNT_CURRENCY_DIGITS2を返した場合、基準通貨の金額は小数点以下2桁までを扱うということになります(例: 1.00 USD)。

データ型int

ACCOUNT_FIFO_CLOSE

働き:ACCOUNT_FIFO_CLOSEは特定の取引アカウントがFIFO規則に従ってポジションを管理する必要があるかどうかを示します

FIFO規則とは?

FIFO規則(First In, First Out)は、最初に開かれたポジションを最初に閉じるという取引の原則です。この規則は、特に金融市場での取引において、特定の商品や証券の売買順序を管理するために用いられます。

FIFO規則の目的は、透明性と公平性を保つことにあります。トレーダーが同じ商品に対して複数のポジションを持っている場合、FIFO規則により最も古いポジションが最初に閉じられます。これにより、ポジションの保有期間が明確になり、税金計算や利益計算の基準が統一されます。

例えば、トレーダーがある株式を異なる時期に3回購入したとします。売却時にFIFO規則を適用すると、最初に購入した株式が最初に売却されることになります。

FIFO規則は、特にアメリカの金融市場で強く規制されている場合があります。アメリカの証券取引所やブローカーは、顧客の取引にFIFO規則を適用することが法律で要求されることがあります。これにより、特に短期間に多くの取引を行うトレーダーにとって、取引戦略や税金の計画に影響を与える可能性があります。

データ型bool

※なおMQL5公式リファレンスによると、ヘッジングシステム口座の場合、AccountInfoInteger関数引数ACCOUNT_FIFO_CLOSE戻り値は常にfalseとなります。

これらの識別子を使用することで、プログラムはアカウントに関連する重要な情報を取得し、それに基づいてさまざまな処理を行うことができます。たとえば、アカウントのレバレッジや取引が許可されているかどうかを確認し、それに応じて取引戦略を調整することが可能です。

ENUM_ACCOUNT_INFO_INTEGERを引数として使う際の注意

ここまでENUM_ACCOUNT_INFO_INTEGERで定められている識別子についての解説を一通りおこなってきました。使える定数が多いうえに、戻り値enum列挙型になっている識別子もある為、混乱してしまうかもしれませんが、開発時にこの記事を都度都度参考にして頂ければと思います。

これらENUM_ACCOUNT_INFO_INTEGER識別子引数として使用する際は、返されるデータ型に注意してください。

例えば、bool型のデータは真偽値(trueまたはfalse)を、intlong型のデータは整数値を返します。

また、プラットフォームやブローカーによっては、一部の識別子がそもそもサポートされていない場合があります。そのため、実際にプログラムを運用する際には、事前に利用可能な識別子を確認しておくことが重要です。

スポンサーリンク

AccountInfoInteger関数の戻り値について

AccountInfoInteger関数戻り値は、指定したアカウント情報の整数値(long型)です。

引数によって要求された情報が存在する場合、その情報の値が返されます。

スポンサーリンク

AccountInfoInteger関数を使う際の注意点

AccountInfoInteger関数を使用する際には、大前提としてまず、取得しようとする情報がアカウントに存在しているかを確認することが重要です。

また、戻り値の型が整数型であることを理解しておく必要があります。

スポンサーリンク

AccountInfoInteger関数を使ったサンプルコード

以下は、AccountInfoInteger関数を使ってアカウント情報を取得し、それを表示するサンプルコードです。

void OnStart()
 {
  //--- AccountInfoInteger() 関数で使用可能な情報を全て表示する
  // アカウントのログインID(アカウント番号)を表示します。
  printf("ACCOUNT_LOGIN =  %d",AccountInfoInteger(ACCOUNT_LOGIN));
  // アカウントのレバレッジ(証拠金倍率)を表示します。
  printf("ACCOUNT_LEVERAGE =  %d",AccountInfoInteger(ACCOUNT_LEVERAGE));
  
  // アカウントで取引が許可されているかどうかの真偽値を取得します。
  bool thisAccountTradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED);
  // エキスパートアドバイザー(自動取引プログラム)による取引が許可されているかどうかの真偽値を取得します。
  bool EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);
  // アカウントの取引モード(デモ、コンテスト、リアル)を取得します。
  ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
  // アカウントのStopOut(強制ロスカット)モードを取得します。
  ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);
 
  //--- 取引操作を実行する可能性について通知する
  // アカウントで取引が許可されているかどうかに基づいて、適切なメッセージを表示します。
  if(thisAccountTradeAllowed)
    Print("Trade for this account is permitted"); // 取引が許可されています。
  else
    Print("Trade for this account is prohibited!"); // 取引が禁止されています。
 
  //--- この口座でエキスパートアドバイザーを使用しての取引が出来るかどうかをみる
  // エキスパートアドバイザーによる取引が許可されているかどうかに基づいて、適切なメッセージを表示します。
  if(EATradeAllowed)
    Print("Trade by Expert Advisors is permitted for this account"); // エキスパートアドバイザーによる取引が許可されています。
  else
    Print("Trade by Expert Advisors is prohibited for this account!"); // エキスパートアドバイザーによる取引が禁止されています。
 
  //--- 口座の種類を検出する
  // アカウントの取引モードに基づいて、アカウントの種類(デモ、コンテスト、リアル)を判定し、表示します。
  switch(tradeMode)
    {
    case(ACCOUNT_TRADE_MODE_DEMO):
        Print("This is a demo account"); // これはデモアカウントです。
        break;
    case(ACCOUNT_TRADE_MODE_CONTEST):
        Print("This is a competition account"); // これはコンテストアカウントです。
        break;
    default:Print("This is a real account!"); // これはリアルアカウントです。
    }
 
  //--- StopOut レベル設定モードを検出する
  // アカウントのStopOutモードに基づいて、StopOutレベルがパーセントか金額かを表示します。
  switch(stopOutMode)
    {
    case(ACCOUNT_STOPOUT_MODE_PERCENT):
        Print("The StopOut level is specified percentage"); // StopOutレベルはパーセンテージで指定されます。
        break;
    default:Print("The StopOut level is specified in monetary terms"); // StopOutレベルは金額で指定されます。
    }
 }
スポンサーリンク

AccountInfoInteger関数についてのまとめ

今回の記事ではAccountInfoInteger関数について解説しました。

AccountInfoInteger関数は、MQL5でのプログラミングにおいてアカウント情報を取得するために利用する関数です。

引数については「AccountInfoInteger関数の引数について」セクションをご参照ください

戻り値については「AccountInfoInteger関数の戻り値について」セクションをご参照ください

AccountInfoInteger関数を効果的に使用することで、トレード戦略の決定やリスク管理など、より情報に基づいた意思決定が可能になります。

この記事に書かれている働きや注意点などを押さえつつ、ぜひ活用してください。

今回は以上とさせていただきます。

最後までお読みいただきありがとうございました。

AccountInfoInteger関数と同じような役割を担い、アカウントのdouble型情報を取得するAccountInfoDouble関数についての詳細は↓の記事をご参照ください

—————————————————————

-<PR>-

※【おススメのMT5MQL5対応のFX業者】

MQL5を使って自作したEAシステムトレードに利用するには、取引プラットフォームとしてMT5を提供しているFX会社に口座を開設しなくてはいけません。

当サイトでは以下のFX会社での口座開設・EA運用をおススメしています。

おススメする理由の詳細につきましては、各FX会社について解説する記事を書いておりますので、下記のリンク記事を参考にしていただければと思います。


外為ファイネスト

EAの利用制限なし。スキャルピングもOK

外為ファイネストに関する記事は↓をご覧ください。

アヴァトレードジャパン

自動売買界最狭スプレッド水準

アヴァトレードジャパンに関する記事は↓をご覧ください。

MQL5リファレンス
スポンサーリンク
シェアする
エムキューエルをフォローする
スポンサーリンク
【超入門】MQL5 でEAを作ろうブログ
タイトルとURLをコピーしました