見送った後に勢いが戻っても、このモデルでは再挑戦できません。MACDの同符号区間ごとに、最初の反転、次の足による確認、最初のレートでの判断をそれぞれ一度だけ行います。架空例は約定の仕組みを説明するもので、優位性の証明ではありません。
1. この戦略で検証する仮説
既存の方向性のある動きの中で、最初の勢いの回復を検証する価値があるか、という仮説です。MACDのゼロ交差型とは異なり、メイン値とシグナルとの差は既に同じ符号です。EMAのトレンド条件、ゼロ交差での発注、ナンピン、後からの再試行はありません。これは検証仕様であり、完成済みEAでも収益性を実証したシステムでもありません。
予定どおり連続するM5足の確定データだけを使います。教材用の銘柄は架空のEURUSDで、pip=0.0001; point=tick=0.00001です。分析用OHLCはすべてBidです。実際のSELL保護には対応するAsk履歴も必要です。欠損足、指標不足、未確認のエクスポージャーや状態があれば新規注文を止めます。欠けた確認足を次に取得できた足で代用してはいけません。
2. 検証前にMACDとATRを定義する
終値に対してM=EMA12(Close)−EMA26(Close); SIGNAL=SMA9(M); D=M−SIGNALとします。このMT4基準の定義ではシグナルは単純移動平均です。標準的なMT4のMACDヒストグラムが表示するのはMであり、DはMACDとシグナルの差、すなわちOsMAです。Dは3つ目の独立した確認指標ではありません。例の両EMAは最初の終値で初期化します。プラットフォームを比較する前に初期値と助走期間をそろえます。
Bid足でTR=max(High−Low,abs(High−PreviousClose),abs(Low−PreviousClose)); ATR14_SMA=mean(last 14 TR)と定義します。本記事はWilder平滑化ではなく単純平均ATRを明示的に選びます。ATR(14)という名称だけでは一致しません。CSVのATRはインデックス13から始まり、最初の前終値には最初の終値を使います。シフト0は未確定です。Sは自身の確定時にシフト1、Cの確定後はシフト2になります。変化するシフト番号ではなく足の時刻を保存します。
3. 同符号区間につき一度だけ
BUY区間はM>0 AND D>0、SELL区間はM<0 AND D<0が続く間です。条件が偽から真になった時に始まり、成立しなくなれば直ちに終わります。ゼロはどちらの厳密な区間にも含みません。使用後の新たな機会には新しい区間が必要です。取引時間帯に入っただけでは状態をリセットしません。
時間外の足も含め、実際の区間開始から追跡します。最初の構造的な反転は直ちに使用済みとし、実体、ATR、時刻、確認、レート、リスク条件が不成立でも戻しません。再起動後は保有状況を照合して状態を再現しますが、過去の注文は送りません。使用済みか確定できなければ未使用と仮定せず、新規エントリーを停止します。
4. 確定した4つの値でSを選ぶ
U=abs(D)とします。最初のセットアップSにはU[s−3]>U[s−2]>U[s−1]>0 AND U[s]>U[s−1]が必要で、4本すべてが現在の同符号区間内になければなりません。連続して小さくなる3つの値、つまり2回の低下の後に上昇する形です。等しい値は不合格です。チャート上の丸めた表示ではなく、元の精度で比較します。
BUY例では、07:45 / 07:50 / 07:55 / 08:00 UTCの各終値時点のDはpip単位で0.0688148631 / 0.0638322058 / 0.0592009819 / 0.0903521327です。メイン値Mは正のままです。最後の足がSとなり、候補を選んで区間を使用済みにしますが、まだ注文は送りません。SELL例では符号を反転させ、絶対値の同じパターンを使います。
| UTC時刻 | メイン | シグナル | 差 |
|---|---|---|---|
| 07:45 | 3.3199691418 | 3.2511542787 | 0.0688148631 |
| 07:50 | 3.3332038698 | 3.2693716640 | 0.0638322058 |
| 07:55 | 3.3454737693 | 3.2862727874 | 0.0592009819 |
| 08:00 | 3.3967339610 | 3.3063818283 | 0.0903521327 |
5. Sの品質と固定ストップ
SとCの終値時刻はともに[07:00,10:00) UTC内でなければなりません。これはブローカー表示時刻ではなく足の終了時刻です。対象日の時差を確認します。BUYのSは始値より上、SELLのSは始値より下で確定し、2<=ATR_S/pip<=8; TR(S)<=1.25×ATR_Sを満たす必要があります。S時点のATR_Sを固定します。この時間帯は検証上の選択であり、流動性や重要発表の不在を保証しません。
BUYの保護はS_bid=floor_tick(BidLow(S)−0.2 pip)、SELLはS_ask=ceil_tick(AskHigh(S)+0.2 pip)に固定します。関数は取引可能なtickへ切り下げ、切り上げを行います。実際のSELLには対応するAsk高値が必要です。現在のスプレッドを過去のBid高値に足しても再現できません。Askを一律0.8pip上乗せするのは、この架空データだけの仮定です。
6. 確認できるのは予定された次の1本だけ
CはSの5分後に終了する足です。まずBUY: BidLow(C)<=S_bid; SELL: AskHigh(C)>=S_askなら無効とします。Cが後でエントリーしきい値を超えて確定しても、この無効判定が優先です。次に同じ同符号区間、時間帯、TR(C)<=1.5×ATR_Sを確認します。価格にはBUY: BidClose(C)>BidHigh(S)+0.1 pip; SELL: BidClose(C)<BidLow(S)−0.1 pipが必要です。等値、Cの欠損、不合格はすべて機会を消費します。
有効なCが確定したらBUY: T_bid=floor_tick(BidClose(C)+2×ATR_S); SELL: T_ask=ceil_tick(AskClose(C)−2×ATR_S)を固定します。保存したSのATRと、決済側の正しいレートを使います。固定R倍の目標ではありません。その後MACD、ATR、スプレッド、価格が変わっても両水準を動かしません。Sの高安に待機注文は置かず、2本目の確認足も認めません。
| 方向 | ストップ | 目標 |
|---|---|---|
| BUY | 1.10061 | 1.10196 |
| SELL | 1.10147 | 1.10012 |
7. 最初のレートと最初の注文要求
Cの予定終了後、Cを処理する最初の銘柄レート観測を使います。その観測時にCの確定データを取得できなければ、候補を使用済みにします。価格が正、AskがBid以上、spread<=1.0 pip; abs(Bid_ref−BidClose(C))<=0.5 pip、当該銘柄レートのローカル受信からの経過時間が<=250 msであることを求めます。この経過時間は受信後の時間であり、MT4のサーバー時刻でネットワーク遅延を測れるという意味ではありません。
最初の成行要求はC+1 secondまで、境界を含め最大1回です。期限までにレートがなければ失効します。最初のレートが不合格でも後の好条件に置き換えません。送信直前に現在値、経過時間、コスト、エクスポージャー、証拠金、最小ロット、権限、ストップ制約を再確認します。S、T、最初に計算した数量は固定し、現在値でのリスクも予算内である必要があります。固定SL/TPを注文と同時送信できない場合は見送ります。ストップを広げたり、待ちながら数量を変更して不合格を解消したりしません。
8. BUY:確定足から実際の約定まで
Sは08:00、Cは08:05 UTCに終了します。ATR_S=4.8 pips; S_bid=1.10061; T_bid=1.10196です。最初のレートは08:05:00.100; Bid/Ask=1.10100/1.10108に到着します。スプレッドは0.8pipで、基準BidはC終値と一致します。不利なエントリー余裕を加え、チャートのBid終値ではなくF_plan=Ask_ref+0.2 pip=1.10110で計画します。
後述のコスト控除後計算はL=5.8 pips; W=7.7 pips; W/L=1.327586; lots=0.43となります。保護付き要求は08:05:00.300に送信し、受信後200msです。架空サーバーでの約定は08:05:00.450に1.10109、応答は.500です。これらは別の事象です。確認した約定値から実際のエクスポージャーを再計算しますが、送信前に決めた数量を後付けで書き換えません。
9. SELL:Ask水準とBidエントリー
独立したSELL例はBid足と指標の符号を反転させます。最初のBid/Askは同じ1.10100/1.10108で、ATR_S=4.8 pips; S_ask=1.10147; T_ask=1.10012です。売りはBidで入り、不利な計画値はF_plan=Bid_ref−0.2 pip=1.10098です。ストップと目標はAskでの決済水準なので、Bidチャートだけでは判定できません。
同じ仮定からL=5.8 pips; W=7.7 pips; lots=0.43となり、実際の架空エントリーは1.10099です。後のAsk目標1.10012は、この固定スプレッド例ではBid 1.10004に対応します。数値の対称性は仕組みを確認するため意図的に作ったものです。実際の買いと売りの成績が同じことや、実スプレッドが一定であることの根拠にはなりません。
10. 後の価格で修復できない3つの不成立
確認なしの例では、CのBid終値は1.10086=1.10085+0.00001です。しきい値と等しいため、厳密なBUY突破条件は不成立です。08:10のより高い終値では遅すぎます。別の独立例では最初のAskが1.10113、Bidが1.10100でスプレッドは1.3pipです。.200の0.8pipの好条件でも、最初の不合格レートを置き換えません。
広すぎるSの例はTR(S)=16 pips; ATR_S=5.7857142857 pipsです。ATR自体は2~8内ですが、Sの値幅がATRの1.25倍を超えるため、Sの時点で使用済みになります。これらの例に新規要求、取引数量、実現損益はありません。CSVの診断計算は反実仮想であり、取引ではありません。同符号区間が終わり、新しい区間内に完全な4本パターンができて初めて、別の反転が対象になります。
11. コストと送信前の数量決定
USD口座、標準1ロットEUR 100,000、pip_value=$10/lot; equity=$10,000; new_risk=0.25%=$25; aggregate_risk<=0.50%=$50を仮定します。不利なエントリー0.2pip、残りの決済スリッページ0.2pip、往復手数料0.7pipを見込みます。手数料は数量比例で最低料金も他の費用もありません。エントリー余裕は既にF_planに含み、残る控除はc=0.7+0.2=0.9 pipです。スプレッドを二重計上しません。
BUYはL=(F_plan−S_bid)/pip+c; W=(T_bid−F_plan)/pip−c、SELLはL=(S_ask−F_plan)/pip+c; W=(F_plan−T_ask)/pip−cです。LとWは正で、W/L>=1.20が必要です。他のエクスポージャーがなければlots=floor_step(min(25,50−existing_risk)/(L×10),0.01)=0.43となり、予定損失は24.94USD、コスト控除後目標は33.11USDです。合計リスク不明なら入らず、自分のポジションは同時に1つだけで、追加や両建ては行いません。余裕は計画用であり、約定保証でも実際の手数料でもありません。
| 方向 | 損失・pip | 利益・pip | 純W/L | ロット | 予定リスク・USD | 純目標・USD |
|---|---|---|---|---|---|---|
| BUY | 5.8 | 7.7 | 1.327586 | 0.43 | 24.94 | 33.11 |
| SELL | 5.8 | 7.7 | 1.327586 | 0.43 | 24.94 | 33.11 |
12. 固定価格決済と時間制限
BUYはBid<=S_bid OR Bid>=T_bid、SELLはAsk>=S_ask OR Ask<=T_askで全量決済します。時間決済はmin(C+20 minutes,10:00 UTC)以降の最初の有効レートを使い、約定時刻ではなくCから数えます。追加の決済要求前に、ブローカーのストップ・目標で既に決済されていないか照合します。トレーリング、一部決済、後のATR目標、MACD決済はありません。
目標到達例では実際の約定から8.7−0.7=8.0 net pips; $34.40です。使わなかったスリッページ余裕は実費として差し引きません。ギャップ例はBid 1.10120から1.10030へ飛び、利用可能な1.10030で決済して−8.6 net pips; −$36.98となり、25USDの計画を超えます。時間決済例の最初の期限後レートは08:25:00.200で、.350の約定は−1.1 net pips; −$4.73です。ギャップや遅延で予定ストップ損失を超えることがあります。
| 結果 | 純pip | 純USD |
|---|---|---|
| BUY / 目標 | 8.0 | 34.40 |
| SELL / 目標 | 8.0 | 34.40 |
| BUY / ギャップ | -8.6 | -36.98 |
| UTC時刻 / 決済 | -1.1 | -4.73 |
| 要求は1回 / 128 | 8.0 | 34.40 |
13. 注文結果不明と保護不備
タイムアウトでもポジションがないとは限りません。例では08:05:00.300に1回送信し、サーバーで.450に約定、08:05:01にエラー128、08:05:02に保護付きポジションを確認します。新規注文を止め、識別子、銘柄、方向、数量で保有、待機注文、履歴を照合します。コメントは冪等性の保証ではありません。新規要求を無条件で再送しません。
自分の約定を確認して保護が欠落または不正と判明した場合、事前定義した対応は有効レートと権限がそろった時の全量成行決済要求1回です。拒否や結果不明なら通知し照合します。決済を無条件で繰り返したり、他者のポジションを操作したりしません。新規停止でも既存管理は続け、そのレート、権限、照合条件を適用します。再起動時は所有関係と使用済み状態の両方を復元します。
14. 仮説が機能しない場面
Dの小さな上昇は弱い漂流相場でも起こり、価格確認が動きの終盤になることもあります。時間制限までにATR目標へ届かないかもしれません。広いスプレッド、変動手数料、少ないレート、ギャップ、Ask履歴不足により、きれいなBidチャートでも取引できないことがあります。見送りは定義済みの結果であり、次の足を見てしきい値を緩める理由にはなりません。
基本仕様に自動ニュース停止はありません。UTC時間帯はニュースフィルターではありません。ニュース対応版はテスト前に停止・スプレッド回復・新しいシグナルの全ルールを定義し、損失だけでなく逃した取引と費用も比較します。ATR平均、時間帯、しきい値の変更も事前定義する別仕様とし、黙って変更しません。
15. 成績の前に仕組みを再現する
3つのCSVには8つの独立した架空ケースの助走データ、注文事象、費用台帳を収録し、1,041本と2,386事象があります。適格な5ケースは代替シナリオであり、同時保有でも勝率標本でもありません。約定後は宣言した1秒間隔の教材レートと明示した終端観測が、利用可能な全レートを定義します。分析上の終値マーカーはその瞬間の約定可能レートを意味しません。金利や追加費用は含めません。
EMA、SMAシグナル、D、明示したATRを再計算します。使用済み状態を再現し、確認前の無効判定、最初のレート、費用、時系列順の決済を適用します。等値、ゼロ、符号変化、時間外の最初の反転、C欠損、古いレート、期限切れ、最小数量不足、再起動、タイムアウト、ギャップも試します。成績検証には未使用期間、実Bid/Ask約定データ、ブローカー制約が必要です。架空ケースが確認するのは仕組みだけです。
16. 判断手順のチェックリスト
連続した確定データ、実際の同符号区間、使用済み状態を確立します。最初の4値反転を選び、Sを検証してATRと保護を固定します。予定されたCだけを無効判定優先で検証し、目標を固定します。最初のレートを1回処理して純利益・損失比と固定数量を計算し、現在の約定条件を再確認して期限内に最大1回保護付き要求を送ります。
送信後は結果を照合し、確認済みポジションを固定水準と時間制限で管理します。拒否後は本当に新しい区間とパターンを待ちます。見送った候補、費用、未確定の結果も記録します。この有限手順は再現性を与えますが、正の期待値、損失上限の保証、実運用向けの設定を証明しません。
よくある質問
MACDのゼロ交差戦略と同じですか?
いいえ。メイン値とシグナルとの差は既に厳密に同符号である必要があります。その区間内の最初の収縮と反転を選び、次の予定された1本で価格確認します。
どのヒストグラムを使いますか?
MACDからSMAシグナルを引いたD、すなわちOsMAの絶対値です。標準MT4のMACDヒストグラムはメイン値Mを示すため、混同すると別の戦略になります。
スプレッドが狭くなるまで待てますか?
いいえ。最初に観測したレートが不合格なら候補は使用済みです。同一区間の好転レート、後の突破、別の反転では復活しません。
期間14ならどのATRでも使えますか?
計算が一致する場合だけです。本モデルはBidの14個のTrue Rangeの単純平均です。Wilder、初期値、価格データが違えば別の系列になります。
0.25%予算は実際の全損失の上限ですか?
いいえ。宣言した余裕を含む初期計画の数量決定用です。ギャップ、約定、遅延、保護不備で超過し得ます。架空ギャップ例は25USD予算に対して36.98USDを失います。
CSVの結果は収益性を証明しますか?
いいえ。シグナル、約定、会計を確認する独立した架空ケースです。市場観測、バックテスト、ポートフォリオ、成績推計ではありません。
出典と研究上の注記
公式資料は指標と注文パラメータを説明しています。パターン、しきい値、時間帯、リスク制限、価格は本記事の検証上の仮定であり、資料が収益性を裏づけるものではありません。
- MetaTrader 4: MACD main and SMA signal definition
- MetaTrader 4: true range and ATR
- MQL4: protected order request parameters
教育用の検証仮説です。価格と約定経路は架空であり、実証済み成績や損失上限の保証はありません。