解決済み

【確認願い】平均足 MQLの違い

2025/10/07 20:46
77

①平均足 始値 終値 適用MQL 数値が違ている?
②平均足の 安値 高値 が MQLでは 実ローソク足のロジックになっている?

平均足1.png

平均足2.png

平均足 MQL確認.pdf

コメント

GogoJungle
2025/10/10 20:55

ご質問いただき、誠にありがとうございます。
お送りいただいた内容について確認いたしました。

まず、平均足インジケーターのデータウィンドウ上では、
画像の上から順に「0, 1, 2, 3」という並びでバッファのインデックスが設定されています。
それぞれの内容は以下の通りです:

バッファ0:Low/High(平均足の安値)
バッファ1:High/Low(平均足の高値)
バッファ2:Open(平均足の始値)
バッファ3:Close(平均足の終値)

したがって、始値と終値は下から2つ目と1番下に表示されており、それぞれ「2」「3」のバッファに対応しています。

また、平均足の高値/安値はローソク足の高値/安値と一致いたします。
計算効率を重視し、平均足の高値・安値についてはカスタムインジケーターの値を参照するのではなく、ローソク足の関数 iHigh / iLow をそのまま利用しております。

このため、計算速度が速く、かつ平均足の値と完全に一致する仕様となっております。

丁寧にご確認くださりありがとうございます。
引き続きどうぞよろしくお願いいたします。

BigRiver
2025/10/11 08:35

ご教示ありがとうございます。

①バッファ数値の件 承知いたしました。

②について
  実現したい事 (エントリ条件の一つとして)
   平均足 上げ 下髭無し  平均足 始値(1本前)= 平均足 安値(1本前)
   平均足下げ 上髭無し  平均足 始値(1本前)= 平均足 高値(1本前)

と設定して組んだところ
   平均足 上げ 下髭無し  平均足 始値(1本前)=平均足 安値(1本前) については 反応しエントリ実現
   平均足下げ 上髭無し  平均足 始値(1本前)=平均足 高値(1本前) については 反応せず

その為、MQL確認しての指摘(疑問)をさせていただきました。

高値・安値が ローソク足で設定されているとすれば
 「=」 になることは ほぼない ので 成立しないのもわかるのですが

※上げ 下髭無し については ほぼ反応したはず・・このことは不明なのですが・・・。
    この件は 置いといて

平均足下げ 上髭無し 平均足 始値(1本前)=> 平均足 高値(1本前)   と表現し
           平均足 始値(1本前)=>ローソク足 高値(1本前) を実現させている(計算効率重視)

と理解いたしました。

ありがとうございました。
引き続きどうぞよろしくお願い申し上げます。

BigRiver
2025/10/11 08:53

追伸ご無礼いたします。

上記 理解しました と申し上げておきながら・・・(何か モヤモヤしておりまして・・・)

平均足 上げ 下髭無し  平均足 始値(1本前)= 平均足 安値(1本前)
   平均足下げ 上髭無し  平均足 始値(1本前)= 平均足 高値(1本前)

多分 他のユーザの方々も 直感的には 平均足を利用しての表現となれば 上記の様になるはず・・。
となれば、同じような事象(整合性が取れない)ケースはこれからも出るはず・・・。

>・・・ローソク足の関数 iHigh / iLow をそのまま利用・・・。

→「計算効率重視」とのこと。

1本前であれば 効率には変化がないと理解するのですが、効率に関係が出てくるのでしょうか?

0本前 の使用については そもそも 高値 安値が確定していないので 結果については保証できない。
つまり 平均足において ”髭無し” 表現において 0本前 を 使うこと自体あってはならない。(正しく成立しない)

誠に申し訳ございません。
「計算効率が良くなる」 という点 どういうときに 効率化 がある となるのでしょうか?(ここにモヤモヤがあります)
今後の為、ご教示いただけましたら幸いです。

BigRiver
2025/10/11 09:31

追伸 2

もう一つ 誠に申し訳ございません。今後の為・・・(モヤモヤが残り)

下記設定 について
  バッファ0:Low/High(平均足の安値)
  バッファ1:High/Low(平均足の高値)
  バッファ2:Open(平均足の始値)
  バッファ3:Close(平均足の終値)

ググってみますと 平均足のバッファの順番とすると 始値 終値を 前半に もってくるのが通常例として
あったため、先の質問となりました。
「バッファの定義は作成者に準拠する」とも書いてありました。

【質問①】
  バッファ0:Low/High(平均足の安値)
  バッファ1:High/Low(平均足の高値)
  バッファ2:Open(平均足の始値)
  バッファ3:Close(平均足の終値)

は プログラム中に宣言してあるのでしょうか?
私では 探し出せず、宣言の箇所 ご教示いただけましたら幸いです。

【質問②】
宣言してない 場合、実際にデモで検証して 割り当てられた バッファ数値を
自身で探り当てるしか ない? となりますでしょうか? (作者に 質問しないとした場合)

ご教示何卒、宜しくお願い申し上げます。

