<?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>iMA関数 アーカイブ - 自動売買を作ろう！</title>
	<atom:link href="https://mql-programing.com/archives/tag/ima%E9%96%A2%E6%95%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mql-programing.com/archives/tag/ima関数/</link>
	<description>MQLプログラミング学習サイト</description>
	<lastBuildDate>Wed, 01 Apr 2026 04:48:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mql-programing.com/main29/wp-content/uploads/2021/02/cropped-ブログアイコン-32x32.jpg</url>
	<title>iMA関数 アーカイブ - 自動売買を作ろう！</title>
	<link>https://mql-programing.com/archives/tag/ima関数/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MQL4】ENUM_APPLIED_PRICE（価格定数）完全ガイド｜PRICE_CLOSEからPRICE_WEIGHTEDまで7種類を徹底解説</title>
		<link>https://mql-programing.com/archives/13074/%e3%80%90mql4%e3%80%91enum_applied_price%ef%bc%88%e4%be%a1%e6%a0%bc%e5%ae%9a%e6%95%b0%ef%bc%89%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bd%9cprice_close%e3%81%8b%e3%82%89price_weighted%e3%81%be/</link>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Sun, 26 Apr 2026 01:00:00 +0000</pubDate>
				<category><![CDATA[【辞書】MQLリファレンス]]></category>
		<category><![CDATA[定数]]></category>
		<category><![CDATA[ENUM_APPLIED_PRICE]]></category>
		<category><![CDATA[MQL4]]></category>
		<category><![CDATA[EA開発]]></category>
		<category><![CDATA[価格定数]]></category>
		<category><![CDATA[iMA関数]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=13074</guid>

					<description><![CDATA[<p>MQL4でインジケーター関数を使うとき、「どの価格を基準に計算するか」を指定する場面が頻繁にあります。たとえば移動平均線を計算するとき、終値を使うのか、高値と安値の平均を使うのかで結果が変わりますよね。 この「どの価格を [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/13074/%e3%80%90mql4%e3%80%91enum_applied_price%ef%bc%88%e4%be%a1%e6%a0%bc%e5%ae%9a%e6%95%b0%ef%bc%89%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bd%9cprice_close%e3%81%8b%e3%82%89price_weighted%e3%81%be/">【MQL4】ENUM_APPLIED_PRICE（価格定数）完全ガイド｜PRICE_CLOSEからPRICE_WEIGHTEDまで7種類を徹底解説</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[<p>MQL4でインジケーター関数を使うとき、「どの価格を基準に計算するか」を指定する場面が頻繁にあります。たとえば移動平均線を計算するとき、終値を使うのか、高値と安値の平均を使うのかで結果が変わりますよね。</p>
<p>この「どの価格を使うか」を指定するために用意されているのが、<strong>ENUM_APPLIED_PRICE</strong>（適用価格の列挙型）です。全部で7種類の定数があり、iMA()やiRSI()などの組み込み関数で頻繁に使われます。</p>
<p>この記事では、7つの価格定数それぞれの意味と計算式、そして実際のコードでの使い方をわかりやすく解説します。</p>
<h2><span id="toc1">ENUM_APPLIED_PRICEとは？</span></h2>
<p>ENUM_APPLIED_PRICEは、MQL4で定義されている<strong>列挙型（enum）</strong>のひとつです。テクニカル指標の計算に使う「価格の種類」を指定するために使います。</p>
<p>たとえば、移動平均線を計算する<code>iMA()</code>関数のシグネチャを見てみましょう。</p>
<pre><code class="language-mql4">double iMA(
   string       symbol,           // 通貨ペア
   int          timeframe,        // 時間足
   int          ma_period,        // 期間
   int          ma_shift,         // シフト
   int          ma_method,        // 移動平均の種類
   int          applied_price,    // 適用価格 ← ここ！
   int          shift             // バーのインデックス
);
</code></pre>
<p>この<strong>applied_price</strong>の部分に、ENUM_APPLIED_PRICEの定数を指定します。どの定数を選ぶかによって、計算結果が変わってくるわけです。</p>
<h2><span id="toc2">7つの価格定数一覧</span></h2>
<p>ENUM_APPLIED_PRICEには、以下の7つの定数が定義されています。</p>
<table border="1" cellpadding="8" cellspacing="0" style="border-collapse: collapse; width: 100%;">
<thead>
<tr style="background-color: #f0f0f0;">
<th>定数名</th>
<th>値</th>
<th>説明</th>
<th>計算式</th>
</tr>
</thead>
<tbody>
<tr>
<td>PRICE_CLOSE</td>
<td>0</td>
<td>終値</td>
<td>Close</td>
</tr>
<tr>
<td>PRICE_OPEN</td>
<td>1</td>
<td>始値</td>
<td>Open</td>
</tr>
<tr>
<td>PRICE_HIGH</td>
<td>2</td>
<td>高値</td>
<td>High</td>
</tr>
<tr>
<td>PRICE_LOW</td>
<td>3</td>
<td>安値</td>
<td>Low</td>
</tr>
<tr>
<td>PRICE_MEDIAN</td>
<td>4</td>
<td>中間値</td>
<td>(High + Low) / 2</td>
</tr>
<tr>
<td>PRICE_TYPICAL</td>
<td>5</td>
<td>典型値</td>
<td>(High + Low + Close) / 3</td>
</tr>
<tr>
<td>PRICE_WEIGHTED</td>
<td>6</td>
<td>加重終値</td>
<td>(High + Low + Close + Close) / 4</td>
</tr>
</tbody>
</table>
<h3><span id="toc3">PRICE_CLOSE（終値）— 値: 0</span></h3>
<p>もっとも一般的に使われる適用価格です。各ローソク足の<strong>終値（Close）</strong>を使って計算します。特にこだわりがなければ、まずはこれを選んでおけば問題ありません。多くのトレーダーやテクニカル分析の教科書でも、終値ベースの計算がデフォルトとされています。</p>
<h3><span id="toc4">PRICE_OPEN（始値）— 値: 1</span></h3>
<p>各ローソク足の<strong>始値（Open）</strong>を使って計算します。始値はバーの開始時点の価格なので、「そのバーが始まった瞬間にわかる値」という特徴があります。バックテストやリアルタイム処理で、確定済みの値だけを使いたい場合に選ばれることがあります。</p>
<h3><span id="toc5">PRICE_HIGH（高値）— 値: 2</span></h3>
<p>各ローソク足の<strong>高値（High）</strong>を使って計算します。高値ベースの移動平均線は、レジスタンスライン（上値抵抗線）のような役割として活用できます。</p>
<h3><span id="toc6">PRICE_LOW（安値）— 値: 3</span></h3>
<p>各ローソク足の<strong>安値（Low）</strong>を使って計算します。安値ベースの移動平均線は、サポートライン（下値支持線）のような役割として活用できます。PRICE_HIGHと組み合わせて移動平均チャネルを作る使い方が人気です。</p>
<h3><span id="toc7">PRICE_MEDIAN（中間値）— 値: 4</span></h3>
<p>計算式は <strong>(High + Low) / 2</strong> です。ローソク足の高値と安値のちょうど中間の価格、つまりそのバーの「値幅の中心」を使います。終値の偏りを排除し、そのバーの価格帯の中心で計算したいときに使います。</p>
<h3><span id="toc8">PRICE_TYPICAL（典型値）— 値: 5</span></h3>
<p>計算式は <strong>(High + Low + Close) / 3</strong> です。Median Price（中間値）に終値を加えて3で割った値で、中間値よりも<strong>実際の値動きの結果（終値）を反映</strong>した価格になります。CCI（商品チャネル指数）などのインジケーターでは、このTypical Priceが標準的に使われています。</p>
<h3><span id="toc9">PRICE_WEIGHTED（加重終値）— 値: 6</span></h3>
<p>計算式は <strong>(High + Low + Close + Close) / 4</strong> です。Typical Price（典型値）の計算式で終値を2回カウントすることで、<strong>終値により大きな比重</strong>を置いた価格です。「値幅全体も考慮したいけど、やっぱり終値を重視したい」という場合に適しています。</p>
<p>この3つの関係性を整理すると、次のようになります。</p>
<ul>
<li><strong>Median Price</strong>（HL/2）：ローソク足の値幅の中間値</li>
<li><strong>Typical Price</strong>（HLC/3）：中間値に終値を加え、より実際の値動きに近づけた値</li>
<li><strong>Weighted Close</strong>（HLCC/4）：さらに終値の比重を高め、終値に近づけた値</li>
</ul>
<h2><span id="toc10">実際のコードでの使い方</span></h2>
<h3><span id="toc11">iMA関数での基本的な使用例</span></h3>
<p>もっとも基本的な使い方です。20期間の単純移動平均線を終値ベースで計算します。</p>
<pre><code class="language-mql4">void OnTick()
{
   // 20期間SMAを終値(PRICE_CLOSE)で計算
   double ma_close = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);

   // 20期間SMAを典型値(PRICE_TYPICAL)で計算
   double ma_typical = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_TYPICAL, 0);

   Print("終値ベースSMA: ", ma_close);
   Print("典型値ベースSMA: ", ma_typical);
}
</code></pre>
<p>同じ期間・同じ移動平均の種類でも、適用価格を変えるだけで計算結果が変わることがわかります。</p>
<h3><span id="toc12">iRSI関数での使用例</span></h3>
<p>RSI（相対力指数）でも適用価格を指定できます。</p>
<pre><code class="language-mql4">void OnTick()
{
   // 14期間RSIを終値で計算
   double rsi = iRSI(NULL, 0, 14, PRICE_CLOSE, 0);

   if(rsi > 70)
   {
      Print("RSIが70を超えました（買われすぎ）: ", rsi);
   }
   else if(rsi < 30)
   {
      Print("RSIが30を下回りました（売られすぎ）: ", rsi);
   }
}
</code></pre>
<h3><span id="toc13">HIGH/LOWを使った移動平均チャネルの作成例</span></h3>
<p>PRICE_HIGHとPRICE_LOWを組み合わせると、価格を挟み込むようなチャネル（帯）を作ることができます。</p>
<pre><code class="language-mql4">void OnTick()
{
   int period = 20;

   // 高値ベースの移動平均（上側バンド）
   double upper = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_HIGH, 0);

   // 安値ベースの移動平均（下側バンド）
   double lower = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_LOW, 0);

   // 終値ベースの移動平均（中央線）
   double middle = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_CLOSE, 0);

   Print("上側: ", upper, " 中央: ", middle, " 下側: ", lower);

   // 現在価格が上側バンドを超えたら
   if(Ask > upper)
   {
      Print("価格が移動平均チャネルの上側を突破！");
   }
   // 現在価格が下側バンドを下回ったら
   if(Bid < lower)
   {
      Print("価格が移動平均チャネルの下側を突破！");
   }
}
</code></pre>
<p>このように、適用価格を変えるだけで同じiMA関数から異なる性質のラインを引くことができます。</p>
<h2><span id="toc14">input変数でユーザーに選ばせる方法</span></h2>
<p>EAやカスタムインジケーターを作るとき、適用価格をユーザーがパラメーター画面から選べるようにしたいですよね。MQL4では、<strong>ENUM_APPLIED_PRICEをinput変数の型として使う</strong>ことで、自動的にドロップダウンリストが表示されます。</p>
<pre><code class="language-mql4">// パラメーター設定
input int                 MAPeriod     = 20;            // 移動平均の期間
input ENUM_MA_METHOD      MAMethod     = MODE_SMA;      // 移動平均の種類
input ENUM_APPLIED_PRICE  MAPrice      = PRICE_CLOSE;   // 適用価格

