<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AccountBalance アーカイブ - 自動売買を作ろう！</title>
	<atom:link href="https://mql-programing.com/archives/tag/accountbalance/feed/" rel="self" type="application/rss+xml" />
	<link>https://mql-programing.com/archives/tag/accountbalance/</link>
	<description>MQLプログラミング学習サイト</description>
	<lastBuildDate>Wed, 01 Apr 2026 02:36:26 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mql-programing.com/main29/wp-content/uploads/2021/02/cropped-ブログアイコン-32x32.jpg</url>
	<title>AccountBalance アーカイブ - 自動売買を作ろう！</title>
	<link>https://mql-programing.com/archives/tag/accountbalance/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MQL4】口座情報を取得する関数まとめ｜AccountBalance・AccountEquity・AccountFreeMargin・AccountMarginの使い方</title>
		<link>https://mql-programing.com/archives/12995/%e3%80%90mql4%e3%80%91%e5%8f%a3%e5%ba%a7%e6%83%85%e5%a0%b1%e3%82%92%e5%8f%96%e5%be%97%e3%81%99%e3%82%8b%e9%96%a2%e6%95%b0%e3%81%be%e3%81%a8%e3%82%81%ef%bd%9caccountbalance%e3%83%bbaccountequity/</link>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Thu, 02 Apr 2026 01:00:00 +0000</pubDate>
				<category><![CDATA[【中級編】MQLプログラムの読み方・書き方]]></category>
		<category><![CDATA[MQL4]]></category>
		<category><![CDATA[口座情報]]></category>
		<category><![CDATA[AccountBalance]]></category>
		<category><![CDATA[AccountEquity]]></category>
		<category><![CDATA[EA開発]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=12995</guid>

					<description><![CDATA[<p>EA（自動売買）を開発するとき、「今の口座残高はいくらか？」「あとどれくらい注文を出せる余裕があるか？」といった口座情報の取得は欠かせません。 MQL4には口座情報を取得するための便利な関数が用意されています。この記事で [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/12995/%e3%80%90mql4%e3%80%91%e5%8f%a3%e5%ba%a7%e6%83%85%e5%a0%b1%e3%82%92%e5%8f%96%e5%be%97%e3%81%99%e3%82%8b%e9%96%a2%e6%95%b0%e3%81%be%e3%81%a8%e3%82%81%ef%bd%9caccountbalance%e3%83%bbaccountequity/">【MQL4】口座情報を取得する関数まとめ｜AccountBalance・AccountEquity・AccountFreeMargin・AccountMarginの使い方</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<p>EA（自動売買）を開発するとき、「今の口座残高はいくらか？」「あとどれくらい注文を出せる余裕があるか？」といった口座情報の取得は欠かせません。</p>
<p>MQL4には口座情報を取得するための便利な関数が用意されています。この記事では、特に重要な<strong>4つの関数</strong>――<code>AccountBalance()</code>・<code>AccountEquity()</code>・<code>AccountMargin()</code>・<code>AccountFreeMargin()</code>の使い方を、コードサンプル付きでわかりやすく解説します。</p>
<h2><span id="toc1">4つの関数の役割を理解しよう</span></h2>
<p>まずは、それぞれの関数が「何を返すのか」を整理しましょう。</p>
<h3><span id="toc2">AccountBalance() ― 口座残高</span></h3>
<p><code>AccountBalance()</code>は、口座の<strong>残高（Balance）</strong>を返す関数です。ここで言う残高とは、確定済みの損益のみを反映した金額です。含み損益は一切考慮されないため、<strong>ポジションを決済するまで値は変化しません</strong>。</p>
<pre><code class="language-mql4">void OnTick()
{
    double balance = AccountBalance();
    Print("口座残高: ", balance, " ", AccountCurrency());
}
</code></pre>
<h3><span id="toc3">AccountEquity() ― 有効証拠金</span></h3>
<p><code>AccountEquity()</code>は、<strong>有効証拠金（Equity）</strong>を返します。有効証拠金は次の計算式で求められます。</p>
<p><strong>有効証拠金 ＝ 残高 ＋ 含み損益（＋スワップ）</strong></p>
<p>ポジションを保有していないときは、残高と有効証拠金は同じ値になります。ポジションを持っている場合は、含み損益によってリアルタイムに変動します。</p>
<pre><code class="language-mql4">void OnTick()
{
    double equity = AccountEquity();
    Print("有効証拠金: ", equity, " ", AccountCurrency());
}
</code></pre>
<h3><span id="toc4">AccountMargin() ― 必要証拠金</span></h3>
<p><code>AccountMargin()</code>は、現在保有しているポジションに対する<strong>必要証拠金（Used Margin）</strong>の合計を返します。ポジションを持っていなければ0になります。</p>
<pre><code class="language-mql4">void OnTick()
{
    double margin = AccountMargin();
    Print("必要証拠金: ", margin, " ", AccountCurrency());
}
</code></pre>
<h3><span id="toc5">AccountFreeMargin() ― 余剰証拠金</span></h3>
<p><code>AccountFreeMargin()</code>は、<strong>余剰証拠金（Free Margin）</strong>を返します。計算式は次のとおりです。</p>
<p><strong>余剰証拠金 ＝ 有効証拠金 − 必要証拠金</strong></p>
<p>この値がゼロに近づくと新規注文が出せなくなり、マイナスになるとマージンコール（強制ロスカット）の対象になります。EA開発では非常に重要な値です。</p>
<pre><code class="language-mql4">void OnTick()
{
    double freeMargin = AccountFreeMargin();
    Print("余剰証拠金: ", freeMargin, " ", AccountCurrency());
}
</code></pre>
<h2><span id="toc6">4つの関数の関係を図で理解する</span></h2>
<p>4つの値の関係を整理すると、次のようになります。</p>
<pre><code class="language-mql4">/*
┌─────────────────────────────────────────┐
│           AccountBalance()              │
│             （口座残高）                 │
│                  ＋                      │
│             含み損益・スワップ            │
│                  ＝                      │
│           AccountEquity()               │
│           （有効証拠金）                 │
├────────────────────┬────────────────────┤
│  AccountMargin()   │ AccountFreeMargin()│
│  （必要証拠金）     │ （余剰証拠金）      │
└────────────────────┴────────────────────┘
*/
</code></pre>
<p>このように、<strong>有効証拠金は必要証拠金と余剰証拠金に分かれる</strong>という関係を覚えておくと、各関数の役割がスッキリ理解できます。</p>
<h2><span id="toc7">口座情報を一括表示するサンプルコード</span></h2>
<p>4つの関数に加えて、<strong>証拠金維持率</strong>（Margin Level）も計算して一括表示するサンプルです。証拠金維持率は <code>AccountEquity() / AccountMargin() * 100</code> で求められます。</p>
<pre><code class="language-mql4">void OnTick()
{
    double balance    = AccountBalance();
    double equity     = AccountEquity();
    double margin     = AccountMargin();
    double freeMargin = AccountFreeMargin();

    // 証拠金維持率の計算（ポジションがないときはゼロ除算を回避）
    double marginLevel = 0;
    if(margin > 0)
        marginLevel = equity / margin * 100.0;

    Print("===== 口座情報 =====");
    Print("残高:         ", DoubleToString(balance, 2),    " ", AccountCurrency());
    Print("有効証拠金:   ", DoubleToString(equity, 2),     " ", AccountCurrency());
    Print("必要証拠金:   ", DoubleToString(margin, 2),     " ", AccountCurrency());
    Print("余剰証拠金:   ", DoubleToString(freeMargin, 2), " ", AccountCurrency());
    Print("証拠金維持率: ", DoubleToString(marginLevel, 2), " %");
}
</code></pre>
<p>ポジションを保有した状態でこのEAを動かすと、ティックごとに口座情報がログに出力されます。デバッグやテストにぜひ活用してください。</p>
<h2><span id="toc8">EA開発での実践活用テクニック</span></h2>
<h3><span id="toc9">テクニック1：証拠金維持率チェックでエントリーを制御する</span></h3>
<p>証拠金維持率が一定以下になったら新規エントリーを止める、という安全装置をEAに組み込む方法です。</p>
<pre><code class="language-mql4">bool IsSafeToTrade(double minMarginLevel)
{
    // ポジションがない場合はチェック不要（安全）
    if(AccountMargin() == 0)
        return true;

    double marginLevel = AccountEquity() / AccountMargin() * 100.0;

    if(marginLevel < minMarginLevel)
    {
        Print("証拠金維持率が低下しています: ", DoubleToString(marginLevel, 2), "%");
        return false;
    }
    return true;
}

// 使用例
void OnTick()
{
    // 証拠金維持率が200%以上のときだけエントリー許可
    if(!IsSafeToTrade(200.0))
        return;

    // ここにエントリーロジックを書く
}
</code></pre>
<h3><span id="toc10">テクニック2：AccountFreeMarginCheck()で事前に証拠金をシミュレーション</span></h3>
<p>MQL4には<code>AccountFreeMarginCheck()</code>という便利な関数もあります。これは「指定した通貨ペア・売買方向・ロット数で注文を出した場合の余剰証拠金」を事前にシミュレーションできます。</p>
<p>証拠金が不足する場合はエラーコード134（<code>ERR_NOT_ENOUGH_MONEY</code>）が生成されるため、注文前のチェックに最適です。</p>
<pre><code class="language-mql4">bool HasEnoughMargin(string symbol, int cmd, double lots)
{
    double freeMarginAfter = AccountFreeMarginCheck(symbol, cmd, lots);

    if(freeMarginAfter <= 0 || GetLastError() == 134)
    {
        Print("証拠金不足: 注文後の余剰証拠金 = ", DoubleToString(freeMarginAfter, 2));
        return false;
    }
    return true;
}

// 使用例
void OnTick()
{
    double lots = 0.1;

    if(!HasEnoughMargin(Symbol(), OP_BUY, lots))
    {
        Print("証拠金が足りないためエントリーを見送ります");
        return;
    }

    // 注文処理へ進む
}
</code></pre>
<h3><span id="toc11">テクニック3：余剰証拠金からロットを自動計算する</span></h3>
<p>余剰証拠金の一定割合を使ってロット数を自動計算する方法です。資金管理の基本として多くのEAで使われるテクニックです。</p>
<pre><code class="language-mql4">double CalcLotByFreeMargin(double riskPercent)
{
    // 余剰証拠金の一定割合を使用可能金額とする
    double availableMargin = AccountFreeMargin() * riskPercent / 100.0;

    // 1ロットあたりの必要証拠金を概算
    double marginPerLot = MarketInfo(Symbol(), MODE_MARGINREQUIRED);

    if(marginPerLot <= 0)
        return 0.0;

    double lots = availableMargin / marginPerLot;

    // ロットステップに丸める
    double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
    lots = MathFloor(lots / lotStep) * lotStep;

    // 最小・最大ロットの制限
    double minLot = MarketInfo(Symbol(), MODE_MINLOT);
    double maxLot = MarketInfo(Symbol(), MODE_MAXLOT);
    lots = MathMax(minLot, MathMin(maxLot, lots));

    return lots;
}

// 使用例：余剰証拠金の10%でロット計算
void OnTick()
{
    double lots = CalcLotByFreeMargin(10.0);
    Print("算出ロット数: ", DoubleToString(lots, 2));
}
</code></pre>
<h2><span id="toc12">よくある疑問と注意点</span></h2>
<h3><span id="toc13">Q. AccountBalance()とAccountEquity()の違いは？</span></h3>
<p><code>AccountBalance()</code>は確定済みの残高のみ、<code>AccountEquity()</code>は含み損益を加えた「今この瞬間の実質的な資産額」です。ポジションがなければ同じ値になります。</p>
<h3><span id="toc14">Q. デモ口座でも使える？</span></h3>
<p>はい、すべての関数はデモ口座でもリアル口座でも同じように動作します。開発中はデモ口座で十分テストしてからリアル口座に移行しましょう。</p>
<h3><span id="toc15">Q. MQL5では使える？</span></h3>
<p>MQL5では関数名が異なります。<code>AccountInfoDouble(ACCOUNT_BALANCE)</code> のように <code>AccountInfoDouble()</code> 関数にパラメータを渡す形式になっています。MQL4からの移行時にはご注意ください。</p>
<h2><span id="toc16">まとめ</span></h2>
<p>今回紹介した4つの口座情報取得関数を一覧表で振り返りましょう。</p>
<table>
<thead>
<tr>
<th>関数名</th>
<th>取得できる値</th>
<th>含み損益の影響</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>AccountBalance()</code></td>
<td>口座残高</td>
<td>受けない</td>
</tr>
<tr>
<td><code>AccountEquity()</code></td>
<td>有効証拠金（残高＋含み損益）</td>
<td>受ける</td>
</tr>
<tr>
<td><code>AccountMargin()</code></td>
<td>必要証拠金</td>
<td>間接的に受ける</td>
</tr>
<tr>
<td><code>AccountFreeMargin()</code></td>
<td>余剰証拠金（有効証拠金−必要証拠金）</td>
<td>受ける</td>
</tr>
</tbody>
</table>
<p>これらの関数を組み合わせることで、<strong>証拠金維持率のチェック</strong>、<strong>注文前の証拠金シミュレーション</strong>、<strong>自動ロット計算</strong>など、安全で実用的なEAを作ることができます。</p>
<p>まずはサンプルコードをコピーしてストラテジーテスターで動かしてみてください。実際の数値を確認しながら学ぶことで、理解がぐっと深まるはずです。</p>
<p>投稿 <a href="https://mql-programing.com/archives/12995/%e3%80%90mql4%e3%80%91%e5%8f%a3%e5%ba%a7%e6%83%85%e5%a0%b1%e3%82%92%e5%8f%96%e5%be%97%e3%81%99%e3%82%8b%e9%96%a2%e6%95%b0%e3%81%be%e3%81%a8%e3%82%81%ef%bd%9caccountbalance%e3%83%bbaccountequity/">【MQL4】口座情報を取得する関数まとめ｜AccountBalance・AccountEquity・AccountFreeMargin・AccountMarginの使い方</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
