Single Arrow MT4
- インディケータ
-
Ahmed Hamed Hamed Eadwan
JAPANESE TRANSLATION — 日本語
===============================
TITLE:
MQL5開発者&トレーダー | R protocols創設者
ABOUT:
こんにちは、私はAhmedです。アラブ首長国連邦を拠点とする
トレーダー兼MQL5開発者、R protocolsの創設者です。
1984年からコードを書き、2006年から市場で取引を行っています。
長年にわたり、自分の使用のためにトレーディングツールを開発し、
実市場経験を通じて改良してきました。 - バージョン: 1.0
- アクティベーション: 5
ファイルひとつ。矢印ひとつ。意思決定ひとつ。
SingleArrow MTF は MetaTrader 4 向けのプロフェッショナルで自己完結型のダイバージェンスシグナルインジケーターです。専用の線形時間 ZigZag エンジン、レッグ分離を伴う Williams %R ダイバージェンスフィルター、任意のピボット保護層、マルチタイムフレーム合意ダッシュボード、自動サポート/レジスタンスを組み合わせ、すべてを単一ファイルにコンパイル。外部インジケーター、ライブラリ、DLL は一切不要です。
MT4 エディション — 同一エンジン、検証済みの同一シグナル
これは SingleArrow MTF の MetaTrader 4 ビルドです。MetaTrader 5 エディションと完全に同一のエンジンを実行します — 同一の入力、同一のデフォルト値、同一の 7 バッファ、同一のノーンペイント規則 — そしてそのシグナルは MT5 エディションと一つずつ照合済みです:同じシンボル、期間、設定であれば両プラットフォームで同じ矢印が出力されます。
- バーごとのネイティブ WPR / ATR 読み取り:Williams %R と ATR の値はインジケーターハンドルを使わず iWPR / iATR でバーごとに直接読み込むため、ライブターミナルでも MT4 の戦略テスターでもスムーズに動作します。
- EA 統合の変更なし:7 つすべてのバッファ名と SA_REP_ / SA_POST_ グローバル変数は MT5 エディションと同一のため、それ用に作成した EA やスクリプトは修正なしで動作します(iCustom + CopyBuffer、MT4 build 600 以降で利用可能)。
こんな方へ
- 生のオシレーターではなく、ルールに基づくクリーンなダイバージェンス矢印を求める裁量トレーダー。
- 機械可読でリペイント透明な信号源(バッファ + GlobalVariable チャネル)を必要とするEA 開発者。
- 確認済みで履歴安定の信号ストリーム(Confirm モード)を必要とするバックテスター/ストラテジスト。
アーキテクチャを一枚で
- 構造層:内蔵 ZigZag エンジンが価格からピボットを抽出。
- 分析層:Williams %R ダイバージェンスフィルターがレッグ分離付きで各ピボットペアを検証。
- 表現層:矢印、MTF ダッシュボード、S/R レベル、アラート、透明性カウンター。
1)内蔵 ZigZag エンジン(なぜプラットフォーム標準ではないのか)
- 線形時間 O(n):ロード済み履歴全体を単一パスで処理。新tickごとのコストは O(1)。高速tick・深履歴でも軽量。
- 古典の三参数、現代的なコア:Deviation / Depth / Backstep は馴染みの意味を保ちつつ、内部ピボット管理(有限 Backstep 抑制、ピボット前部挿入の安全化)はゼロから実装され、エッジケースに対して強化済み。
- iCustom 不要、バッファ欠落なし:エンジン内蔵のため、信号パイプラインはチャート上やターミナルフォルダ内の他インジケーターに一切依存しません。コンパイル済み EX4 は Market レンタルを含むあらゆる環境で動作。
- 決定的:同一パラメータなら、どのチャート・シンボル・ターミナルビルドでも同一のピボットを生成。
2)レッグ分離を伴う Williams %R ダイバージェンス
オシレーターがレベルを交差するだけでは、ここではシグナルになりません。指標は同じ区間で価格レッグ(ピボット間の動き)とオシレーターレッグを比較します:
- 弱気ダイバージェンス:価格がより高い高値をつける一方、Williams %R レッグがより低い高値をつける → 確認済み高値に売り矢印。
- 強気ダイバージェンス:価格がより低い安値をつける一方、Williams %R レッグがより高い安値をつける → 確認済み安値に買い矢印。
- レッグ分離:レッグ内部の揺らぎは比較から除外されるため、レッグ途中のノイズスパイクがダイバージェンスを偽造・隠蔽することはできません——また、同方向の連続する2つのピボットが比較されることは決してありません(安価な ZigZag/ダイバージェンス組み合わせにおける典型的な偽シグナル源)。
- ZigZag 構造ルールと WPR ダイバージェンス検査の両方を通過したピボットのみが矢印を生成。すべての矢印は完全な意思決定であり、生のヒントではありません。
3)シグナルモード:Confirm と Live(必読)
Confirm(既定、InpConfirmBars > 0)——履歴安定ストリーム。指標は矢印を描画する前に N 本(InpConfirmBars)待機します:候補ダイバージェンスは、原因ピボットがその後の価格行動で確認されるまで保留されます。コミット後の矢印は凍結:動かない・消えない・方向が変わらない*。InpConfirmBars = 0 で Live モードへ切替。
Live——可能な限り早い読み取り。矢印は形成中のバー内に表示されます。設計上、バー未完成の間は移動・消失し得ます。そのたびに内蔵透明性カウンターが報告します(第7節)。
*非リペイント保証マトリクス(Confirm モード):
- Deviation/Depth/Backstep = マニュアル → 無条件で保証。
- ATR アダプティブ Depth/Backstep + ピボットロック ON → 保証。
- アダプティブ + ロック OFF → 指標がロックを自動有効化し通知します。まさに保証を保つためです。
この条件付き保証は製品メタデータで誠実に明記され、起動時の入力検証により強制されます。
4)ピボットロック
確認済みピボットは内部レジストリで凍結。以降の再計算、ボラティリティスパイク、パラメータ編集もこれを動かせません。アダプティブモードの保証を可能にする機構であり、Live 運用時は常に推奨されます。
5)ATR アダプティブ ZigZag パラメータ
ボラティリティはセッションやシンボル間で変わります。手動再調整の代わりに、アダプティブモードは現在の ATR に応じて Deviation/Depth/Backstep を設定可能な範囲内でスケール(例:DepthMax はアダプティブ Depth の上限)。金・暗号資産・指数・FX を通じ、シンボルごとの手間なしで構造が有効であり続けます。
6)マルチタイムフレームダッシュボード
同一エンジンをバックグラウンドで最大 23 の追加タイムフレームで実行(既定 M5/M15/H1/H4/D1、InpMTFTimeframes で完全に設定可能、解析窓は InpMTFLookback)。チャート上のダッシュボードは各タイムフレームのライブ/確認済みシグナル、ダイバージェンス状態、ピボット状態を表示し、自分のタイムフレームが大きな絵と合致するときだけトレードできます——例:H1/H4 が強気文脈を示すときのみ M15 強気矢印を採用。
7)透明性ツール(EA 開発者向け)
- SA_RepaintBars(バッファ 5):Live リペイントイベントの連続カウンター——Confirm モードでは仕様により 0。
- SA_PostCommitBars(バッファ 6):確認後調整の連続カウンター——Confirm モード自体を監査します。
- これらは履歴系列ではなく生きた単調カウンターです:意味を持つのは現在値(直近 2–3 本)のみ。バー 0 を読むか、ミラーされた Global Variables SA_REP_ / SA_POST_ + シンボル + TF を参照;履歴をスキャンしないこと。
- SA_PivotState(バッファ 3)はさらに、このバーのピボットが確認済み(1)か形成中(0)かを通知します。
8)自動サポート/レジスタンス
指標はピボットを(チャートのタイムフレーム、または InpSRUseAllTF 経由で監視全 TF から)タッチ数ラベル付きのランク付け S/R レベルへクラスタ化し、水平線・レイ・陰影ゾーンとして描画します(InpSRMode 0/1/2)。レベルは即座の文脈を提供:ランク付けサポートで形成される強気ダイバージェンス矢印は、何もない場所の矢印より多くの情報を持ちます。
9)アラート
新規確認シグナルで任意のアラートがプラットフォームの alert/push/mail フック経由で発火。アラート文は設計により英語のみ。Market コンプライアンスと整合します。
10)完全設定リファレンス(グループ別)
- シグナルエンジン:InpConfirmBars(0 = Live、N = Confirm)、InpLiveMargin、InpLockPivots + InpLockAfterBars、InpShowDiag。
- ZigZag:InpDepth / InpBackstep / InpDeviation;InpDevMode / InpDepthMode / InpBackstepMode でパラメータごとに Manual または ATR アダプティブ、加えて InpATRPeriod、InpATRMult、InpDepthATRMult、InpDepthMin/InpDepthMax、InpBackstepATRMult、InpBackstepMin/InpBackstepMax。
- ダイバージェンス:InpWPRPeriod、InpUseDivergence、InpLookback——エンジン内部下限に対して検証済み;無効値は起動時に明確な英語メッセージで拒否。
- MTF ダッシュボード:InpMTFEnabled、InpMTFTimeframes(例 "M5,M15,H1,H4,D1"、最大 23)、InpMTFLookback、InpDashEnabled、InpDashCorner、InpDashX/Y、InpDashFontSize。
- S/R:InpSREnabled、InpSRLevelsCount、InpSRTolPts、InpSRMinTouches、InpSRSupportClr/InpSRResistClr、InpSRShowLabel、InpSRMode(0=水平線、1=レイ、2=ゾーン)、InpSRUseAllTF。
11)インストールと初回実行
- ターミナルの Market タブからインストール(レンタルと買い切りライセンスは MetaTrader 4 が管理)。
- 任意のチャート・タイムフレームに付加。
- Confirm モードの既定値で開始し、ダッシュボードを観察。その後 ZigZag 三参数の調整または ATR アダプティブモードの有効化を。
12)実践プレイブック
- デイトレ:H1 ダッシュボード合意でフィルターした M15 矢印。投影 S/R への押し目で Confirm エントリー。
- スイング:H4 ピボットを文脈、H1 矢印をトリガーに。
- EA:コミット済み矢印はバー 1 のシグナルバッファから。Live 活動はバー 0 の透明性カウンターで監視。
13)パフォーマンスと要件
- MetaTrader 4、全シンボル・全タイムフレーム。DLL・外部ファイル・追加インジケーター不要。
- 増分tick処理を備えた線形時間コア——高速tickフローでもチャートを固めません。
- クリーンな初期化解除:取外し/TF 変更時にチャートオブジェクトを削除。
14)本製品が「でない」もの
取引は行わず、資金管理もせず、利益保証もしません。ダイバージェンスは確率的・文脈的な読み取りです。Live モードのリペイントは仕様であり、常にカウンターが報告します。
15)変更履歴
- v1.03:Lookback 検証をエンジン内部下限と統一(無信号の隠れたエッジケースを除去)。ピボット前部挿入の強化。S/R 再構築の強化。
- v1.01:Market 初公開版。
16)FAQ
- リペイントしますか? 保証条件(第3節)下の Confirm モードではいいえ。Live モードでの変化は仕様であり、透明に計数されます。
- 全シンボルで使えますか? はい。ATR アダプティブモードはまさにシンボル間で構造を有効に保つために設計されています。
- EA から使えますか? はい——シグナルバッファ、GlobalVariable チャネル、リペイントカウンターにより EA 親和的です。
- なぜ多数のヒントでなく矢印ひとつ? すべての矢印は構造+ダイバージェンス検証を通過。意図的に、少なく高品質なシグナルです。
- プラットフォームの ZigZag をチャートに置く必要は? いいえ。エンジンは内蔵です。
17)iCustom 統合と EA 連携(バッファ、コード、Global Variables)
SingleArrow MTF は 7 つのバッファを公開。あらゆる EA が iCustom() + CopyBuffer() で読取可能——MetaTrader は初回の iCustom 呼び出しで指標を自動ロードし、手動での添付は不要です。
// BUFFER MAP (index -> content) // 0 SA_Buy BUY arrow price (0.0 = none) // 1 SA_Sell SELL arrow price (0.0 = none) // 2 SA_Signal +1 buy / -1 sell / 0 none // 3 SA_PivotState 1 = confirmed pivot, 0 = still forming // 4 SA_WPR Williams %R value // 5 SA_RepaintBars live-repaint counter (0 by design in Confirm) // 6 SA_PostCommitBars post-commit counter (audits Confirm mode) int h = iCustom(_Symbol, PERIOD_CURRENT, "SingleArrow_MTF_MT4", 34, // InpDepth 8, // InpBackstep 13, // InpDeviation 14, // InpWPRPeriod 5000, // InpLookback false, // InpUseDivergence 1); // InpConfirmBars (0 = Live, 1+ = Confirm) double sig[]; ArraySetAsSeries(sig, true); CopyBuffer(h, 2, 0, 3, sig); // buffer 2 = SA_Signal if(sig[1] == 1) { /* confirmed buy on last closed bar */ } if(sig[1] == -1) { /* confirmed sell on last closed bar */ } // Repaint counters via Global Variables (no CopyBuffer needed): double rep = GlobalVariableGet("SA_REP_" + _Symbol + "_" + IntegerToString((int)PERIOD_CURRENT)); double post = GlobalVariableGet("SA_POST_" + _Symbol + "_" + IntegerToString((int)PERIOD_CURRENT));
// FULL iCustom SIGNATURE (positional order - every declared input) iCustom(symbol, timeframe, "SingleArrow_MTF_MT4", 34, // InpDepth int default 34 8, // InpBackstep int default 8 13, // InpDeviation int default 13 14, // InpWPRPeriod int default 14 5000, // InpLookback int default 5000 false, // InpUseDivergence bool default false 1, // InpConfirmBars int default 1 (0 = Live) 12, // InpLiveMargin int default 12 true, // InpShowDiag bool default true 0, // InpDevMode enum 0=Manual 1=ATR-Adaptive 14, // InpATRPeriod int default 14 0.15, // InpATRMult double default 0.15 0, // InpDepthMode enum 0=Manual 1=ATR-Adaptive 1.0, // InpDepthATRMult double default 1.0 15, // InpDepthMin int default 15 80, // InpDepthMax int default 80 0, // InpBackstepMode enum 0=Manual 1=ATR-Adaptive 1.0, // InpBackstepATRMult double default 1.0 3, // InpBackstepMin int default 3 30, // InpBackstepMax int default 30 false, // InpLockPivots bool default false 3, // InpLockAfterBars int default 3 true, // InpMTFEnabled bool default true "M5,M15,H1,H4,D1", // InpMTFTimeframes string 1200, // InpMTFLookback int default 1200 true, // InpSREnabled bool default true 5, // InpSRLevelsCount int default 5 15, // InpSRTolPts int default 15 2, // InpSRMinTouches int default 2 clrDodgerBlue, // InpSRSupportClr clrOrangeRed, // InpSRResistClr true, // InpSRShowLabel bool default true 0, // InpSRMode int 0=HLine 1=Ray 2=Zone false, // InpSRUseAllTF bool default false true, // InpDashEnabled bool default true CORNER_LEFT_UPPER, // InpDashCorner 10, // InpDashX int default 10 30, // InpDashY int default 30 7); // InpDashFontSize int default 7
- ハンドルライフサイクル:OnInit で一度だけ生成し、OnDeinit で IndicatorRelease();tickごとの iCustom は不可。
- バー 1 でのコミット済みフィード:SA_Signal / SA_Buy / SA_Sell を最後の確定バーで読み、バックテストと整合した安定ストリームを;SA_PivotState は確認済みピボット(1)と形成中の先端(0)を分離。
- カウンターは生きた単調値:バッファ 5/6(および SA_REP_/SA_POST_ の Global Variables)は直近 2–3 本のみ意味あり——バー 0 を読み、履歴をスキャンしないこと。
- EA 専用の性能ヒント:InpDashEnabled=false と InpSREnabled=false を渡すとチャートオブジェクト描画をすべてスキップし、ハンドルは純計算のまま。
- 同一シンボル+TF の 2 インスタンスは単一の Global Variable チャネルを共有;影響するのは便宜上の読取のみで、シグナル計算には決して影響しません。