void OnTick()
{
   double ma = iMA(NULL, 0, MAPeriod, 0, MAMethod, MAPrice, 0);
   Print("MA値: ", ma);
}
</code></pre>
<p>このように書くだけで、MetaTraderのパラメーター入力画面に「適用価格」のドロップダウンリストが自動生成されます。ユーザーは「Close price」「Open price」「Median Price (HL/2)」…といった選択肢から直感的に選ぶことができます。</p>
<p>int型で宣言してユーザーに数値を手入力させるよりも、<strong>はるかに使いやすく、入力ミスも防げる</strong>優れた方法です。EAやインジケーターを配布する場合は、ぜひこの書き方を使いましょう。</p>
<h2><span id="toc15">定数の整数値を直接使う場合の注意</span></h2>
<p>ENUM_APPLIED_PRICEの各定数には整数値（0〜6）が割り当てられているため、数値を直接指定しても動作します。</p>
<pre><code class="language-mql4">// 定数名を使う場合（推奨）
double ma1 = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);

// 整数値を直接使う場合（非推奨）
double ma2 = iMA(NULL, 0, 20, 0, MODE_SMA, 0, 0);
</code></pre>
<p>上の2行はどちらも同じ結果になりますが、<strong>整数値を直接書く方法はおすすめしません</strong>。理由は以下の通りです。</p>
<ul>
<li><strong>可読性が低い</strong>：「0」だけでは何の価格かすぐにわからない</li>
<li><strong>保守性が悪い</strong>：後から見たとき、あるいは他の人が見たときに意味が伝わらない</li>
<li><strong>タイプミスに気づきにくい</strong>：定数名なら打ち間違えればコンパイルエラーになるが、数値だと範囲外の値でも気づきにくい</li>
</ul>
<p>常に<strong>PRICE_CLOSE</strong>や<strong>PRICE_TYPICAL</strong>のような定数名を使うようにしましょう。</p>
<h2><span id="toc16">どの適用価格を選ぶべきか？</span></h2>
<p>7種類もあると「結局どれを使えばいいの？」と迷いますよね。以下に用途別の目安をまとめます。</p>
<table border="1" cellpadding="8" cellspacing="0" style="border-collapse: collapse; width: 100%;">
<thead>
<tr style="background-color: #f0f0f0;">
<th>用途・場面</th>
<th>おすすめの適用価格</th>
</tr>
</thead>
<tbody>
<tr>
<td>一般的なトレンド分析</td>
<td>PRICE_CLOSE（最も標準的）</td>
</tr>
<tr>
<td>ノイズを減らしたい</td>
<td>PRICE_TYPICAL または PRICE_MEDIAN</td>
</tr>
<tr>
<td>終値重視だがノイズも減らしたい</td>
<td>PRICE_WEIGHTED</td>
</tr>
<tr>
<td>レジスタンスライン的に使いたい</td>
<td>PRICE_HIGH</td>
</tr>
<tr>
<td>サポートライン的に使いたい</td>
<td>PRICE_LOW</td>
</tr>
<tr>
<td>CCIなど特定のインジケーター</td>
<td>PRICE_TYPICAL（標準仕様に従う）</td>
</tr>
</tbody>
</table>
<p>迷ったときは<strong>PRICE_CLOSE</strong>を選んでおけば、まず間違いありません。そこから最適化やバックテストを行って、他の価格定数を試してみるのがよいでしょう。</p>
<h2><span id="toc17">まとめ</span></h2>
<p>ENUM_APPLIED_PRICEは、テクニカル指標の計算に「どの価格を使うか」を指定するための列挙型です。今回のポイントを振り返りましょう。</p>
<ul>
<li><strong>7種類の定数</strong>がある：PRICE_CLOSE（終値）、PRICE_OPEN（始値）、PRICE_HIGH（高値）、PRICE_LOW（安値）、PRICE_MEDIAN（中間値）、PRICE_TYPICAL（典型値）、PRICE_WEIGHTED（加重終値）</li>
<li><strong>iMA()やiRSI()</strong>などの組み込み関数で、applied_priceパラメーターに指定して使う</li>
<li><strong>input変数の型</strong>にENUM_APPLIED_PRICEを使えば、ドロップダウンリストで選択できるようになる</li>
<li>整数値の直接指定は動作するが、<strong>可読性の観点から定数名を使うべき</strong></li>
<li>迷ったら<strong>PRICE_CLOSE</strong>が最も無難で一般的</li>
</ul>
<p>適用価格の選択はインジケーターの計算結果に直接影響するため、それぞれの意味を理解しておくことが大切です。この記事を参考に、自分のEAやインジケーターに最適な適用価格を選んでみてください。</p>
<p>投稿 <a href="https://mql-programing.com/archives/13074/%e3%80%90mql4%e3%80%91enum_applied_price%ef%bc%88%e4%be%a1%e6%a0%bc%e5%ae%9a%e6%95%b0%ef%bc%89%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bd%9cprice_close%e3%81%8b%e3%82%89price_weighted%e3%81%be/">【MQL4】ENUM_APPLIED_PRICE（価格定数）完全ガイド｜PRICE_CLOSEからPRICE_WEIGHTEDまで7種類を徹底解説</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【MQL4関数】iMA関数（移動平均線）の使い方とサンプルプログラム</title>
		<link>https://mql-programing.com/archives/437/ima-method/</link>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Wed, 07 Apr 2021 04:51:02 +0000</pubDate>
				<category><![CDATA[【中級編】MQLプログラムの読み方・書き方]]></category>
		<category><![CDATA[ロジック関係]]></category>
		<category><![CDATA[MQL]]></category>
		<category><![CDATA[リファレンス]]></category>
		<category><![CDATA[自動売買]]></category>
		<category><![CDATA[移動平均線]]></category>
		<category><![CDATA[iMA関数]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=437</guid>

					<description><![CDATA[<p>iMA関数とは？ ゴールデンクロスやデッドクロスを手法にしている方は、ぜひiMA関数をマスターしましょう！ iMA関数は、移動平均線の値を取得する関数です。 移動平均線の値が取得できれば、if文やfor文と組みわせること [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/437/ima-method/">【MQL4関数】iMA関数（移動平均線）の使い方とサンプルプログラム</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-11 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://mql-programing.com/main29/wp-content/uploads/2021/10/アイコン.png" alt="朝日奈りさ" class="speech-icon-image"/></figure><div class="speech-name">朝日奈りさ</div></div><div class="speech-balloon">
<p class="wp-block-paragraph">移動平均線を取得できるiMA関数について解説していくよ！</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc1">iMA関数とは？</span></h2>



<p class="wp-block-paragraph">ゴールデンクロスやデッドクロスを手法にしている方は、ぜひiMA関数をマスターしましょう！</p>



<p class="wp-block-paragraph">iMA関数は、<strong><span class="marker-under-red">移動平均線の値を取得する関数です。</span></strong></p>



<p class="wp-block-paragraph">移動平均線の値が取得できれば、<a href="https://mql-programing.com/if-condition/">if文</a>や<a href="https://mql-programing.com/repeat-for-while/">for文</a>と組みわせることで、クロスの判定ができます。</p>



<p class="wp-block-paragraph">しかし、iMA関数を使いこなすのは難しいため、挫折してしまうかたもいらっしゃいます。</p>



<p class="wp-block-paragraph">なぜ難しいのかというと、<strong>返り値（戻り値）</strong>と<strong>引数</strong>を入力する必要があるからです。</p>



<p class="wp-block-paragraph">特に<strong><span class="marker-under-red">引数はとても複雑</span></strong>なので、しっかり把握するようにしましょう！</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">またiMA関数は、<strong>MQLに標準で組み込まれている関数なので、自分でプログラミングしなくてOKです！</strong></p>



<p class="wp-block-paragraph">いつでも使うことができます。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">if文やfor文がわからない方は、以下の記事が参考になります。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-自動売買を作ろう！ wp-block-embed-自動売買を作ろう！"><div class="wp-block-embed__wrapper">

<a href="https://mql-programing.com/if-condition/" title="【MQLプログラミング基礎】条件分岐をif文で書いてみよう！プログラム例あり" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://i0.wp.com/mql-programing.com/main29/wp-content/uploads/2020/10/条件分岐if文の書き方.jpg?fit=1120%2C630&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【MQLプログラミング基礎】条件分岐をif文で書いてみよう！プログラム例あり</div><div class="blogcard-snippet external-blogcard-snippet">目次 条件分岐とは？if文の書き方プログラム例if else文の書き方プログラム例条件式の種類と使い方プログラム例まとめ 条件分岐とは？ プログラムは自分で考えることができません。 そのため、プログラムを実行するかしない</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://mql-programing.com/archives/125/if-condition/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">mql-programing.com</div></div></div></div></a>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-自動売買を作ろう！ wp-block-embed-自動売買を作ろう！"><div class="wp-block-embed__wrapper">

<a href="https://mql-programing.com/repeat-for-while/" title="【MQLプログラミング基礎】繰り返し文を書いてみよう！プログラム例あり" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://i0.wp.com/mql-programing.com/main29/wp-content/uploads/2020/10/繰り返し文の書き方.jpg?fit=1120%2C630&#038;ssl=1" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【MQLプログラミング基礎】繰り返し文を書いてみよう！プログラム例あり</div><div class="blogcard-snippet external-blogcard-snippet">目次 繰り返しとは？for文の書き方変数の初期化条件式変数の更新for文のプログラム例while文の書き方while文のプログラム例サンプルプログラムまとめ 繰り返しとは？ MQLプログラミングでは、全く同じ処理を、何度</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://mql-programing.com/archives/139/repeat-for-while/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">mql-programing.com</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc2">iMA関数の書き方</span></h2>



<p class="wp-block-paragraph">iMA関数は難しいと言っても、基本的には<a href="https://mql-programing.com/function/">関数</a>の使い方と同じなので、まずは関数の基礎をマスターしましょう。</p>



<p class="wp-block-paragraph">関数についてはこちらの記事にまとめておりますので、参考になると思います。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-自動売買を作ろう！ wp-block-embed-自動売買を作ろう！"><div class="wp-block-embed__wrapper">

<a href="https://mql-programing.com/function/" title="【MQLプログラミング基礎】関数は難しい？関数の使い方を理解しよう！プログラム例あり" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://mql-programing.com/main29/wp-content/uploads/cocoon-resources/blog-card-cache/624de21c236a113367001dd95952af29.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【MQLプログラミング基礎】関数は難しい？関数の使い方を理解しよう！プログラム例あり</div><div class="blogcard-snippet external-blogcard-snippet">関数とは？ 「プログラムは、何度も同じことを書かないといけない」 と思っている方、ぜひ関数を使ってみてください。 関数とは、何度も繰り返すプログラムを、まとめた状態のものです。 事前に、まとまりを作っておくことで、同じプ</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://mql-programing.com/archives/183/function/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">mql-programing.com</div></div></div></div></a>
</div></figure>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc3">基本的な書き方</span></h3>



<p class="wp-block-paragraph">iMA関数の基本的な書き方は、以下の通りです。</p>



<p class="wp-block-paragraph">分かりやすいように、引数は省略しています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(①, ②, ③, ④, ⑤, ⑥, ⑦);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">このように返り値はdouble型です。</span></strong></p>



<p class="wp-block-paragraph"><strong><span class="marker-under-red">さらに７つの引数を入力します。</span></strong></p>



<p class="wp-block-paragraph">引数の数を見るだけでも、うんざりしてしまいますね&#8230;</p>



<p class="wp-block-paragraph">まずは返り値、次に引数について、詳しく見ていきましょう。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc4">iMA関数の返り値（戻り値）</span></h3>



<p class="wp-block-paragraph">iMA関数の返り値は<span class="marker-under-red"><strong>double型</strong></span>です。</p>



<p class="wp-block-paragraph">値が１つだけ返ってきます。</p>



<p class="wp-block-paragraph">つまり、<strong><span class="marker-under-red">移動平均「線」ではなく、移動平均「点」が返ってくるのです。</span></strong></p>



<p class="wp-block-paragraph">例えばドル円で使ってみると、「107.000」のような値が返ってきます。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">また、iMA関数は<strong>１つのロウソク足に対して、１つだけ値を返します。</strong></p>



<p class="wp-block-paragraph">そして、返ってきた値を繋げることで、移動平均「線」として処理することができるようになります。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc5">iMA関数の引数</span></h3>



<p class="wp-block-paragraph">ここからは、iMA関数の引数について詳しく見ていきます。</p>



<p class="wp-block-paragraph">難しいので、ゆっくり理解していくと良いと思います。</p>



<p class="wp-block-paragraph">下記の通り、iMA関数は７つの引数があります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(①, ②, ③, ④, ⑤, ⑥, ⑦);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">一覧で見ると、このようになります。</p>



<figure class="wp-block-table alignwide"><table><tbody><tr><td><strong>番号</strong></td><td><strong>データ型</strong></td><td><strong>引数名</strong></td><td><strong>内容</strong></td></tr><tr><td>①</td><td>string</td><td>symbol</td><td>通貨ペアを設定（NULLなど）</td></tr><tr><td>②</td><td>int</td><td>timeframe</td><td>時間足を設定（5分足など）</td></tr><tr><td>③</td><td>int</td><td>ma_period</td><td>計算期間を設定（14,25,50など）</td></tr><tr><td>④</td><td>int</td><td>ma_shift</td><td>表示移動の設定（普通は0）</td></tr><tr><td>⑤</td><td>int</td><td>ma_method</td><td>計算方法の設定（Simpleなど）</td></tr><tr><td>⑥</td><td>int</td><td>applied_price</td><td>適用価格の設定（始値や終値など）</td></tr><tr><td>⑦</td><td>int</td><td>shift</td><td>先行・遅行の設定（右から何本目なのか）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">１つずつ見ていきましょう。</p>



<p class="wp-block-paragraph">　</p>



<h4 class="wp-block-heading"><span id="toc6">①symbol　（通貨ペアを設定）</span></h4>



<p class="wp-block-paragraph">symbolは、移動平均を取得する通貨ペアを設定します。</p>



<p class="wp-block-paragraph">例えばドル円の場合、<strong>「USDJPY」</strong>という値になります。</p>



<p class="wp-block-paragraph"><strong>ですが、具体的に通貨ペアを設定する必要はありません。</strong></p>



<p class="wp-block-paragraph">というのもMQLには便利なものがあり、<strong><span class="marker-under-red">「Symbol」</span>または<span class="marker-under-red">「NULL」</span></strong>と書くだけで、現在の通貨ペアを設定できます。</p>



<p class="wp-block-paragraph">そのため通常は、下記のように入力すれば大丈夫です。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 micro-balloon micro-top micro-copy"><span class="micro-balloon-content micro-content"><span class="marker-under">①に「NULL」を入力</span></span></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(NULL, ②, ③, ④, ⑤, ⑥, ⑦);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<h4 class="wp-block-heading"><span id="toc7">②timeframe　（時間足を設定）</span></h4>



<p class="wp-block-paragraph">timeframeは、移動平均を取得する時間足を設定します。</p>



<p class="wp-block-paragraph">「0」を入力すると、表示されている時間足になりますので、通常は「0」を入力すれば問題ありません。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 micro-balloon micro-top micro-copy"><span class="micro-balloon-content micro-content"><span class="marker-under">②に「０」を入力</span></span></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(NULL, 0, ③, ④, ⑤, ⑥, ⑦);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<h5 class="wp-block-heading"><span id="toc8">別の時間足を設定する方法</span></h5>



<p class="wp-block-paragraph">もし、表示されている時間足ではない値を取得したい場合は、以下の値を入力することで、別の時間足を設定できます。</p>



<figure class="wp-block-table alignwide"><table><tbody><tr><td><strong>入力値</strong></td><td><strong>内容</strong></td></tr><tr><td>PERIOD_CURRENT</td><td>現在チャートの時間軸（0を入力した時と同じ）</td></tr><tr><td>PERIOD_M1</td><td>１分足</td></tr><tr><td>PERIOD_M5</td><td>５分足</td></tr><tr><td>PERIOD_M15</td><td>１５分足</td></tr><tr><td>PERIOD_M30</td><td>３０分足</td></tr><tr><td>PERIOD_H1</td><td>１時間足</td></tr><tr><td>PERIOD_H4</td><td>４時間足</td></tr><tr><td>PERIOD_D1</td><td>１日足</td></tr><tr><td>PERIOD_W1</td><td>１週足</td></tr><tr><td>PERIOD_MN1</td><td>１月足</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">　</p>



<h4 class="wp-block-heading"><span id="toc9">③ma_period　（計算期間を設定）</span></h4>



<p class="wp-block-paragraph">３つ目は、移動平均の計算期間を設定します。</p>



<p class="wp-block-paragraph">計算期間とは、ロウソク足の本数のことです。</p>



<p class="wp-block-paragraph">過去何本のロウソク足に対して、移動平均を計算するのかを設定します。</p>



<p class="wp-block-paragraph">一般的には<strong>「７」</strong>、<strong>「１４」</strong>、<strong>「２５」</strong>という値がよく使われます。</p>



<p class="wp-block-paragraph">「７」なら、過去７本のロウソク足に対して計算します。</p>



<p class="wp-block-paragraph">ロジックに合わせた数値を入力すると良いでしょう。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 micro-balloon micro-top micro-copy"><span class="micro-balloon-content micro-content"><span class="marker-under">③に「７」を入力</span></span></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(NULL, 0, 7, ④, ⑤, ⑥, ⑦);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<h4 class="wp-block-heading"><span id="toc10">④ma_shift　（表示移動の設定）</span></h4>



<p class="wp-block-paragraph">移動平均線の表示を、左右に移動させることができます。</p>



<p class="wp-block-paragraph">ですが、こちらも設定する必要はなく、「0」を入力します。</p>



<p class="wp-block-paragraph">もし「3」を入力した場合、ロウソク足３本分だけ右に移動します。</p>



<p class="wp-block-paragraph">マイナスなら左に移動します。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 micro-balloon micro-top micro-copy"><span class="micro-balloon-content micro-content"><span class="marker-under">④に「０」を入力</span></span></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(NULL, 0, 7, 0, ⑤, ⑥, ⑦);</code></pre></div>



<p class="wp-block-paragraph"><span class="marker-under-red">移動するのは表示だけです。iMAの取得値が移動するのではないので、注意してください。</span></p>



<p class="wp-block-paragraph">　</p>



<h4 class="wp-block-heading"><span id="toc11">⑤ma_method　（計算方法の設定）</span></h4>



<p class="wp-block-paragraph">計算方法の設定です。</p>



<p class="wp-block-paragraph">移動平均線の計算方法は、主に４つあります。以下の通りです。</p>



<figure class="wp-block-table alignwide"><table><tbody><tr><td><strong>入力値</strong></td><td><strong>計算方法</strong></td></tr><tr><td>MODE_SMA</td><td>単純移動平均</td></tr><tr><td>MODE_EMA</td><td>指数移動平均</td></tr><tr><td>MODE_SMMA</td><td>平滑移動平均</td></tr><tr><td>MODE_LWMA</td><td>加重移動平均</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">「難しい！」という方は、<strong>単純移動平均（MODE_SMA）</strong>を入力してください。</p>



<p class="wp-block-paragraph">なぜなら、移動平均線のインジケータは、単純移動平均になっているからです。</p>



<p class="wp-block-paragraph">そうすれば、Moving Averageインジケータの表示通りに、値を取得できるはずです。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 micro-balloon micro-top micro-copy"><span class="micro-balloon-content micro-content"><span class="marker-under">⑤に「MODE_SMA」を入力</span></span></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(NULL, 0, 7, 0, MODE_SMA, ⑥, ⑦);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<h4 class="wp-block-heading"><span id="toc12">⑥applied_price　（適用価格の設定）</span></h4>



<p class="wp-block-paragraph">適用価格とは、ロウソク足の「終値」「始値」「高値」「底値」のことです。</p>



<p class="wp-block-paragraph">移動平均の計算を、どの値で計算するのかを設定します。</p>



<p class="wp-block-paragraph">以下の通り設定できるのですが、<strong>「終値」（PRICE_CLOSE）</strong>で設定して問題ありません。</p>



<figure class="wp-block-table alignwide"><table><tbody><tr><td><strong>入力値</strong></td><td><strong>内容</strong></td></tr><tr><td>PRICE_CLOSE</td><td>終値</td></tr><tr><td>PRICE_OPEN</td><td>始値</td></tr><tr><td>PRICE_HIGH</td><td>高値</td></tr><tr><td>PRICE_LOW</td><td>底値</td></tr><tr><td>PRICE_MEDIAN</td><td>中間（高値 + 安値)/2</td></tr><tr><td>PRICE_TYPICAL</td><td>中間（高値 + 安値 + 終値)/3</td></tr><tr><td>PRICE_WEIGHTED</td><td>中間（高値 + 安値 + 終値 + 終値)/4</td></tr></tbody></table></figure>



<div class="wp-block-cocoon-blocks-micro-balloon-2 micro-balloon micro-top micro-copy"><span class="micro-balloon-content micro-content"><span class="marker-under">⑥に「PRICE_CLOSE」を入力</span></span></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(NULL, 0, 7, 0, MODE_SMA, PRICE_CLOSE, ⑦);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<h4 class="wp-block-heading"><span id="toc13">⑦shift　（先行・遅行の設定）</span></h4>



<p class="wp-block-paragraph">最後にshiftの設定です。</p>



<p class="wp-block-paragraph">先行線や遅行線の設定をします。</p>



<p class="wp-block-paragraph">簡単に言うと、どのくらい過去の移動平均線の値を取得するかです。</p>



<p class="wp-block-paragraph">プラスの数値を入力した場合、その数値分だけ過去のロウソク足の、移動平均線の値を取得します。</p>



<p class="wp-block-paragraph">移動平均線を１本だけ使う場合は、「0」で良いのですが、２本使う場合（ゴールデンクロスやデッドクロス）は、このshiftを使います。</p>



<div class="wp-block-cocoon-blocks-micro-balloon-2 micro-balloon micro-top micro-copy"><span class="micro-balloon-content micro-content"><span class="marker-under">⑦に「０」を入力</span></span></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>double ma = iMA(NULL, 0, 7, 0, MODE_SMA, PRICE_CLOSE, 0);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">ここまでで、iMAの書き方は完了です。</p>



<p class="wp-block-paragraph">上記のように記述すれば、移動平均線の値を取得することができます。</p>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc14">iMA関数の具体的な使い方（サンプルあり）</span></h2>



<p class="wp-block-paragraph">もう少し具体的な使い方を見ていきましょう。</p>



<p class="wp-block-paragraph">iMAを使う時、大体２通りの使い方があります。</p>



<ul class="wp-block-list"><li>③ma_period（計算期間の設定）を変える方法</li><li>⑦shift（先行・遅行の設定）を変える方法</li></ul>



<p class="wp-block-paragraph">それぞれ見ていきましょう。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc15">③ma_period（計算期間）を変える方法</span></h3>



<p class="wp-block-paragraph">ゴールデンクロスやデッドクロスを判定する場合、短期移動平均線と長期移動平均線の２本が必要です。</p>



<p class="wp-block-paragraph">この場合、<strong>③ma_period（計算期間）を変える</strong>ことで、短期と長期の移動平均線の値を取得できます。</p>



<p class="wp-block-paragraph">例えば、短期を「7」、長期を「25」に設定する場合は以下の通りです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>// 短期移動平均線（期間7）
double ma_short = iMA(NULL, 0, 7, 0, MODE_SMA, PRICE_CLOSE, 0);

// 長期移動平均線（期間25）
double ma_long = iMA(NULL, 0, 25, 0, MODE_SMA, PRICE_CLOSE, 0);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">このように③の部分だけを変えることで、短期と長期の値を別々に取得できます。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc16">⑦shift（先行・遅行）を変える方法</span></h3>



<p class="wp-block-paragraph">ゴールデンクロスやデッドクロスの判定には、<strong>現在の値</strong>と<strong>１本前の値</strong>を比較する必要があります。</p>



<p class="wp-block-paragraph">この場合、⑦shift（先行・遅行の設定）を変えることで、過去の移動平均線の値を取得できます。</p>



<p class="wp-block-paragraph">例えば、現在のロウソク足と１本前のロウソク足の移動平均を取得する場合は以下の通りです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>// 現在のロウソク足の移動平均（shift=0）
double ma_current = iMA(NULL, 0, 7, 0, MODE_SMA, PRICE_CLOSE, 0);

// 1本前のロウソク足の移動平均（shift=1）
double ma_prev = iMA(NULL, 0, 7, 0, MODE_SMA, PRICE_CLOSE, 1);</code></pre></div>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">⑦の部分を「0」にすると現在のロウソク足、「1」にすると1本前のロウソク足の値を取得します。</p>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc17">サンプルプログラム（ゴールデンクロス・デッドクロス判定）</span></h2>



<p class="wp-block-paragraph">ここからは、iMA関数を使った実践的なサンプルプログラムを紹介します。</p>



<p class="wp-block-paragraph"><strong>ゴールデンクロスとデッドクロスを判定するEA（自動売買プログラム）</strong>のサンプルです。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc18">ゴールデンクロス・デッドクロスの判定ロジック</span></h3>



<p class="wp-block-paragraph">ゴールデンクロスとデッドクロスの判定は、以下のように考えます。</p>



<p class="wp-block-paragraph"><strong>【ゴールデンクロス】</strong></p>



<ul class="wp-block-list"><li>1本前：短期MA ＜ 長期MA（短期が下にある）</li><li>現在　：短期MA ＞ 長期MA（短期が上に抜けた）</li></ul>



<p class="wp-block-paragraph"><strong>【デッドクロス】</strong></p>



<ul class="wp-block-list"><li>1本前：短期MA ＞ 長期MA（短期が上にある）</li><li>現在　：短期MA ＜ 長期MA（短期が下に抜けた）</li></ul>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc19">サンプルコード</span></h3>



<p class="wp-block-paragraph">以下がゴールデンクロス・デッドクロスを判定し、アラートを表示するサンプルプログラムです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>//+------------------------------------------------------------------+
//| iMA関数サンプル - ゴールデンクロス・デッドクロス判定             |
//+------------------------------------------------------------------+

// 入力パラメータ
input int ShortPeriod = 7;    // 短期移動平均の期間
input int LongPeriod  = 25;   // 長期移動平均の期間

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   // 現在のロウソク足の短期・長期移動平均を取得
   double ma_short_current = iMA(NULL, 0, ShortPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
   double ma_long_current  = iMA(NULL, 0, LongPeriod,  0, MODE_SMA, PRICE_CLOSE, 0);

   // 1本前のロウソク足の短期・長期移動平均を取得
   double ma_short_prev = iMA(NULL, 0, ShortPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
   double ma_long_prev  = iMA(NULL, 0, LongPeriod,  0, MODE_SMA, PRICE_CLOSE, 1);

   // ゴールデンクロス判定
   if(ma_short_prev < ma_long_prev &#038;&#038; ma_short_current > ma_long_current)
   {
      Alert("ゴールデンクロスが発生しました！");
   }

   // デッドクロス判定
   if(ma_short_prev > ma_long_prev && ma_short_current < ma_long_current)
   {
      Alert("デッドクロスが発生しました！");
   }
}</code></pre></div>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc20">サンプルコードの解説</span></h3>



<p class="wp-block-paragraph">上記のサンプルコードを順番に解説します。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph"><strong>①入力パラメータの設定</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>input int ShortPeriod = 7;    // 短期移動平均の期間
input int LongPeriod  = 25;   // 長期移動平均の期間</code></pre></div>



<p class="wp-block-paragraph">inputをつけることで、EAの設定画面から期間を変更できるようになります。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph"><strong>②現在と1本前の移動平均線の値を取得</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>// 現在のロウソク足（shift=0）
double ma_short_current = iMA(NULL, 0, ShortPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double ma_long_current  = iMA(NULL, 0, LongPeriod,  0, MODE_SMA, PRICE_CLOSE, 0);

// 1本前のロウソク足（shift=1）
double ma_short_prev = iMA(NULL, 0, ShortPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
double ma_long_prev  = iMA(NULL, 0, LongPeriod,  0, MODE_SMA, PRICE_CLOSE, 1);</code></pre></div>



<p class="wp-block-paragraph">③ma_periodと⑦shiftの両方を変えて、合計4つの値を取得しています。</p>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph"><strong>③ゴールデンクロス・デッドクロスの判定</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>// ゴールデンクロス判定
if(ma_short_prev < ma_long_prev &#038;&#038; ma_short_current > ma_long_current)
{
   Alert("ゴールデンクロスが発生しました！");
}</code></pre></div>



<p class="wp-block-paragraph">if文を使って、1本前では短期が長期より下にあり、現在は短期が長期より上にある場合を、ゴールデンクロスと判定しています。</p>



<p class="wp-block-paragraph">デッドクロスは、この逆の条件で判定しています。</p>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc21">iMA関数を使う時の注意点</span></h2>



<p class="wp-block-paragraph">最後に、iMA関数を使う時の注意点をまとめておきます。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc22">注意点①：返ってくるのは「点」であること</span></h3>



<p class="wp-block-paragraph">先ほども説明しましたが、iMA関数は<strong>移動平均「線」ではなく、移動平均「点」</strong>を返します。</p>



<p class="wp-block-paragraph">1回の呼び出しで、1つのロウソク足に対する1つの値しか取得できません。</p>



<p class="wp-block-paragraph">複数の値が必要な場合は、⑦shiftの値を変えて複数回呼び出す必要があります。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc23">注意点②：④ma_shiftと⑦shiftの違い</span></h3>



<p class="wp-block-paragraph">④ma_shiftと⑦shiftは混同しやすいので注意が必要です。</p>



<ul class="wp-block-list"><li><strong>④ma_shift</strong>：表示を移動させるだけ（取得する値は変わらない）</li><li><strong>⑦shift</strong>：取得するロウソク足の位置を変える（実際に取得する値が変わる）</li></ul>



<p class="wp-block-paragraph">通常は④ma_shiftは「0」のままで、⑦shiftを使って過去の値を取得するようにしましょう。</p>



<p class="wp-block-paragraph">　</p>



<h3 class="wp-block-heading"><span id="toc24">注意点③：計算期間より少ないデータしかない場合</span></h3>



<p class="wp-block-paragraph">例えばma_periodを「25」に設定した場合、最低でも25本のロウソク足のデータが必要です。</p>



<p class="wp-block-paragraph">データが不足している場合、正しい値が返ってこない可能性があるので注意してください。</p>



<p class="wp-block-paragraph">　</p>



<h2 class="wp-block-heading"><span id="toc25">まとめ</span></h2>



<p class="wp-block-paragraph">iMA関数について解説しました。ポイントをまとめます。</p>



<ul class="wp-block-list"><li>iMA関数は<strong>移動平均線の値を取得する関数</strong></li><li>返り値は<strong>double型</strong>で、1つの値（移動平均「点」）が返ってくる</li><li>引数は<strong>7つ</strong>あるが、よく変更するのは③ma_periodと⑦shift</li><li>ゴールデンクロス・デッドクロスの判定には、<strong>③ma_periodと⑦shiftを組み合わせて</strong>使う</li><li>④ma_shiftと⑦shiftの違いに注意する</li></ul>



<p class="wp-block-paragraph">　</p>



<p class="wp-block-paragraph">iMA関数は引数が多く最初は難しく感じますが、慣れてしまえば簡単に使えるようになります。</p>



<p class="wp-block-paragraph">ぜひサンプルコードを参考に、実際に動かしてみてください！</p>
<p>投稿 <a href="https://mql-programing.com/archives/437/ima-method/">【MQL4関数】iMA関数（移動平均線）の使い方とサンプルプログラム</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
