平均足Smoothdのダウンロードと解説|MT4インジケーター
平均足SmoothdというMT4インジケーターがほしいです。
平均足Smoothdはどんなインジケーターですか?
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
この無料EAで不労所得が稼げます
累計テスト120年以上・リアル取引公開2020年~
このページでわかること・できること
〇平均足Smoothdインジケーターのダウンロード
〇平均足Smoothdの詳しい解説
平均足Smoothdのダウンロード
ここからファイルのダウンロードが可能。
ダウンロードするファイルは.ex4ファイルのため、MT4のデータフォルダにあるインジケーターフォルダへファイルを移動すればインジケーターは使用できるようになる。
平均足Smoothdのインストール
ダウンロードしたインジケーターはMT4のデータフォルダからindicatorsフォルダを探しファイルを移動する。
indicatorsフォルダにファイルを移動し、MT4を再起動するとインストールが完了する。
平均足Smoothdとは?詳しく解説
平均足スムースド(Heikin Ashi Smoothed)は、従来の平均足を改良したものだ。これは価格のトレンドをより明確に視覚化し、市場のノイズを減らせる。以下で平均足スムースドの詳細について説明する。
平均足(Heikin Ashi)の基本
平均足はローソク足チャートに基づいて開発された技術で、価格の変動を滑らかにしトレンドの把握を容易にする。平均足は各ローソク足の始値、高値、安値、終値を計算する方法に独自の特徴がある。
平均足スムースドの構成
平均足スムースドは通常の平均足と異なり、さらに平滑化された値を使用する。これにより、チャートがより滑らかになり、ノイズが減少する。計算には移動平均(MA)が使用される。
基本的な計算式
- 始値 (HA Open)
[math]\text{HA Open} = \frac{\text{前の足の HA Open} + \text{前の足の HA Close}}{2}[/math] - 終値 (HA Close)
[math]\text{HA Close} = \frac{\text{今の足の始値} + \text{今の足の高値} + \text{今の足の安値} + \text{今の足の終値}}{4}[/math] - 高値 (HA High)
[math]\text{HA High} = \max(\text{今の足の高値}, \text{HA Open}, \text{HA Close})[/math] - 安値 (HA Low)
[math]\text{HA Low} = \min(\text{今の足の安値}, \text{HA Open}, \text{HA Close})][/math]
平均足スムースドの利点
- トレンドの視覚化: トレンドの方向をより明確に示すため、トレンドの継続や反転を認識しやすくなる。
- ノイズの削減: 市場のノイズを減らすことでトレンドを強調し、取引の決定を容易にする。
- 視覚的な明瞭性: チャートが滑らかになり、視覚的にわかりやすくなる。
パラメーターについて解説
移動平均の方法
- 説明: 移動平均の計算方法を指定。
- 選択肢:
0
: 単純移動平均(Simple Moving Average, SMA)1
: 指数移動平均(Exponential Moving Average, EMA)2
: 平滑移動平均(Smoothed Moving Average, SMMA)3
: 線形加重移動平均(Linear Weighted Moving Average, LWMA)
- 例:
MaMethod = 2
は平滑移動平均の使用を意味する。
移動平均の期間
- 説明: 移動平均を計算するための期間を指定。値が大きいほど移動平均は滑らかになるが、反応が遅くなる。
- 例:
MaPeriod = 6
は移動平均を6期間で使用することを意味している。
2つ目の移動平均法
- 説明: 二重平滑化のために使用される2つ目の移動平均の計算方法を指定。最初の移動平均をさらに滑らかにしている。
- 選択肢:
0
: 単純移動平均(Simple Moving Average, SMA)1
: 指数移動平均(Exponential Moving Average, EMA)2
: 平滑移動平均(Smoothed Moving Average, SMMA)3
: 線形加重移動平均(Linear Weighted Moving Average, LWMA)
- 例:
MaMethod2 = 3
は線形加重移動平均の使用を意味する。
2つ目の移動平均期間
- 説明: 二重平滑化のための2つ目の移動平均の期間を指定。
- 例:
MaPeriod2 = 2
は2期間の移動平均を使用することを意味する。
トレードでの活用方法
平均足スムースドは足色の転換をエントリー判断、及びクローズ判断に使える他、上位足に表示させてフィルターとする使い方も有効だ。
足色の転換でエントリー、クローズする
平均足スムースドの足色が転換するタイミングでエントリー、そしてクローズするという使い方は有効である。
しかし、値動きが小さい状況下では有効ではないため、使用する状況は選ぶ必要がある。
トレンドが発生していない状況であっても、値動きが大きければ平均足スムースドを使った短期売買は成立する。
トレンドが発生すれば平均足スムースドは足色の転換をトリガーとしたトレードを繰り返すだけで利益のでるサインとなる。
そのため、1,値動きの大きさ、2,トレンドの有無、の2点を把握することが平均足スムースドを生かすために重要となる。
値動きの大きさやトレンドの有無、方向などを他のインジケーターや上位足などを用いて分析することで、平均足スムースドを使ったトレードの精度は向上する。
上位足に表示させてフィルターとして利用する
トレンド発生の有無や、方向を確認する方法として、平均足スムースドを上位足に表示させるのは有効だ。
例えば5分足を監視しているなら1時間足、4時間足などに平均足スムースドを表示させてトレンドの有無や方向を定める。
そして、上位足で定めたトレンド状況に合わせてトレードを実行する。
- 上位足でトレンドが発生していない
- トレードをしない
- 短期売買に徹する
- 上位足でトレンドが発生している
- 同じ方向のみのトレードを検討する
上位足でトレンドの有無や方向を把握するだけで、トレードの精度は大きく向上する。
HeikinAshi Smoothdのプログラム
//+------------------------------------------------------------------+
//| Heikin Ashi Smoothed.mq4 |
//| Copyright 2024, FX-Bonus.net |
//| https://fx-bonus.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, FX-Bonus.net"
#property link "https://fx-bonus.net/"
#property version "1.00"
#property strict
//---- インジケーターのプロパティ
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_color3 Red
#property indicator_color4 Lime
//---- パラメータ
extern int MaMetod = 2; // 移動平均の方法
extern int MaPeriod = 6; // 移動平均の期間
extern int MaMetod2 = 3; // 二番目の移動平均の方法
extern int MaPeriod2 = 2; // 二番目の移動平均の期間
//---- バッファ
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
//+------------------------------------------------------------------+
//| カスタムインジケーター初期化関数 |
//+------------------------------------------------------------------+
int init()
{
//---- インジケーターバッファとスタイルの初期化
IndicatorBuffers(8);
// ヒストグラム
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1, Aqua);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1, Red);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexStyle(2, DRAW_HISTOGRAM, 0, 3, Aqua);
SetIndexBuffer(3, ExtMapBuffer4);
SetIndexStyle(3, DRAW_HISTOGRAM, 0, 3, Red);
// ライン
SetIndexBuffer(4, ExtMapBuffer5);
SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexBuffer(5, ExtMapBuffer6);
SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexBuffer(6, ExtMapBuffer7);
SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexBuffer(7, ExtMapBuffer8);
SetIndexStyle(7, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexDrawBegin(0, 5);
return (0);
}
//+------------------------------------------------------------------+
//| カスタムインジケーター終了関数 |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: 必要に応じて終了コードを追加
return (0);
}
//+------------------------------------------------------------------+
//| カスタムインジケーター実行関数 |
//+------------------------------------------------------------------+
int start()
{
double maOpen, maClose, maLow, maHigh;
double haOpen, haHigh, haLow, haClose;
// 最低バー数のチェック
if (Bars <= 10)
return (0);
int counted_bars = IndicatorCounted();
if (counted_bars < 0)
return (-1);
if (counted_bars > 0)
counted_bars--;
int limit = Bars - counted_bars;
if (counted_bars == 0)
limit -= 1 + MathMax(1, MathMax(MaPeriod, MaPeriod2));
// メイン計算ループ
for (int pos = limit - 1; pos >= 0; pos--)
{
maOpen = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_OPEN, pos);
maClose = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_CLOSE, pos);
maLow = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_LOW, pos);
maHigh = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_HIGH, pos);
haOpen = (ExtMapBuffer5[pos + 1] + ExtMapBuffer6[pos + 1]) / 2;
haClose = (maOpen + maHigh + maLow + maClose) / 4;
haHigh = MathMax(maHigh, MathMax(haOpen, haClose));
haLow = MathMin(maLow, MathMin(haOpen, haClose));
if (haOpen < haClose)
{
ExtMapBuffer7[pos] = haLow;
ExtMapBuffer8[pos] = haHigh;
}
else
{
ExtMapBuffer7[pos] = haHigh;
ExtMapBuffer8[pos] = haLow;
}
ExtMapBuffer5[pos] = haOpen;
ExtMapBuffer6[pos] = haClose;
}
// 配列上の移動平均を計算
for (int i = 0; i < limit; i++)
{
ExtMapBuffer1[i] = iMAOnArray(ExtMapBuffer7, 0, MaPeriod2, 0, MaMetod2, i);
ExtMapBuffer2[i] = iMAOnArray(ExtMapBuffer8, 0, MaPeriod2, 0, MaMetod2, i);
ExtMapBuffer3[i] = iMAOnArray(ExtMapBuffer5, 0, MaPeriod2, 0, MaMetod2, i);
ExtMapBuffer4[i] = iMAOnArray(ExtMapBuffer6, 0, MaPeriod2, 0, MaMetod2, i);
}
return (0);
}
//+------------------------------------------------------------------+
ソースコードの詳細
インジケーターのプロパティ
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_color3 Red
#property indicator_color4 Lime
#property indicator_chart_window
: インジケーターをメインチャートウィンドウに表示。#property indicator_buffers 8
: インジケーターには8つのバッファ(データの保存領域)が必要。#property indicator_color1
,#property indicator_color2
,#property indicator_color3
,#property indicator_color4
: インジケーターの各バッファの色を指定。
パラメータ
extern int MaMetod = 2; // 移動平均の方法
extern int MaPeriod = 6; // 移動平均の期間
extern int MaMetod2 = 3; // 二番目の移動平均の方法
extern int MaPeriod2 = 2; // 二番目の移動平均の期間
MaMetod
: 最初の移動平均線の計算方法(0: 簡単移動平均 (SMA)、1: 指数移動平均 (EMA)、2: 平滑移動平均 (SMMA)、3: 線形加重移動平均 (LWMA))。MaPeriod
: 最初の移動平均線の期間。MaMetod2
: 二番目の移動平均線の計算方法。MaPeriod2
: 二番目の移動平均線の期間。
バッファ
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
- 各バッファは、インジケーターのデータを保存するための配列。
カスタムインジケーター初期化関数
int init()
{
//---- インジケーターバッファとスタイルの初期化
IndicatorBuffers(8);
// ヒストグラム
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1, Aqua);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1, Red);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexStyle(2, DRAW_HISTOGRAM, 0, 3, Aqua);
SetIndexBuffer(3, ExtMapBuffer4);
SetIndexStyle(3, DRAW_HISTOGRAM, 0, 3, Red);
// ライン
SetIndexBuffer(4, ExtMapBuffer5);
SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexBuffer(5, ExtMapBuffer6);
SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexBuffer(6, ExtMapBuffer7);
SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexBuffer(7, ExtMapBuffer8);
SetIndexStyle(7, DRAW_LINE, STYLE_SOLID, 1, clrNONE); // カラーなし(透明)
SetIndexDrawBegin(0, 5);
return (0);
}
IndicatorBuffers(8)
: インジケーターに8つのバッファを割り当てる。SetIndexBuffer
: 各バッファをインジケーターに設定。SetIndexStyle
: 各バッファの描画スタイルを設定。DRAW_HISTOGRAM
はヒストグラム、DRAW_LINE
はラインを描画。clrNONE
は透明(表示なし)を意味する。
カスタムインジケーター終了関数
int deinit()
{
//---- TODO: 必要に応じて終了コードを追加
return (0);
}
- インジケーターの終了時に必要なコードを追加。
カスタムインジケーター実行関数
int start()
{
double maOpen, maClose, maLow, maHigh;
double haOpen, haHigh, haLow, haClose;
// 最低バー数のチェック
if (Bars <= 10)
return (0);
int counted_bars = IndicatorCounted();
if (counted_bars < 0)
return (-1);
if (counted_bars > 0)
counted_bars--;
int limit = Bars - counted_bars;
if (counted_bars == 0)
limit -= 1 + MathMax(1, MathMax(MaPeriod, MaPeriod2));
// メイン計算ループ
for (int pos = limit - 1; pos >= 0; pos--)
{
maOpen = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_OPEN, pos);
maClose = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_CLOSE, pos);
maLow = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_LOW, pos);
maHigh = iMA(NULL, 0, MaPeriod, 0, MaMetod, PRICE_HIGH, pos);
haOpen = (ExtMapBuffer5[pos + 1] + ExtMapBuffer6[pos + 1]) / 2;
haClose = (maOpen + maHigh + maLow + maClose) / 4;
haHigh = MathMax(maHigh, MathMax(haOpen, haClose));
haLow = MathMin(maLow, MathMin(haOpen, haClose));
if (haOpen < haClose)
{
ExtMapBuffer7[pos] = haLow;
ExtMapBuffer8[pos] = haHigh;
}
else
{
ExtMapBuffer7[pos] = haHigh;
ExtMapBuffer8[pos] = haLow;
}
ExtMapBuffer5[pos] = haOpen;
ExtMapBuffer6[pos] = haClose;
}
// 配列上の移動平均を計算
for (int i = 0; i < limit; i++)
{
ExtMapBuffer1[i] = iMAOnArray(ExtMapBuffer7, 0, MaPeriod2, 0, MaMetod2, i);
ExtMapBuffer2[i] = iMAOnArray(ExtMapBuffer8, 0, MaPeriod2, 0, MaMetod2, i);
ExtMapBuffer3[i] = iMAOnArray(ExtMapBuffer5, 0, MaPeriod2, 0, MaMetod2, i);
ExtMapBuffer4[i] = iMAOnArray(ExtMapBuffer6, 0, MaPeriod2, 0, MaMetod2, i);
}
return (0);
}
Bars <= 10
: バー(チャートのローソク足)が10本以下の場合、計算を行わない。IndicatorCounted()
: 既に計算されたバーの数を取得。iMA
: 指定された期間と方法で移動平均を計算。haOpen
,haClose
,haHigh
,haLow
: 平均足の値を計算。iMAOnArray
: バッファ配列上で移動平均を計算。
まとめ
このページで平均足スムースドのダウンロードが可能で、ファイルのソースコードも確認できる。
平均足スムースドは単体でのエントリーも可能だが、トレンドや値動きの有無が重要となる。
他のインジケーターや上位足をフィルターとして使用し、トレンドや値動きの大きさを把握することで、平均足スムースドを生かしたトレードが可能となる。