平均足の構成(ヒゲ) 追加要望

2026/02/03 07:49
37

以前のQ&Aで、追加要望として「平均足の構成(ヒゲ)」があったようですが、これは要望として取り上げてもらえなかったのでしょうか?

https://labo.gogojungle.co.jp/articles/948

通常の「ローソク足の構成(ヒゲ)」と同様に、平均足でも「上ヒゲ、実態、下ヒゲ、値幅」を作成したいですが。。。。

もし要望として無理であれば、現状でサクッとコードで変更することはできますか?

コメント

SHI Haoda
2026/02/06 21:12

お待たせしてしまい失礼いたします。

改善事項のリストには入っておりまして、過去に複数の方からご要望いただいている・実装後の既存プログラムへの影響が小さいといった条件を基準に、順次対応させていただいております。
コードの修正方法を考えてみましたので、共有いたします。


設定方法(ロジック)

1) まずEAつくーる側で「ローソク足の構成(ヒゲ)+数値」の条件を作る

EAつくーるで通常どおり、例えば「ローソク足の構成(ヒゲ) > 数値(10)」のように条件を作ってEAを作成し、EA(mq4)をダウンロードします。
この時点では平均足にできないため、一旦ローソク足で条件を組んでOKです(後でコード側で平均足に差し替えます)。


2) ダウンロードしたEAのコード最下部に、平均足版の関数を追加する

mq4を開き、コードの一番下(最下部) に以下を貼り付けてください(戻り値はpipsです)。

double getHeikenAshiValue(
    string symbol,
    int    timeframe,
    int    part,   // 0:上ヒゲ / 1:実体 / 2:下ヒゲ / 3:値幅
    int    shift
)
{
    int digits = (int)MarketInfo(symbol, MODE_DIGITS);

    double ha_open  = iCustom(symbol, timeframe, "Heiken Ashi", 0, shift);
    double ha_high  = iCustom(symbol, timeframe, "Heiken Ashi", 1, shift);
    double ha_low   = iCustom(symbol, timeframe, "Heiken Ashi", 2, shift);
    double ha_close = iCustom(symbol, timeframe, "Heiken Ashi", 3, shift);

    double body_high = MathMax(ha_open, ha_close);
    double body_low  = MathMin(ha_open, ha_close);

    switch (part)
    {
        case 0: return NormalizeDouble(PriceToPips(ha_high - body_high), digits);  // 上ヒゲ
        case 1: return NormalizeDouble(PriceToPips(body_high - body_low), digits); // 実体
        case 2: return NormalizeDouble(PriceToPips(body_low - ha_low), digits);    // 下ヒゲ
        case 3: return NormalizeDouble(PriceToPips(ha_high - ha_low), digits);     // 値幅
    }
    return 0.0;
}

PriceToPips() はEAつくーる生成EA内に既に入っている前提です(通常入っています)。


3) EA内で getCandleStickPips を呼んでいる箇所を探して、関数名だけ置換する

mq4内で getCandleStickPips( を検索し、見つかった箇所の 関数名だけを差し替えます。

例:EAつくーる側で「ローソク足の構成(ヒゲ) > 10」のような条件を作ると、コード内で次のような形が見つかることがあります。

if(getCandleStickPips(Symbol(), 0, 0, 0) + (0) > 10) signal = 1;

この場合、次のように getCandleStickPips → getHeikenAshiValue に置換してください(他はそのままでOKです)。

if(getHeikenAshiValue(Symbol(), 0, 0, 0) + (0) > 10) signal = 1;

これで、EAつくーるで作った「ローソク足の構成(ヒゲ)>10(pips)」という条件を、参照元だけ平均足に切り替えた形で使えます。

以上の方法で、EAつくーるの設定はそのまま活かしつつ、コード上で getCandleStickPips → getHeikenAshiValue に差し替えるだけで、平均足の「上ヒゲ/実体/下ヒゲ/値幅」を同じ要領で利用できます。

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。