GogoJungle
2025/10/15 15:54

ご報告の内容(「平均足のヒゲ無し判定が、上げ側は動くが下げ側は反応しない」「計算効率の話」「バッファ順と宣言場所」)を踏まえ、順に整理してご説明します。


1) 「平均足のヒゲ無し」が片側だけ反応しづらい理由と対処

EAつくーるの「平均足」項目では、始値・終値は平均足の値を返し、高値・安値は内部的に実ローソク足の High / Low(iHigh/iLow)を参照しています(=計算効率のため)。
このため、「ヒゲ無し」を等号(=)の厳密一致で組むと、小数点の丸め差や足の確定タイミングの影響で一致判定が崩れることがあります。特に「下げ・上ヒゲ無し(平均足の始値=高値)」側は一致しづらくなる傾向があります。

推奨:±許容幅で“実質的な一致”を判定する

EAつくーるでは加減算はできませんが、「補正値」を使って上下から挟み込むことで許容誤差つきの等価判定を作れます。シンボルの最小ポイント(例:USDJPY(小数第3位)なら 0.001、JPY2桁の口座なら 0.01)を目安に、許容幅を 1~2ポイント程度に設定してください。

以下は 「1本前の足」での確定足判定の例です。

上げ(陽線)・下ヒゲ無し

  • 条件の意味:陽線(終値 > 始値)かつ、min(始値, 終値) と 安値が一致(=下ヒゲ無し)
平均足(適用価格:終値, 計算位置:1本前) > 平均足(適用価格:始値, 計算位置:1本前)
AND
平均足(適用価格:始値, 計算位置:1本前, 補正値:+0.01) >= 平均足(適用価格:安値, 計算位置:1本前)
AND
平均足(適用価格:始値, 計算位置:1本前, 補正値:-0.01) <= 平均足(適用価格:安値, 計算位置:1本前)
↓
買いエントリー

下げ(陰線)・上ヒゲ無し

  • 条件の意味:陰線(終値 < 始値)かつ、max(始値, 終値) と 高値が一致(=上ヒゲ無し)
平均足(適用価格:終値, 計算位置:1本前) < 平均足(適用価格:始値, 計算位置:1本前)
AND
平均足(適用価格:始値, 計算位置:1本前, 補正値:+0.01) >= 平均足(適用価格:高値, 計算位置:1本前)
AND
平均足(適用価格:始値, 計算位置:1本前, 補正値:-0.01) <= 平均足(適用価格:高値, 計算位置:1本前)
↓
売りエントリー
  • 上の +0.01/-0.01 は例です。ご利用の通貨ペアと口座仕様の最小ポイントに合わせて調整してください。
  • 「=」1本での厳密一致より、上下からの二重条件の方が実運用では安定します。
  • なお、計算位置は必ず「1本前」にしてください。0本前(確定前足)は高値・安値が伸び続けるため、ヒゲの有無が確定せずロジックが不安定になります。

こうなっていませんか?

  • 「計算位置」が 0本前のままになっている
  • 許容幅(補正値)を使わず、だけで判定している
    いずれも、片側だけ反応しない原因になります。上記の修正例をご確認ください。

2) なぜ「高値・安値は iHigh/iLow(実足)」にしているのか(効率の話)

  • iHigh/iLow は単発の価格取得で軽量です。
  • 一方、平均足の「高値/安値」をカスタムバッファから毎ティック取得しようとすると、内部で iCustom によるインジケーター評価が都度走り、複数時間足・複数通貨・ナンピン/ピラミッディング併用の構成では呼び出し数が爆発的に増加します。
  • 「1本前」でも、複数ポジションや制御用の別時間足・別通貨を参照していると、総コスト(総呼び出し回数×各評価コスト)の差が顕著になります。
  • そのため、EAつくーるでは高値・安値は実足H/Lを参照する設計にしています(平均足の理論式でも多くの場合 High は max(実足高値, HA始値, HA終値)、Low は min(実足安値, HA始値, HA終値)なので、実足H/Lを使ってもヒゲ判定に実用上の差が出にくいという背景もあります)。

3) 「平均足バッファの順番」と宣言場所について

  • EAつくーる内蔵の平均足は、内部マッピング(バッファ0~3の割り当て)をツール側で固定しており、ユーザーが参照できるコード上の宣言箇所は公開していません
  • 一般論として、カスタムインジケーターのバッファ順は“作者に準拠”します。ネット上のサンプルとは順番が異なるケースが普通にあります。

実務的なバッファ確認手順(作者に聞けない場合)

  1. 該当インジケーターをチャートに適用。

  2. データウィンドウで各ラインの値を確認し、どの番号が Open/Close/High/Low に対応するかを照合。

  3. EAつくーるの「取引条件」→「カスタムインジケーター」を使い、

    • インジケーター名:ファイル名(拡張子不要)
    • 計算項目:確認したバッファ番号(0/1/2/3…)
      を入力して参照します。

例えば、「平均足の“真の”High/Low(=max/min 振る舞い)」でヒゲ無しを厳密に取りたい場合は、MT付属の Heiken_Ashi を「カスタムインジケーター」で読み込み、データウィンドウでバッファ番号を確認のうえ、

  • 上ヒゲ無し:HA高値(1本前) = max(HA始値, HA終値)(1本前)
  • 下ヒゲ無し:HA安値(1本前) = min(HA始値, HA終値)(1本前)
    を、やはり補正値による許容幅で挟み込む形にしていただくのが堅実です。
    (EAつくーるの標準「平均足(高値/安値)」は実足H/L参照のため、厳密に max/min を再現したい場合はこの方法が最も確実です。)

4) 仕上げのチェックポイント

  • 計算位置:必ず 1本前(確定足)。
  • 許容幅(補正値)を使って二重の不等号で“疑似イコール”にする。
  • 口座の最小ポイントに合わせて補正値を調整(1~2ポイントが目安)。
  • どうしても平均足の High/Low を厳密(max/min)に扱いたい場合は、「カスタムインジケーター」で Heiken_Ashi を直接参照し、データウィンドウでバッファ番号を確認してから条件を組む。

上記の設定で、上げ・下げの双方でヒゲ無し判定の整合性が取れるはずです。仕様上できない部分(高値・安値の内部参照先)は、補正値テクニックまたはカスタムインジケーター参照で回避できます。

BigRiver
2025/10/15 20:59

大変詳細にご説明を賜り、誠にありがとうございます。

1)「ヒゲ無し」を等号(=)の厳密一致で組むと、小数点の丸め差  の部分
   →計算値の小数点が違っていても最終的に丸めてチャート計上の表記数値 小数点2桁表記なら 
    小数点3桁で四捨五入によって 小数点2桁での一致しているのだろう。
    特に、1本前であるならば 確定しているのではと考えておりました。
    「=」でなく バッファを持たせることで 「髭無し」を表現する事 承知いたしました。

  1. なぜ「高値・安値は iHigh/iLow(実足)」にしているのか(効率の話)
      →内部で iCustomによる計算の負荷 や 平均足での表現となると 1)のような バッファ式などの面倒さ等
       を含めて「効率」との効果理解しました。

  2. 「平均足バッファの順番」と宣言場所について
       →本件 ご指摘いただきましたMt4 平均足のデータウィンド開いてみましたところ
        データの並び順は 下記のような順番でした 
         Low/High
         High/Low
         Open
         Close
       これが 上から0.1.2.3 ということであれば 貴社が使用されている 下記設定

バッファ0:Low/High(平均足の安値)
     バッファ1:High/Low(平均足の高値)
     バッファ2:Open(平均足の始値)
     バッファ3:Close(平均足の終値)

が正しいのであり、私が調べた 方が 普通では無い という理解となります。
   失礼いたしました。

本件、しつこく質問させていただてよかったです。
大変勉強になりました。

★平均足髭無し 条件式 利用させていただきます!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
【開発希望】
 ローソク足構成(ヒゲ) 同様に
 平均足構成(ヒゲ)  の開発 期待しております。

ご検討の程、何卒宜しくお願い申し上げます。

BigRiver
2025/10/16 05:14

追伸ご無礼いたします。
===============
こうなっていませんか?

「計算位置」が 0本前のままになっている
許容幅(補正値)を使わず、=だけで判定している
いずれも、片側だけ反応しない原因になります。上記の修正例をご確認ください
===============

上記ご指摘賜りました件、ファイルを送り 確認していただこうと思い
再度、バックテストしてみました。
BUYも 一つも反応(エントリ)しませんでした。
”キツネにつままれた”という思いです。
EA作成履歴をすべてみましたが全部、(1本前)であり (0本前)はありませんでした。
許容幅(補正値)は使用しておりません。

平均足(1本前)始値<平均足(1本前)終値
 平均足(1本前)始値=平均足(1本前)安値
 平均足(2本前)始値<平均足(2本前)終値
 平均足(3本前)始値=>平均足(3本前)終値

で検証をしておりました。

そもそも Buyを複製して 不等号のみ逆にしてSELLを作成
バックテストでBUYはエントリできるのになぜ、SELLはしないのだ?
との疑問を解決すべく エディタでMQLを確認させていただいたのが今回の質問の発端だったんです。
そんはなずない・・・と思いつつも結果がこの様であり(※ある意味では 安心 納得できました)

余計にお騒がせすることとなり、誠に申し訳ございせんでした。

GogoJungle
2025/10/16 19:00

この度は丁寧なご検証と詳細なご報告をいただき、誠にありがとうございました。

ご提案いただきました、
「平均足構成(ヒゲ)をローソク足構成同様に利用できるようにする」
といった機能拡張につきましては、今後の開発検討項目として社内で共有させていただきます。

今後ともEAつくーるをどうぞよろしくお願いいたします。

関連トピックス

検索結果がありません。

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

注目トピックス

検索結果がありません。