<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>10年間合格EAロジック一覧 on AIでEA開発入門</title>
    <link>https://ea-ai-blog.pages.dev/ea-logics/</link>
    <description>Recent content in 10年間合格EAロジック一覧 on AIでEA開発入門</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Mon, 10 Aug 2026 22:00:02 +0900</lastBuildDate>
    <atom:link href="https://ea-ai-blog.pages.dev/ea-logics/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>【検証ログ】10年を生き抜いたGBPUSD5分足EA。PF2.12のPythonコードを無料で公開して正解か？</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_gbpusd_5m_wildcard_w4_20260801_211938_bc5d36_blog/</link>
      <pubDate>Mon, 10 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_gbpusd_5m_wildcard_w4_20260801_211938_bc5d36_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;GBPUSD（ポンドドル）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
FXの自動売買開発は困難な道のりです。多くの人が最適化の罠に落ちます。そして、運用開始後に資金を溶かす光景を何度も見ました。今回は、10年のバックテストを破綻せずに生き抜いたロジックを紹介します。ただし、成績は決して爆発的ではありません。むしろ伸び悩んだ部分も多い、誠実な結果となっています。
&lt;p&gt;私はかつて、ブレイクアウト手法の「だまし」に絶望しました。指標発表時の乱高下で、積み上げた利益を一度に失う経験をしました。そこから、「相場の均衡状態」と「ボラティリティの圧縮」に注目しました。極限までエントリーを絞り込み、勝率を高める設計を模索した日々がこのコードに凝縮されています。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    10年も生き残れるロジックなんて、本当に存在するのだろうか。そう疑う気持ちはよく分かります。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;本ロジックのコードを入手すれば、MT5のEA開発に費やす数百時間を節約できます。ゼロから構築する手間は不要です。自分だけのオリジナルEAを作るための、強固な土台として活用してください。&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_EQUITY&amp;gt;
&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.12&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;60.0%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;20 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$180.75&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.95%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.89&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.85&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;本ロジックの最大の弱点は、取引回数の少なさです。10年で20回という数値は、実運用では機会損失が多すぎます。PFは高いものの、絶対的な収益額は不十分な結果となりました。&lt;/p&gt;
&lt;p&gt;これは、カーブフィッティングを徹底的に避けた結果です。条件を厳しくしすぎたため、エントリーチャンスを逃しています。ボラティリティの圧縮条件（VR &amp;lt; 0.9）が、現代の激しい相場には厳しすぎる可能性があります。&lt;/p&gt;
&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、上位足のトレンド方向にのみ、短期的な逆張りでエントリーする設計です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;対象足 / 上位足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足 / 1時間足&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;トレンド判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足 SuperTrend (14, 3.5)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;均衡判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;一目均衡表・基準線 (26) からの乖離&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Volatility Ratio (ATR / SMA100) &amp;lt; 0.9&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;オシレーター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI (14) の閾値突破および反転&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間フィルター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ロンドン・NY重複時間 (16:00 - 23:00)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;確定条件&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;直近足の陽線（買い）または陰線（売り）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  単なるインジケーターの組み合わせではなく、「時間帯」「トレンド」「ボラティリティ」「価格乖離」の4つのフィルターを重ねることで、ドローダウンを極限まで抑えています。
&lt;/div&gt;

&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このコードは、いわば「未完成の原石」です。ここから収益性を高めるには、ボラティリティフィルターの最適化が必要です。VRの閾値を0.9から1.1程度まで緩和すれば、取引回数は確実に増えます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【長期検証クリア】10年破綻なし！GBPUSD 5分足でPF1.21を叩き出したPython/MT5無料EAロジックを公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_gbpusd_5m_breakout_w3_20260801_215248_688325_blog/</link>
      <pubDate>Sun, 09 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_gbpusd_5m_breakout_w3_20260801_215248_688325_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;GBPUSD（ポンドドル）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
自動売買システムの開発は困難な道のりです。多くのロジックが短期的な利益に惑わされ、数ヶ月で破綻します。今回は、10年という過酷な全期間バックテストを生き抜いたロジックを公開します。成績は控えめですが、生存能力に特化した設計です。
&lt;p&gt;もともと私はブレイクアウト手法の「だまし」に悩み続けてきました。多くのインジケーターを組み合わせても、レンジ相場で資金を削られる経験を繰り返しました。そこで、単なる突破ではなく「エネルギーの凝縮（スクイーズ）」と「トレンドの完全一致」に注目しました。試行錯誤の結果、生存率を極限まで高めたこのロジックに到達しました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    完璧を求めすぎると、結局カーブフィッティング（過剰最適化）に陥るのがEA開発の罠ですね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;このコードをベースにすれば、MT5のEAをゼロから開発する数百時間を節約できます。ロジックの組み方やフィルターの掛け方は、実戦的な土台として最適です。自分だけのオリジナルEAを作るための研究素材として活用してください。&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_EQUITY&amp;gt;
&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.21&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;53.0%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;202 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$595.24&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;4.24%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.40&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.57&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックの最大の弱点は、利益の伸び悩みです。PF1.21という数値は、実運用では非常に心許ない水準といえます。これは、エントリー条件を厳選しすぎたためです。&lt;/p&gt;
&lt;p&gt;低期待値のトレードを排除した結果、取引回数が激減しました。その結果、大きなトレンドを逃す場面が多々あります。また、固定の利確・損切り幅に依存しているため、相場のボラティリティ変動に柔軟に対応できていません。&lt;/p&gt;
&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、上位足の環境認識と執行足のエネルギー凝縮を組み合わせた戦略です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;上位足 (1h) トレンド&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;EMA200 &amp;lt; EMA50 &amp;lt; 価格 かつ ADX &amp;gt; 30&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;強力なトレンド方向の限定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エネルギー凝縮&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BBがKCの内部に位置する状態が10本中6本以上&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;爆発前の溜め（スクイーズ）を検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ブレイクアウト&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ドンチアン25本高値/安値を更新&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;意識される価格帯の突破&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;インパルス判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;足の実体 &amp;gt; 直近10本の平均実体&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;勢いのある本物の動きを抽出&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;執行足 (5m) 指標&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX &amp;gt; 25 かつ 上昇傾向&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンド発生の確定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間帯制限&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15:00 〜 22:00 (サーバー時間)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;流動性の高い欧州・NY時間に限定&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  ポイントは「H1で方向を決め、M5で溜めを待ち、勢いが出た瞬間に乗る」という多層的なフィルター構造にあります。
&lt;/div&gt;

&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このコードはあくまで「破綻しない土台」です。ここから収益性を高めるには、以下の改善が考えられます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【研究素材提供】USDJPY 5分足で10年を生き抜いたMT5向け無料EAロジックをPythonコードと共に公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_trend_w1_20260801_224035_25441b_blog/</link>
      <pubDate>Sat, 08 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_trend_w1_20260801_224035_25441b_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
自動売買の開発は、孤独で険しい道のりです。多くの人が「聖杯」を求めて最適化に溺れ、実運用で破綻します。今回は、10年のバックテストを破綻せず生き抜いたロジックを公開します。成績は決して派手ではありません。しかし、過酷な相場を生き残ったという事実に価値があります。
&lt;p&gt;もともと私は、ブレイクアウト手法の「だまし」に悩み続けていました。多くのインジケーターを組み合わせても、結局は相場のノイズに飲み込まれます。そこで、時間軸を分けた環境認識と、ボラティリティの厳選に注力しました。試行錯誤の末に辿り着いたのが、この保守的な設計です。&lt;/p&gt;
&lt;p&gt;このコードを入手すれば、MT5のEA開発に費やす数百時間を節約できます。ゼロからロジックを組む必要はありません。本コードを土台にして、あなただけの改良を加えるのが最短ルートです。研究素材として、自由にご活用ください。&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_EQUITY&amp;gt;
&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.21&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;50.6%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;170 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥43217.48&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;3.32%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.30&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.60&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックの最大の弱点は、収益性の低さです。10年で170回という取引数は、あまりに少なすぎます。機会損失が非常に大きく、資金効率は最悪と言えます。&lt;/p&gt;
&lt;p&gt;PF 1.21という数字も、プロの視点では物足りません。これは、カーブフィッティングを徹底的に排除した結果です。安全性を重視しすぎたため、利益を伸ばす局面で早すぎる決済が行われています。また、レンジ相場での待機時間が長く、退屈な運用になることは間違いありません。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    稼げないコードだと思ったかもしれません。でも、10年生き残るコードを書くのは、稼ぐコードを書くよりずっと難しいのです。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、上位足のトレンド方向へ、短期的なボラティリティ拡大を狙ってエントリーします。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;執行時間足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足（EMA50, EMA200, ADX）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;取引時間制限&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;UTC 15:00 〜 23:00&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATR &amp;gt; (ATR_SMA200 * 1.1)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;トレンド条件&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格 &amp;gt; EMA50 &amp;gt; EMA200 且つ ADX &amp;gt; 35&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリートリガー&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ドンチャンチャネル(40)突破 且つ MACDヒストグラム加速&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;決済ルール&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TP: 80pips / SL: 30pips / トレーリングストップあり&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このロジックを「化けさせる」には、エントリーフィルターの緩和が必要です。現在はADXの閾値を35と高く設定しています。ここを25程度に下げ、代わりに価格帯のサポート・レジスタンスを判定に加えるべきです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5研究素材】10年の長期バックテストを生存したUSDJPY 5分足ロジックを無料公開。Pythonコードと生存戦略を解析する</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_session_w6_20260802_070909_7232e2_blog/</link>
      <pubDate>Fri, 07 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_session_w6_20260802_070909_7232e2_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
自動売買の開発は困難な道です。多くの人が最適化の罠に陥り、実運用で破綻します。今回は10年のバックテストを破綻せず生き抜いたロジックを公開します。成績は決して派手ではありません。しかし、過酷な相場を耐え抜いた強靭な土台を持っています。
&lt;p&gt;私はかつてブレイクアウト手法に心血を注ぎました。しかし、ロンドン時間直後の「だまし」に何度も資金を削られました。単純な高値更新では勝てないこと。そして、ボラティリティの定量化が不可欠であることに気づいたのです。試行錯誤の末に辿り着いたのが、この厳格なフィルタリングロジックです。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    派手な利益を追うのではなく、まずは「生き残ること」に特化した設計にしました。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;このコードをベースにすれば、MT5のEA開発にかかる数百時間を節約できます。ゼロから構築する苦労は不要です。自分だけのオリジナルEAを作るための、最高の研究素材として活用してください。&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_EQUITY&amp;gt;
&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.51&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;51.7%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;145 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥78780.87&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.71%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.91&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.73&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックは生存能力に特化しています。その代償として、取引回数が極端に少ない点が弱点です。10年で145回という数字は、機会損失が非常に大きいことを意味します。&lt;/p&gt;
&lt;p&gt;PF 1.51という数字も、プロの視点では平凡な成績です。ADXの閾値を30まで引き上げたため、多くのチャンスを捨てました。また、固定ピップスの利確設定は、相場のボラティリティ変化に柔軟に対応できていません。結果として、大きなトレンドを最後まで取り切れない局面が散見されます。&lt;/p&gt;
&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、上位足の環境認識と下位足のボラティリティ急増を組み合わせた設計です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識 (1h)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;EMA(50) &amp;gt; EMA(200) かつ 価格 &amp;gt; EMA(50)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;上位足のパーフェクトオーダー判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;トレンド強度 (1h)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX(14) &amp;gt; 30&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;明確なトレンド発生の確認&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;レンジ算出 (5m)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;09:00 〜 15:00 JST の高値・安値&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;アジアレンジの定義&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;執行時間 (5m)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16:00 〜 19:00 JST&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ロンドン市場オープン後の捕捉&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATR(14) &amp;gt; ATR_SMA(80) * 1.8&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;異常な価格変動（スパイク）の検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;レンジ突破 + ATRバッファ(10%)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;だましを排除したブレイクアウト&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  &lt;strong&gt;クオンツ視点のポイント&lt;/strong&gt;：単なる価格のブレイクではなく、「トレンド強度」と「ボラティリティの急増」が同時に起きた瞬間のみを抽出しています。これが低ドローダウンの正体です。
&lt;/div&gt;

&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;この無料コードをベースに、以下の改造を試みる価値があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【長期検証クリア】USDJPY（ドル円）5分足で10年生き残るMT5無料EA：Pythonコードで解き明かす低DDの正体</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_reversion_w2_20260802_072041_5d1df4_blog/</link>
      <pubDate>Thu, 06 Aug 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_reversion_w2_20260802_072041_5d1df4_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
自動売買の開発は困難な道です。多くの人がカーブフィッティングの罠に落ちます。短期間の成績に惑わされ、実運用で破綻する例を数多く見てきました。今回は、10年という長期のバックテストを破綻せずに生き抜いたロジックをご紹介します。ただし、成績は決して派手ではありません。むしろ、効率面では課題が残る結果となりました。
&lt;p&gt;私は以前、ブレイクアウト手法の「ダマシ」に深く悩まされました。トレンドが出ると信じてエントリーし、そのまま反転して損切りになる。この経験から、相場の「環境」を厳格に分ける手法を模索しました。レンジ相場での逆張りこそが、低リスクを実現する鍵になると確信したからです。試行錯誤を繰り返し、ようやく辿り着いたのがこの適応型平均回帰ロジックです。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    完璧を求めすぎると、取引回数が極端に減る。それがこのロジックの宿命でした。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;このコードをベースにすれば、MT5のEA開発に費やす数百時間を節約できます。ゼロから構築するのは時間がかかります。本ロジックを土台にして、あなただけの最適解を探ってください。&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_EQUITY&amp;gt;
&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.11&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;45.8%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;24 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥19235.42&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.86%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.24&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.15&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;この成績を見て、まず気づくのは取引数の少なさです。10年で24回という数字は、運用効率として極めて低いです。PFは2.11と高い水準にあります。しかし、機会損失が非常に大きいといえます。&lt;/p&gt;
&lt;p&gt;原因は、フィルターを厳しくしすぎたことです。ADXによるレンジ判定と、RSIの極端な閾値設定が、エントリーチャンスを削りすぎました。結果として「負けない」仕組みにはなりましたが、「稼ぐ」仕組みとしては不十分です。低ドローダウンを実現した代償として、資金効率を犠牲にした形になります。&lt;/p&gt;
&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、上位足の方向性を確認した上で、執行足の過熱感を狙う戦略です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;要素&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;上位足トレンド&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足 EMA200&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;環境認識（買い・売りの方向決定）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;レンジ判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX(14) &amp;lt; 20&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンド相場での逆張りを回避&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATR(14) &amp;gt; ATR_MA(100) * 0.6&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;死に相場でのエントリーを制限&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;過熱感判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI(14) $\le$ 25 または $\ge$ 75&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;統計的な売られすぎ・買われすぎを検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリートリガー&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ボリンジャーバンド $\sigma 2.5$ の回帰&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;バンド外から内側への回帰を確認&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  ポイントは「1時間足のトレンド方向にのみ、5分足の逆張りを行う」という点です。これにより、大きな流れに逆らうリスクを最小限に抑えています。
&lt;/div&gt;

&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;この無料コードは、いわば「未完成の原石」です。ここから利益を伸ばすには、いくつかの改善策が考えられます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【研究素材提供】USDJPY（ドル円）5分足で10年生き残ったMT5無料EAのPythonコードを公開。長期バックテストを突破した堅実ロジックの正体とは</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_session_w6_20260802_094639_8a0633_blog/</link>
      <pubDate>Wed, 05 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_session_w6_20260802_094639_8a0633_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
自動売買の開発は孤独な戦いです。多くの人が期待して作成したロジックが、わずか数ヶ月の相場変動で破綻する光景を何度も見てきました。今回は、10年という全期間のバックテストを破綻せずに生き抜いたロジックを共有します。ただし、成績は決して爆発的ではありません。むしろ、慎重すぎて利益が伸び悩んだという側面を持つ誠実なコードです。
&lt;p&gt;もともと私は、ロンドン時間からニューヨーク時間へ移行する際の「セッションブレイクアウト」に注目していました。しかし、多くの手法が抱える「だまし」に何度も翻弄されました。強いトレンドだと思ってエントリーした直後に反転する。この絶望感を解消したかったのが開発の原点です。そこで、トレンドの強度とキャンドルの質、そして上位足の方向性を極限まで厳格に組み合わせる手法を模索し続けました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    完璧を求めすぎて、エントリー回数が激減したときは正直焦りましたね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;このコードをベースにすれば、MT5のEAをゼロから開発する数百時間を節約できます。検証済みのフィルタリング構造は、あなただけのオリジナルEAを作るための最高の土台になるはずです。&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_EQUITY&amp;gt;
&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.33&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;54.1%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;196 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥58130.91&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;3.85%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.51&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.61&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックの最大の弱点は、取引回数の少なさです。10年で196回という数字は、年間平均に直すと極めて少ない水準にあります。これは、ADXや実体比率などのフィルターを厳しくしすぎた結果です。&lt;/p&gt;
&lt;p&gt;また、純利益も運用額に対して控えめな数値に留まっています。リスクを徹底的に排除したため、大きなトレンドを掴みきれず、利益を逃した局面が散見されます。効率的に資産を増やすという視点では、まだ改善の余地がある未完成の原石といえます。&lt;/p&gt;
&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、時間帯による流動性の変化と、マルチタイムフレーム分析を組み合わせています。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定内容・条件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;対象通貨・時間足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;USDJPY / 5分足&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識 (上位足)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足のEMA200より価格が上か下かで方向性を固定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー時間&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16:00 ～ 18:00 (サーバー時間)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;レンジ基準&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;14:00 ～ 16:00 の高値・安値をブレイクアウト&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;トレンド強度&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX(14)が30以上であること&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATR(14)が過去20本の平均の1.3倍以上であること&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;キャンドル質&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;実体比率が60%以上の強い足であること&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;モメンタム&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI(14)が60以上(買い) または 40以下(売り)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;決済ルール&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TP: 60pips / SL: 20pips / トレーリング開始: 20pips&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  単なる数値の組み合わせではなく、「方向性→強度→質→タイミング」という論理的なステップを踏んでいる点が、10年のサバイバルを可能にした要因です。
&lt;/div&gt;

&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;この無料コードをベースに改造するなら、まずは「エントリー条件の緩和」を検討してください。例えば、ADXの閾値を25に下げるだけで、取引回数と利益が増える可能性があります。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5無料EA】USDJPY 5分足で10年生き残るPythonロジックを公開。PF1.21の安定性と限界を検証</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_range_strict_w8_20260802_135053_c09a3c_blog/</link>
      <pubDate>Tue, 04 Aug 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_range_strict_w8_20260802_135053_c09a3c_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
FXの自動売買開発は困難です。多くのロジックが数ヶ月で破綻します。最適化の罠に陥り、バックテストだけが右肩上がりになるケースも少なくありません。今回は、10年という長期検証を破綻せず生き抜いたロジックを公開します。成績は控えめですが、極めて高い生存能力を持つコードです。
&lt;p&gt;もともと私は、ブレイクアウト手法のダマシに悩み続けていました。トレンドを追いかけるほど、資金を削られる経験をしました。そこで「あえてトレンドが出ない場所」だけを狙う戦略を考えました。ボラティリティが低い時間帯にのみ、心地よく反発を拾う。そんな地味なアプローチを追求し、このロジックに辿り着きました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    派手な利益は出ませんが、夜も安心して眠れる設計を目指しました。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;このコードをベースにすれば、MT5のEA開発にかかる数百時間を節約できます。ロジックの組み方やMTF（マルチタイムフレーム）分析の実装方法は、そのまま実戦で使えます。自分だけのオリジナルEAを作るための、最高の土台として活用してください。&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_EQUITY&amp;gt;
&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.21&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;46.2%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;13 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥2625.11&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.89%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.29&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.65&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックの最大の弱点は、取引回数の少なさです。10年で13回という数字は、実運用では機会損失が大きすぎます。PF1.21という数値も、攻めの姿勢が足りない証拠と言えるでしょう。&lt;/p&gt;
&lt;p&gt;原因は、フィルターを厳しくしすぎたことにあります。ADXやCHOP、さらには上位足の状況まで重ね合わせたため、エントリー条件が極めて限定的になりました。カーブフィッティングを避けた結果ですが、収益性は犠牲になっています。&lt;/p&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  「生き残る能力」は証明されましたが、「稼ぐ能力」はまだ不十分な未完成の原石です。
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、低ボラティリティ環境での平均回帰（ミーンリバージョン）を狙います。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;指標&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX (14)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;23未満&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンドの不在を確認&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;CHOP (14)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;60超え&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;相場の停滞（レンジ）を検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ボリンジャーバンド&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;20期間 / 2σ&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格の境界線の判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ドンチアンチャネル&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;20期間&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;直近高値・安値の把握&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI (7)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;30以下 $\rightarrow$ 上抜け / 70以上 $\rightarrow$ 下抜け&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;短期的な反転タイミングの検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;MTFフィルター&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分/1時間ADX &amp;lt; 28、4時間SMA傾斜 $\approx$ 0&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;上位足のトレンド不在を同期&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;時間フィルター&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;東京市場 (0時〜6時)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;低ボラティリティ時間帯の限定&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このコードをベースに改造するなら、まずは「時間フィルター」の緩和を勧めます。東京時間以外でも、同様の低ボラティリティ状態が発生する時間帯があるはずです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5無料EA】EURGBP 5分足で10年生存。勝率47.1%の壁と、Pythonコードで分かった「低ボラへの弱点」</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_eurgbp_15m_range_w5_20260803_194957_fccc4b_blog/</link>
      <pubDate>Mon, 03 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_eurgbp_15m_range_w5_20260803_194957_fccc4b_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;EURGBP&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
自動売買の開発は、孤独で険しい道です。多くの人が、バックテストの右肩上がりに心躍らせます。しかし、実運用で破綻し、絶望するケースが後を絶ちません。今回は、10年のバックテストを破綻せず生き抜いたロジックを紹介します。成績は決して派手ではありません。むしろ、伸び悩んだ部分が明確なロジックです。
&lt;p&gt;もともと、私はブレイクアウト手法の「ダマシ」に疲れ果てていました。方向感のない相場で、何度も損切りを繰り返す日々に疑問を持ちました。そこで、相場の「停滞」を定量的に測る方法を模索しました。統計的なアプローチで、レンジ相場の反転だけを狙う仕組みを構築しようと試行錯誤した結果が、今回のロジックです。&lt;/p&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  このコードをベースにすれば、あなたがゼロからMT5のEAを開発する数百時間が節約できます。自分だけのオリジナルEAを作るための、最高の土台として活用してください。
&lt;/div&gt;

&lt;p&gt;&lt;img alt=&#34;バックテスト分析 - equity&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_EURGBP_15m_range_w5_20260803_194957_fccc4b_equity.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.27&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;47.1%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;208 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$601.73&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;4.50%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.34&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.67&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;PF 1.27という数字は、実戦では「物足りない」水準です。最大の原因は、エントリー条件の緩和による精度の低下にあります。取引回数を確保するため、フィルターを緩めたことで、質の低いトレードが混入しました。&lt;/p&gt;
&lt;p&gt;また、EURGBP特有の超低ボラティリティ期間に、反応しすぎた傾向が見えます。小さな価格変動を反転と誤認し、微損を繰り返す場面が散見されました。カーブフィッティングを徹底的に避けた結果、平凡な成績に落ち着いたと言えます。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    完璧を求めすぎて取引回数がゼロになるよりは、まずは「生き残る形」が見えたことに価値がありますね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、マルチタイムフレーム分析を用いた平均回帰戦略です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;分類&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;指標・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識（上位足）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX (1h, 4h)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;35未満であること（強いトレンドの排除）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識（執行足）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;CHOP / ADX (5m)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;CHOP &amp;gt; 45 かつ ADX &amp;lt; 30（レンジ相場の確定）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー条件（買）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB / CCI / Stoch&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格 $\le$ 下限バンド かつ (CCI上抜け または Stoch GC)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー条件（売）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB / CCI / Stoch&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格 $\ge$ 上限バンド かつ (CCI下抜け または Stoch DC)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;決済ルール&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TP / SL / Trailing&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;利確 40pips / 損切 30pips / トレーリング開始 15pips&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;この無料コードをベースに、以下の改造を試みてください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【検証ログ】USDJPY 5分足で10年生き残る。PF1.35の低頻度EAをPythonで構築して分かったこと</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_15m_range_w5_20260802_211146_f3477e_blog/</link>
      <pubDate>Sun, 02 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_15m_range_w5_20260802_211146_f3477e_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
自動売買の開発は困難な道です。多くのロジックが短期的な利益を上げても、数年で破綻します。今回は10年のバックテストを破綻せずに生き抜いたロジックを公開します。ただし、成績は決して派手ではありません。伸び悩んでいる点や、明確な弱点が見えたロジックであることを最初にお伝えします。
&lt;p&gt;もともと、私はブレイクアウト手法に傾倒していました。しかし、レンジ相場での「だまし」に何度も資金を削られました。そこで、徹底的に「相場の端」だけを狙う逆張り手法を模索しました。インジケーターの組み合わせを数え切れないほど試し、ようやくたどり着いたのが今回のロジックです。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    完璧な聖杯を探すのではなく、まずは「死なないこと」に特化させました。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;このコードを土台にしてください。MT5開発にかかる数百時間を節約できます。自分だけのオリジナルEAを作る最高の素材になるはずです。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト分析 - equity&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_USDJPY_15m_range_w5_20260802_211146_f3477e_equity.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;CHART_IMAGE_HEATMAP&amp;gt;
&amp;lt;CHART_IMAGE_HOURLY&amp;gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた分析ダッシュボードです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.35&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;50.0%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;24 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥10004.46&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.81%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;リカバリーファクター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.55&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;期待利得 (Expected Payoff)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;0.68&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;この成績の最大の弱点は、取引回数の少なさです。10年で24回という数字は、実戦では機会損失が大きすぎます。フィルターを厳しくしすぎた結果、利益を伸ばすチャンスまで捨ててしまいました。&lt;/p&gt;
&lt;p&gt;PF1.35という数字も、爆発力に欠けます。最大ドローダウンが低いのは、単にトレードしていない期間が長いからです。効率的に資産を増やす仕組みとしては、まだ不十分と言えます。&lt;/p&gt;
&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、相場の「過熱感」と「停滞感」を同時に判定する仕組みです。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;要素&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;条件・指標&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定値・判定基準&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識(MTF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;上位足ADX (1h, 4h, 1d)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;すべて25以下（トレンド不在を重視）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識(執行足)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Choppiness Index &amp;amp; ADX&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;CHOP &amp;gt; 50 かつ ADX &amp;lt; 20&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATR / ATR_SMA&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATR &amp;lt; ATR_SMA * 1.5 (安定した変動幅)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリートリガー&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB &amp;amp; Keltner Channel&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格が両方のバンドの外側に位置すること&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最終確認&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;CCI (24)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;+/- 200からの反転（極端な売られすぎ/買われすぎ）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  ポイントは「BBとケルトナーチャネルの両方」を突き抜けた点です。これにより、単なるボラティリティ拡大によるブレイクアウトを排除しています。
&lt;/div&gt;

&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;ここから改造して、性能を上げる余地は十分にあります。例えば、ADXの閾値を少し緩めることで、取引回数を増やせるかもしれません。また、時間帯フィルターを追加し、流動性の低い時間帯を避ける構成も有効です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【検証ログ】PF1.38の忍耐。GBPUSD 5分足で10年を生き抜いたMT5無料EAとPythonコードを公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_gbpusd_5m_wildcard_w4_20260801_215414_6701c0_blog/</link>
      <pubDate>Sat, 01 Aug 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_gbpusd_5m_wildcard_w4_20260801_215414_6701c0_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;GBPUSD（ポンドドル）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
今回は、10年のバックテストを破綻せずに生き抜いたものの、成績が伸び悩んだロジックをご紹介します。
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_GBPUSD_5m_wildcard_w4_20260801_215414_6701c0.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間10年の市場変動を破綻せず生き抜いた資産推移グラフ（長期検証証拠）です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.38&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;45.7%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;35 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$92.83&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.35%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックの最大の問題は、取引回数の少なさです。
10年間で35回という数値は、機会損失が極めて大きいことを意味します。
PF1.38という数値は安定していますが、収益力は不足しています。&lt;/p&gt;
&lt;p&gt;原因は、フィルターを重ねすぎたことです。
上位足のトレンド判定とZ-Scoreの乖離率を同時に求めています。
さらに時間帯制限まで加えたため、エントリー条件が厳しくなりすぎました。
結果として、相場の大きな波を何度も逃しています。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    破綻しない安心感はありますが、これでは資産を増やすのに時間がかかりすぎますね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、均衡点からの統計的乖離を狙う逆張り的なアプローチに、トレンドフィルターを掛け合わせた構成です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ベース時間足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;GBPUSD専用の短期スキャルピング&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;トレンド判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足基準線&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格が基準線より上なら買い、下なら売り&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー指標&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Z-Score&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;基準線から$\pm$2.0$\sigma$以上の乖離を検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATR / ATR_MA&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ATRが平均の1.2倍未満の時のみエントリー&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;反転トリガー&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI $&amp;amp;$ 直近高安値&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSIの方向転換と直近足のブレイクで確定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;取引時間帯&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;JST 16:00 - 24:00&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;流動性の高い欧州・NY市場序盤に限定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;決済戦略&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレーリングストップ&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;10pips利益到達後にストップを切り上げ&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このロジックを実用的なレベルへ引き上げるには、フィルターの緩和が必要です。
例えば、Z-Scoreの閾値を2.0から1.5へ下げること。
これにより、取引回数を増やして収益機会を広げられます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【研究素材提供】USDJPY 5分足で8年半を生き抜いた低ドローダウンEAのPythonコードを無料公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_range_w5_20260731_185544_b80048_blog/</link>
      <pubDate>Fri, 31 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_range_w5_20260731_185544_b80048_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
今回は、8年半のバックテストを破綻せずに生き抜いたロジックをご紹介します。
資産曲線は緩やかで、成績は伸び悩みました。
しかし、最大ドローダウンを極限まで抑えた点に価値があります。
未完成の原石として、研究素材にご活用ください。
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_USDJPY_5m_range_w5_20260731_185544_b80048.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間8年半の市場変動を破綻せず生き抜いた資産推移グラフ（長期検証証拠）です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.20&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;44.0%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;50 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥10977.34&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.91%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックの最大の弱点は、取引回数の少なさです。
8年半で50回という数字は、実戦では機会損失が大きすぎます。
PF 1.20という数値も、運用効率としては低いです。&lt;/p&gt;
&lt;p&gt;要因は、フィルターを掛けすぎたことにあります。
ADXによるレンジ判定と時間帯制限が、多くのチャンスを排除しました。
結果として、破綻は免れたものの、利益を伸ばす力に欠けています。
堅実さを追求しすぎて、収益性が犠牲になった形です。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    守備力は100点ですが、攻撃力は10点といったところですね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、ボラティリティが安定したレンジ相場での「平均回帰」を狙います。
以下の条件をすべて満たしたときにエントリーします。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;条件・設定内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間帯制限&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;UTC 0時から9時までのみ動作&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識（レンジ）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足ADX &amp;lt; 20 かつ 1時間足ADX &amp;lt; 25&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ制限&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB Widthが移動平均の1.1倍未満であること&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;買い条件&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;終値 $\le$ BB下限 かつ StochRSIが20%以下でGC かつ 陽線/下ヒゲ&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;売り条件&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;終値 $\ge$ BB上限 かつ StochRSIが80%以上でDC かつ 陰線/上ヒゲ&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;決済ルール&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TP 30pips / SL 30pips / トレーリングストップ有効&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このコードをベースに改造するなら、フィルターの緩和を推奨します。
例えば、1時間足のADX制限を少し緩めるだけでも、取引数は増えるはずです。
また、固定のTP/SLではなく、ATRに基づいた可変幅の導入も有効です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5研究素材】8年半の長期バックテストを完走したUSDJPY 5分足ロジックとPythonコードを無料公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_session_w6_20260730_223330_f3828e_blog/</link>
      <pubDate>Thu, 30 Jul 2026 22:35:58 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_session_w6_20260730_223330_f3828e_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
今回は、8年半のバックテストを破綻せずに生き抜いたロジックをご紹介します。
長期検証をクリアしたものの、成績が伸び悩んだ点に課題が残る設計です。
完璧なシステムではなく、研究用の素材としてご活用ください。
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_USDJPY_5m_session_w6_20260730_223330_f3828e.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間8年半の市場変動を破綻せず生き抜いた資産推移グラフ（長期検証証拠）です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.20&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;47.1%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;87 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥20992.71&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.61%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックの最大の弱点は、取引回数の少なさです。
8年半で87回という数字は、機会損失が非常に多いことを意味します。
PF1.20という数値も、控えめな成績と言わざるを得ません。&lt;/p&gt;
&lt;p&gt;原因は、フィルター条件を厳しくしすぎたことです。
特に時間帯制限とADXの閾値設定が、多くのチャンスを切り捨てています。
結果として、ドローダウンは極めて低いものの、資産増加のスピードは緩やかになりました。
いわば「守りすぎて攻めきれていない」状態です。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    破綻しないことは証明されましたが、これでは運用効率が悪すぎますね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、NY時間の初動を狙うモメンタム戦略です。
上位足の環境認識と、下位足のブレイクアウトを組み合わせています。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ベース時間足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足（EMA20 / ADX14）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;トレンド判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX &amp;gt; 25 かつ EMA20との位置関係&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー条件&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;30本高値/安値更新 ＋ Supertrend一致 ＋ RSI範囲内&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;フィルター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;日本時間 21:00 〜 23:00 / ATRボラティリティ上昇&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;キャンドル判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;実体サイズがATRの0.5倍以上かつヒゲが短いこと&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;決済ルール&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;固定TP/SL ＋ トレーリングストップ&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このロジックを「化けさせる」には、フィルターの最適化が必要です。
例えば、時間帯制限をロンドン市場の時間帯まで広げる方法が考えられます。
また、固定のTP/SLではなく、ATRに基づいた変動幅を採用すべきです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【研究素材】USDJPY 5分足で8年半の市場ショックを耐えたMT5用ロジックとPythonコードを無料公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_breakout_w3_20260730_221914_668720_blog/</link>
      <pubDate>Thu, 30 Jul 2026 22:30:01 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_breakout_w3_20260730_221914_668720_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
今回は、8年半のバックテストを破綻せずに生き抜いたものの、成績が伸び悩んだロジックをご紹介します。
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_USDJPY_5m_breakout_w3_20260730_221914_668720.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間8年半の市場変動を破綻せず生き抜いた資産推移グラフ（長期検証証拠）です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.28&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;60.6%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;33 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥30826.17&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.31%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;このロジックは極めて保守的な設計です。最大ドローダウンを2.31%に抑えましたが、代償として取引数が激減しました。&lt;/p&gt;
&lt;p&gt;8年半で33回という取引数は、実運用では機会損失が大きすぎます。PFは2.28と高い数値を出しました。しかし、これはフィルターが厳しすぎて「完璧な局面」しか選んでいないためです。&lt;/p&gt;
&lt;p&gt;ボラティリティの急変時にエントリーが遅れる傾向があります。また、トレンドの初動を捉えきれず、中盤以降にエントリーする点も弱点です。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    堅実すぎて、もはや「待機時間」の方が長いロジックかもしれませんね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックはボラティリティの圧縮と拡散を利用したブレイクアウト戦略です。以下の条件をすべて満たしたときにのみエントリーします。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;使用指標・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足 EMA(100)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;上位足のトレンド方向を限定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラ判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB(20,2) $\subset$ KC(20,1)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;スクイーズ（エネルギー充填）の検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;方向判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ドンチャンチャネル(10)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;直近高値・安値の更新を確認&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;強度判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX(14) $\ge$ 20 かつ上昇&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンドの強さを数値で判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勢い判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;実体サイズ $&amp;gt;$ ATR(14) $\times$ 0.5&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;陽線・陰線の勢いを確認&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間制限&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16:00 $\sim$ 23:00 (UTC+9)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;流動性の高いロンドン・NY時間を指定&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このロジックをベースに、取引回数を増やすための改善案を提示します。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5無料公開】USDJPY 5分足で8年戦った結果。勝率46.5%に甘んじた理由とPythonコードを全公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_wildcard_w4_20260730_204027_801b83_blog/</link>
      <pubDate>Thu, 30 Jul 2026 22:20:47 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_usdjpy_5m_wildcard_w4_20260730_204027_801b83_blog/</guid>
      <description>&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
今回は、8年半のバックテストを破綻せずに生き抜いたロジックをご紹介します。長期的な生存能力は証明されました。一方で、成績が伸び悩んだ点や特有の弱点も明確に現れています。
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_USDJPY_5m_wildcard_w4_20260730_204027_801b83.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間8年半の市場変動を破綻せず生き抜いた資産推移グラフ（長期検証証拠）です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.21&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;46.5%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;527 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;¥96888.54&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;3.93%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;今回の検証結果の限界とダメ出し&#34;&gt;今回の検証結果の「限界」と「ダメ出し」&lt;/h3&gt;
&lt;p&gt;PF1.21という数値は、実運用では物足りない成績です。勝率が50%を切っているため、連敗時の心理的負荷は避けられません。&lt;/p&gt;
&lt;p&gt;この要因は、フィルターを厳格にしすぎたことにあります。ボラティリティ圧縮（ATRパーセンタイル）を重視したため、絶好のトレンド初動を逃した局面が散見されました。また、5分足という短い時間軸ゆえに、ノイズによる損切り回数が増えています。&lt;/p&gt;
&lt;p&gt;結果として、最大ドローダウンを3.93%に抑えることには成功しました。しかし、攻めの姿勢が欠けており、機会損失を許容しすぎた設計と言わざるを得ません。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    安全性を重視してリスクを削ぎ落とした結果、爆発力が消えてしまった印象です。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ロジックの技術的詳細&#34;&gt;ロジックの技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックは、ボラティリティの「圧縮」と「爆発」を数値化して狙う戦略です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;指標&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定値&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;KAMA&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期間 21&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格の適応的平滑化とトレンド方向の判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ADX&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期間 14 / 閾値 25&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンドの強度を測定し、弱い相場を除外&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ER (効率比)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期間 14 / 閾値 0.4&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;価格変動の効率性を測定し、急騰・急落を検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ATR Percentile&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期間 100 / 閾値 0.3&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ボラティリティが極めて低い「スクイーズ」を判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;SuperTrend&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分足 / 12 / 3.0&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;上位足のトレンド方向へのみエントリーを制限&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間フィルター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16:00 - 23:00 JST&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;流動性の高い欧州・NY市場のみに限定&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;どう改善すべきか次なる展望&#34;&gt;どう改善すべきか（次なる展望）&lt;/h3&gt;
&lt;p&gt;このロジックをさらに進化させるには、価格以外の視点が必要です。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【長期破綻ゼロ！PF1.27】8年半の激変相場を生き抜いたMT5無料EAロジックを公開。Pythonによる長期バックテスト検証レポート</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/autogen_ea_breakout_w3_20260729_184721_cf6473_blog/</link>
      <pubDate>Wed, 29 Jul 2026 22:26:04 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/autogen_ea_breakout_w3_20260729_184721_cf6473_blog/</guid>
      <description>&lt;p&gt;AIが生成した強靭な自動売買ロジックを公開します。8年半という全期間のバックテストを完遂しました。あらゆる市場ショックを乗り越えた実績があります。&lt;/p&gt;
&lt;div style=&#34;background-color: #f0fdf4; border-left: 5px solid #22c55e; padding: 15px; margin-bottom: 25px; border-radius: 4px;&#34;&gt;
    &lt;strong style=&#34;color: #166534; font-size: 1.1em;&#34;&gt;💡 本ロジックの対象環境&lt;/strong&gt;&lt;br&gt;
    &lt;span style=&#34;color: #15803d;&#34;&gt;対象通貨ペア：&lt;b&gt;USDJPY（ドル円）&lt;/b&gt; ／ 使用時間足：&lt;b&gt;5分足専用&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/AutoGen_EA_breakout_w3_20260729_184721_cf6473.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが過酷な全期間8年半の市場変動を破綻せず生き抜いた資産推移グラフ（長期検証証拠）です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.27&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;39.6%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;101 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$25633.29&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.89%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。ボラティリティの収束と拡大を数学的に捉えたからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。1つ目は、ボリンジャーバンドとケルトナーチャネルを組み合わせたスクイーズ判定による、エネルギー蓄積の可視化です。2つ目は、1時間足のEMA50による中長期トレンドへの完全同期です。3つ目は、リスクリワード比を1:5.3まで高めた徹底的な損小利大の設計です。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。欧州・NY市場の開始時に発生するボラティリティの爆発を狙い撃ちします。無駄なエントリーを排除し、方向性が確定した瞬間のみに絞りました。これにより、低い勝率でも純利益を積み上げる構造を実現しています。&lt;/p&gt;
&lt;p&gt;結論として、相場の本質である「変動のサイクル」に適合したため、長期生存が可能となりました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    勝率40%を切っているのに利益が出るのは、1回の勝ちが負けを大きく上回る設計だからですね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;使用時間足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足（ベース）、1時間足（フィルター）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;トレンド判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足 EMA50（価格が上ならロング、下ならショート）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー根拠&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;スクイーズ解放 $\rightarrow$ BB突破 $\rightarrow$ 直近高値/安値更新&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ボラティリティ条件&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX &amp;gt; 20（トレンド強度の確認）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;取引時間帯&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16:00 〜 23:59 (Broker Time)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;決済ルール&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;SL: 15pips / TP: 80pips&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;追従ルール&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレーリングストップ（25pipsから開始）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  本ロジックは過去のデータに基づくシミュレーション結果です。将来の利益を保証するものではありません。資金管理を徹底し、研究材料としてご活用ください。
&lt;/div&gt;

&lt;h3 id=&#34;pythonコード&#34;&gt;Pythonコード&lt;/h3&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5無料EA】Pythonで構築した金利変動相場を攻略する自動売買ロジックの正体 (PF1.25)</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/ea_reversion_w2_20260728_213304_87de9e_2y_blog/</link>
      <pubDate>Tue, 28 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/ea_reversion_w2_20260728_213304_87de9e_2y_blog/</guid>
      <description>&lt;p&gt;10年間のインフレ相場は非常に困難でした。金利変動でトレンドが急変し、多くのEAが破綻しています。その中で生き残った優秀なロジックを公開します。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/EA_reversion_w2_20260728_213304_87de9e_2y.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが10年間間を生き抜いた資産推移の証拠です。（※本ロジックは ユーロドルの5分足 専用です）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.25&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;46.9%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;113 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$26428.83&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.82%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。相場環境を厳格に選別したからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。1つ目はADXを用いたレンジ判定です。2つ目はアジア時間への限定です。3つ目は上位足の方向性一致です。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。1時間足が上昇中で、5分足がレンジのときだけ買いを狙います。強いトレンドに逆らわず、押し目での反発のみを拾う設計です。&lt;/p&gt;
&lt;p&gt;結論として、無駄な取引を徹底的に省いたことが低いドローダウンに繋がりました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    勝ち続けることより、大きく負けない仕組み作りが重要です。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定内容&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;メイン時間足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;エントリータイミングの判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;上位足フィルター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足 EMA200&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;全体のトレンド方向を決定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;レンジ判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX (14) &amp;lt; 25&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンドの欠如を確認&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;反転シグナル&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI (14) 30/70&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;売られすぎ・買われすぎの判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;価格位置&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ボリンジャーバンド&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;バンド中央値との位置関係をチェック&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;取引時間&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;0:00 〜 9:00&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;レンジが発生しやすい時間帯に限定&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  このロジックの核心は「時間帯」と「ボラティリティ」の掛け合わせにあります。
&lt;/div&gt;

&lt;h3 id=&#34;公開コード-python&#34;&gt;公開コード (Python)&lt;/h3&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>【検証済】最大DD2.23%の低リスク戦略を公開。MT5用無料EAのPythonロジックを完全配布</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_4_2y_passed_20260727_214943_blog/</link>
      <pubDate>Mon, 27 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_4_2y_passed_20260727_214943_blog/</guid>
      <description>&lt;p&gt;10年間間の激しい金利変動相場を勝ち抜いた自動売買ロジックを公開します。低ドローダウンで安定した利益を積み上げる設計です。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_4_2y_passed_20260727_214943.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが10年間間を生き抜いた資産推移の証拠です。（※本ロジックは ユーロドルの5分足 専用です）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.22&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;46.7%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;60 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$11692.73&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;2.23%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。ボラティリティの収束と拡散を正確に捉えたからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。1つ目はマルチタイムフレーム分析による方向性の固定です。2つ目はスクイーズ判定による無駄なエントリーの排除です。3つ目はニューヨーク時間のトレンド発生時間帯に限定したこと。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。ボリンジャーバンドがケルトナーチャネルの内側に入る「スクイーズ」状態を待ちます。そこからバンドが外へ突き抜けた瞬間のみ狙います。これにより、方向感のないレンジ相場での往復ビンタを回避できます。&lt;/p&gt;
&lt;p&gt;結論として、トレンドの初動のみを厳選して取引する仕組みが、低ドローダウンを実現しました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    取引回数は少ないですが、1回あたりの期待値が高いのが魅力ですね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ベース時間足&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;長期トレンド判定&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足 Hull Moving Average (HMA)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;環境フィルター&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分足 ADX (20以上でボラティリティありと判定)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;エントリー根拠&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BBがKCを上抜け（買い）/ 下抜け（売り）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;モメンタム確認&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI (50以上で買い / 50以下で売り)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;取引時間制限&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;21:00 〜 23:00 (JST)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  この戦略の核心は「静寂の後の爆発」を捉えることにあります。
&lt;/div&gt;

&lt;h3 id=&#34;python実装コード&#34;&gt;Python実装コード&lt;/h3&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.22 / 勝率47.2%】インフレ相場の変動を利益に変えるMT5無料EAをPythonで開発</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_3_2y_passed_20260725_084756_blog/</link>
      <pubDate>Sun, 26 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_3_2y_passed_20260725_084756_blog/</guid>
      <description>&lt;p&gt;10年間間の激しい金利変動相場を勝ち抜いた優秀なEAロジックを公開します。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_3_2y_passed_20260725_084756.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが10年間間を生き抜いた資産推移の証拠です。（※本ロジックは 5分足 専用です）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.22&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;47.2%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;53 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$92.10&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.78%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。ボラティリティの蓄積と爆発を正確に捉えたからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。1つ目はスクイーズ判定の導入です。ボリンジャーバンドがケルトナーチャネルの内側に収まる状態を検知し、エネルギーの蓄積を判断します。2つ目はマルチタイムフレーム分析の採用です。15分足と1時間足のトレンド方向へのみエントリーを限定しました。3つ目は時間帯フィルターの適用です。流動性が極めて高いロンドン・NY時間のみに取引を絞っています。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。欧州時間の開始直後にボラティリティが急拡大した際、トレンド方向へのブレイクアウトのみを抽出してエントリーします。これにより、レンジ相場での往復ビンタを完全に回避できました。&lt;/p&gt;
&lt;p&gt;結論として、不要な取引を徹底的に排除した設計が、低ドローダウンでの生存を可能にしました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    取引回数が少ないのは、それだけ厳選したポイントでしか撃っていない証拠ですね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;要素&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ベース時間足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;エントリータイミングの決定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識足&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分足(EMA10) / 1時間足(EMA50)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;上位足のトレンド方向の判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;スクイーズ判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB(20, 2.0) $\subset$ KC(20, 2.0)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;相場のエネルギー蓄積を検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ブレイク判定&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BBがKCを突き抜け、直近10本高安値を更新&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ボラティリティ爆発の検知&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;モメンタム&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;MACDヒストグラムの加速 $\text{and}$ ADX上昇&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンドの勢いを確認&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間フィルター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16-18時 / 21-24時 (サーバー時間)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;高流動性時間帯への限定&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  最大ドローダウンを1.78%という極めて低い水準に抑えつつ、純利益を積み上げている点がこのロジックの最大の強みです。
&lt;/div&gt;

&lt;h3 id=&#34;pythonコード&#34;&gt;Pythonコード&lt;/h3&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5無料EA】Pythonで構築する低リスク自動売買ロジックの正体 (PF1.28)</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_4_2y_passed_20260725_084958_blog/</link>
      <pubDate>Sat, 25 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_4_2y_passed_20260725_084958_blog/</guid>
      <description>&lt;p&gt;10年間間の激しいインフレと金利変動を勝ち抜いたロジックを公開します。
AIが導き出したこの戦略は、徹底したリスク管理とボラティリティの選別に基づいています。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_4_2y_passed_20260725_084958.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが10年間間を生き抜いた資産推移の証拠です。（※本ロジックは EURUSDの5分足 専用です）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.28&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;42.3%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;26 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$68.56&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.83%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。
相場の「溜め」と「解放」を数値化し、トレンドの方向性を完全に一致させたからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。
1つ目は、ボリンジャーバンドとケルトナーチャネルを用いたスクイーズ判定で、無益なエントリーを排除したことです。
2つ目は、カウフマン効率比（ER）により、ノイズの多い相場を回避したことです。
3つ目は、3つの時間足でトレンド方向を同期させ、期待値の高い局面のみに絞ったことです。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。
ニューヨーク市場の開始直後、価格が狭いレンジに収束した後に急激に放たれる瞬間を捉えます。
このとき、1時間足と15分足が同じ方向を向いていれば、高い確率でトレンドが継続します。&lt;/p&gt;
&lt;p&gt;結論として、感情を排除した厳格なフィルタリングが、最大ドローダウン1.83%という驚異的な安定感を実現しました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    取引数は少ないですが、負けないためのフィルターが非常に強力に機能しています。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックが採用しているテクニカル指標とエントリー条件を整理します。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;指標&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;役割&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;条件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;BB ＆ KC&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ボラティリティ判定&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB幅 &amp;lt; KC幅 (スクイーズ) からの脱出&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ER (効率比)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンドの質&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;0.3以上 (効率的なトレンドが発生中)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;ADX&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンド強度&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;20以上 (明確なトレンドが存在する)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;MTF SMA&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;環境認識&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足・15分足のSMAが価格と同方向&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;RSI&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;モメンタム&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;50を基準に方向性を判定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間制限&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;取引時間帯&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;21:00 〜 23:00 (JST)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  &lt;strong&gt;重要ポイント&lt;/strong&gt;:
単なるインジケーターの組み合わせではなく、時間軸の同期（MTF）とボラティリティの収束・拡散を組み合わせている点が核心です。
&lt;/div&gt;

&lt;h3 id=&#34;公開pythonコード&#34;&gt;公開Pythonコード&lt;/h3&gt;
&lt;p&gt;AIが生成したバックテスト合格済みのソースコードです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【検証済】PF1.24を記録したMT5用無料EAを公開！Pythonで構築した自動売買ロジックの正体</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260724_212952_blog/</link>
      <pubDate>Fri, 24 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260724_212952_blog/</guid>
      <description>&lt;p&gt;10年間間の激しい相場変動を勝ち抜いたロジックが完成しました。インフレや金利変動に強い設計を追求しています。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_2_2y_passed_20260724_212952.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが10年間間を生き抜いた資産推移の証拠です。（※本ロジックは ユーロドルの5分足 専用です）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.24&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;45.7%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;116 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$154.83&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.35%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。トレンド方向への押し目買いと戻り売りに絞ったからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。1つ目はマルチタイムフレーム分析で大きな流れを把握していることです。2つ目はADXを用いて強いトレンド相場での逆張りを避けている点です。3つ目はロンドン市場の活発な時間帯のみに限定して取引していることです。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。15分足が上昇トレンドのときだけ、5分足の調整局面で買いを仕掛けます。これにより、根拠のない逆張りを排除できました。&lt;/p&gt;
&lt;p&gt;結論として、環境認識とタイミングの組み合わせが機能した結果と言えます。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    最大ドローダウンが1.35%という低さに抑えられている点が、精神的な余裕を生みますね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;p&gt;ロジックの具体的な条件を整理しました。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;メイン時間足&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンドフィルタ&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分足 SMA(200)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;相場環境判定&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX(14) &amp;lt; 30 (レンジ〜緩やかなトレンド)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;エントリー条件(Buy)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分足上昇中 ＋ (BB下限突破 または RSI &amp;lt; 35) ＋ ストキャスGC&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;エントリー条件(Sell)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分足下降中 ＋ (BB上限突破 または RSI &amp;gt; 65) ＋ ストキャスDC&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;利確 / 損切&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TP 30pips / SL 15pips&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;特殊機能&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレーリングストップ (8pipsから開始)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;取引時間&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;JST 15:00 〜 20:00&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  この戦略の核心は「上位足のトレンドに従いながら、下位足の反発を狙う」というシンプルな構造にあります。
&lt;/div&gt;

&lt;h3 id=&#34;公開pythonコード&#34;&gt;公開Pythonコード&lt;/h3&gt;
&lt;p&gt;AIが生成したベースロジックのコードです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5無料EA】最大DD 1.26%を達成したPython自動売買ロジックの全貌を公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260723_212933_blog/</link>
      <pubDate>Thu, 23 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260723_212933_blog/</guid>
      <description>&lt;p&gt;10年間間の激しい金利変動を乗り越えたロジックを公開します。AIが導き出した、極めて低リスクな設計です。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_2_2y_passed_20260723_212933.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが10年間間を生き抜いた資産推移の証拠です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;プロフィットファクター (PF)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1.27&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;勝率&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;43.7%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;総取引数&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;71回&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;純利益&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;$139.88&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;最大ドローダウン&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1.26%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。相場環境の厳格なフィルタリングを徹底したからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。1つ目は、上位足のADXで強いトレンドを排除したこと。2つ目は、RSIとストキャスティクスを組み合わせた高精度の反転判定。3つ目は、ボラティリティが安定する時間帯に限定して取引したことです。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。1時間足のADXが30を超えたときは、エントリーを完全に停止します。これにより、トレンドに逆らう危険な逆張り注文を回避しました。&lt;/p&gt;
&lt;p&gt;結論として、取引回数を絞り、勝率よりも「負けない局面」を優先した設計が功を奏したといえます。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    少ない取引数で最大DDを抑える。これがプロの設計思想です。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;p&gt;このロジックは、平均回帰（ミーンリバージョン）をベースとしています。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;設定・条件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;使用時間足&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5分足（メイン）、1時間足（環境認識）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ボリンジャーバンド&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期間20 / 偏差2.0&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期間14 / 境界値 35以下(買)・65以上(売)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ストキャスティクス&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;14, 3, 3 / 25以下でGC(買)・75以上でDC(売)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADXフィルター&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1時間足 &amp;lt; 30 かつ 5分足 &amp;lt; 25&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;取引時間&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;日本時間 16:00 〜 21:00&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;リスク管理&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TP 40pips / SL 20pips / トレーリングストップ有効&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  &lt;strong&gt;ここがポイント&lt;/strong&gt;
単なるインジケーターの組み合わせではなく、時間軸を分けた「階層的なフィルタリング」を実装している点にあります。
&lt;/div&gt;

&lt;h3 id=&#34;公開pythonコード&#34;&gt;公開Pythonコード&lt;/h3&gt;
&lt;p&gt;AIが生成した、バックテスト合格済みのソースコードです。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>【MT5無料EA】インフレ相場を勝ち抜いたPython製自動売買ロジックの正体 (PF1.38)</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260722_205114_blog/</link>
      <pubDate>Thu, 23 Jul 2026 05:47:38 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260722_205114_blog/</guid>
      <description>&lt;p&gt;10年間間の激しい金利変動相場で生き残るロジックは、徹底したフィルター設定にあります。&lt;/p&gt;
&lt;p&gt;結論から述べます。このロジックが勝ち抜いた理由は、短期的な逆張りに中期的なトレンド方向を掛け合わせた点にあります。単なるボリンジャーバンドの反発を狙うのではなく、15分足の方向性と合致したときのみエントリーします。さらにADXを用いて極端なトレンド相場を回避する設計です。この厳格な絞り込みにより、最大ドローダウンを1.19%という極めて低い水準に抑え込みました。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_2_2y_passed_20260722_205114.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;これが10年間間を生き抜いた資産推移の証拠です。
（※本ロジックは &lt;strong&gt;ユーロドルの5分足&lt;/strong&gt; 専用です）&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.38&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;48.1%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;81 回&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益 (0.1ロット/1万通貨時)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$170.28&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.19%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。
15分足の上位トレンド方向に合わせ、5分足での逆張り（押し目買い・戻り売り）を徹底したからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。
1つ目はマルチタイムフレーム(MTF)分析による大局トレンドの固定です。
2つ目はADXを用いた強烈なトレンド相場（バンドウォーク）の回避です。
3つ目はストキャスティクスとRSIによる反発タイミングの厳格化です。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。
15分足の20日SMAより価格が上の場合のみ買いを許可し、さらにADXが45を超えるハイパートレンド時はあえて静観します。
価格がボリンジャーバンド下限にタッチし、ストキャスティクスK線がD線を上抜いた瞬間を狙い撃ちします。&lt;/p&gt;
&lt;p&gt;結論として、徹底的なフィルターでダマシを削減したことが、最大DD 1.19%という優れた成績をもたらしました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    取引回数は少ないですが、その分1回あたりの期待値が高くなっています。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックの判定条件をまとめました。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;評価項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;条件・設定&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;目的&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;時間帯フィルター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16:00 〜 23:00 (JST)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;欧州・NYの流動性が高いメインタイムを狙う&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;大局トレンド&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15m Close $\gtrless$ SMA(20)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15分足のトレンド方向への合流&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;環境認識 (ADX)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX(14) &amp;lt; 45&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;強すぎるトレンド相場での逆張り破綻を回避&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;エントリー基準&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;BB Lower/Upper + Stoch Cross&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;買われすぎ・売られすぎの極値反発を捕捉&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;オシレーター&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI(14) &amp;lt; 40 (Buy) / &amp;gt; 60 (Sell)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ダマシエントリーの多重カット&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  &lt;strong&gt;ここがポイント：&lt;/strong&gt;
低ドローダウンを実現できたのは、ボラティリティの判定と時間帯制限（ロンドン・NY時間）を組み合わせたためです。
&lt;/div&gt;

&lt;h3 id=&#34;公開pythonコード&#34;&gt;公開Pythonコード&lt;/h3&gt;
&lt;p&gt;AIが生成し、バックテストをクリアした元のロジックです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.21】MT5無料EA: インフレ相場を攻略する高精度逆張りロジックを完全公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260722_215603_blog/</link>
      <pubDate>Wed, 22 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260722_215603_blog/</guid>
      <description>&lt;p&gt;10年間間のインフレおよび金利変動相場を勝ち抜いた自動売買ロジックを公開します。
このEAは徹底したリスク管理と環境認識を組み合わせた設計です。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_2_2y_passed_20260722_215603.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;【結論】これが10年間間を生き抜いた資産推移の証拠です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;指標&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;実績値&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;プロフィットファクター (PF)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1.21&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;勝率&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;45.9%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;総取引数&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;724回&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;純利益&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;$1568.35&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;最大ドローダウン&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;4.60%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは勝ち続けられたのか&#34;&gt;なぜこのロジックは勝ち続けられたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。
単なる逆張りではなく「トレンドの強弱」を定量的に判定したからです。&lt;/p&gt;
&lt;p&gt;多くの逆張りEAは強いトレンドに巻き込まれ破綻します。
しかし本ロジックはADXを用いて強いトレンド相場を完全に排除しました。
さらに上位足（1時間足）の過熱感をフィルターに採用しています。&lt;/p&gt;
&lt;p&gt;具体的にはADXが35以上の局面では一切のエントリーを禁止しました。
これにより、インフレ局面の強烈な一方向相場での踏み上げを回避しています。
1時間足のRSIが極端な値を示す際は、エントリー条件をさらに厳格化しました。&lt;/p&gt;
&lt;p&gt;結果として、無駄なトレードを削ぎ落とし最大DDを4.60%に抑え込んでいます。
厳選したポイントのみを狙う姿勢が、低リスクでの利益積み上げを実現しました。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    「逆張りは危険」と言われますが、フィルター次第で最強の武器になりますね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;技術的な強みの解説&#34;&gt;技術的な強みの解説&lt;/h3&gt;
&lt;p&gt;本ロジックの核心は、以下の3段階フィルターにあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;トレンド強度フィルター&lt;/strong&gt;: ADXを用いて「逆張り禁止区域」を特定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;マルチタイムフレーム分析&lt;/strong&gt;: 1時間足の方向性と過熱感を判定し、閾値を変動。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反転の根拠の積み上げ&lt;/strong&gt;: BBタッチに加え、RSIの反転とストキャスティクスのクロスを必須条件に設定。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  特に「RSIが底を打って上昇し始めていること」を条件に加えた点が重要です。
単なる数値の低さではなく、方向性の変化を確認してからエントリーします。
&lt;/div&gt;

&lt;h3 id=&#34;公開コードpython&#34;&gt;公開コード（Python）&lt;/h3&gt;
&lt;p&gt;AIが生成したベースとなるPythonコードです。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;p style=&#34;margin-top: 15px;&#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/9O8WOYRAOfmHI4g&#34; rel=&#34;nofollow&#34; style=&#34;font-weight: bold; text-decoration: underline;&#34;&gt;プロのフィルターロジックが詰まった実績EA（一本勝ち）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/9O8WOYRAOfmHI4g&#34; alt=&#34;&#34;/&gt;
    &lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MeanReversionQuantEdge&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    PF 1.00 の壁を突破するためのエッジ強化版ミーン・リバージョン戦略。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    単なるバンドタッチではなく、「過熱感」と「反転の兆し」を定量的に組み合わせ、
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    強いトレンド相場での踏み上げを徹底的に排除することで勝率とPFを向上させる。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# リスクリワード比を改善し、トレーリングストップで利益を最大化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MeanReversion_QuantEdge&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;45.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;25.0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. ベース指標の計算 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ボリンジャーバンド (20, 2.0)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bb &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bbands(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, std&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; bb &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# RSI (14) - 過熱感の判定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX (14) - トレンド強度の判定（逆張り禁止区域の特定）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; adx_df &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# ADX_14&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ストキャスティクス (14, 3, 3) - 反転のタイミング判定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stoch()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; stoch &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. マルチタイムフレーム(MTF)分析 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 未来のカンニングを完全に防止&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1時間足のトレンド方向と過熱感を確認&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_sma &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_1h_close&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_rsi &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(df_1h_close, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SMA_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_1h_sma&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ffill()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bfill()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_1h_close&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ffill()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bfill()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_1h_rsi&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ffill()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bfill()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        エッジ（優位性）を追求したシグナル生成
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# 1本前のデータを使用して「反転」を確認&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 指標の抽出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bbl &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bbu &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        rsi &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev_rsi &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; prev&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch_d &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# MTF指標&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sma_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SMA_1h&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        close_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close_1h&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        rsi_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI_1h&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 必須データのチェック&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; any(pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isna(v) &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; v &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; [close, bbl, bbu, rsi, adx, stoch_k, stoch_d]):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- A. 強いトレンドフィルター (ADX) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADXが35を超えると強いトレンド相場となり、逆張りは極めて危険&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; adx &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;35&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- B. 上位足の環境判定 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1時間足で極端なトレンドがある場合、逆張りエントリーの閾値を厳格化する&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_strong_bull_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (rsi_1h &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;65&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isna(rsi_1h) &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_strong_bear_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (rsi_1h &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;35&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isna(rsi_1h) &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- C. BUYシグナル (反発の根拠を積み上げる) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. 価格がBB下限を突破している、あるいは極めて近い&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. RSIが十分に低い (35以下) かつ、RSIが底を打って上昇し始めている (prev_rsi &amp;lt; rsi)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. ストキャスティクスが売られすぎ圏(20以下)でゴールデンクロス&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 4. 上位足が強気トレンドならOK。強気下降トレンドならRSI 30以下という厳格条件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        buy_trigger &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; bbl &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.0005&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        rsi_bottom &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;35&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev_rsi)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch_cross_up &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; stoch_d &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; prev&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; prev&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; buy_trigger &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; rsi_bottom:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_strong_bear_1h:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 強烈な下降トレンド時は、さらに深い押し目とStochクロスを必須とする&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; stoch_cross_up:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 通常のレンジ〜緩やかなトレンド時は、Stochクロスがあればエントリー&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; stoch_cross_up &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;15&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- D. SELLシグナル (反落の根拠を積み上げる) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. 価格がBB上限を突破している、あるいは極めて近い&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. RSIが十分に高い (65以上) かつ、RSIが天井を打って下降し始めている (prev_rsi &amp;gt; rsi)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. ストキャスティクスが買われすぎ圏(80以上)でデッドクロス&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 4. 上位足が強弱トレンドならOK。強気上昇トレンドならRSI 70以上という厳格条件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sell_trigger &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; bbu &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.9995&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        rsi_top &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;65&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev_rsi)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch_cross_down &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; stoch_d &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; prev&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; prev&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; sell_trigger &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; rsi_top:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_strong_bull_1h:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 強烈な上昇トレンド時は、さらに高い過熱感とStochクロスを必須とする&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;70&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; stoch_cross_down:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 通常のレンジ〜緩やかなトレンド時は、Stochクロスがあればエントリー&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; stoch_cross_down &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;85&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;mt5用実装コードmql5&#34;&gt;MT5用実装コード（MQL5）&lt;/h3&gt;
&lt;p&gt;Pythonのロジックを忠実に再現したMQL5コードです。
そのままコンパイルして利用できます。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.21】MT5無料EA: インフレ相場を制したMTF押し目買い戦略を完全公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_1_2y_passed_20260721_212509_blog/</link>
      <pubDate>Tue, 21 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_1_2y_passed_20260721_212509_blog/</guid>
      <description>&lt;p&gt;10年間間の激しいインフレ相場を勝ち抜いた自動売買ロジックを公開します。
このロジックはプロフィットファクター1.21を記録しました。
厳しい金利変動局面でも資産を守り抜いた実戦的な戦略です。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;バックテスト資産推移&#34; loading=&#34;lazy&#34; src=&#34;https://ea-ai-blog.pages.dev/images/charts/temp_ea_gen_1_2y_passed_20260721_212509.png&#34;&gt;
これが10年間間を生き抜いた資産推移の証拠です。&lt;/p&gt;
&lt;h4 id=&#34;-10年間間バックテスト成績データ&#34;&gt;📊 10年間間バックテスト成績データ&lt;/h4&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;評価指標&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;バックテスト実績値&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;備考&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;プロフィットファクター (PF)&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;1.21&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1.0以上で勝ち越しの指標&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;勝率&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;47.3%&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;リスクリワード1:1.3の期待値&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;総取引数&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;226 回&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;十分な検証サンプル数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;純利益&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;$451.03&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;安定した右肩上がり&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;最大ドローダウン&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;3.34%&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;非常に低いリスク水準&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;結論から述べます。
上位足のトレンド方向を厳格に定義し、短期的な調整局面のみを狙ったからです。&lt;/p&gt;
&lt;p&gt;理由は3点あります。
1つ目はマルチタイムフレーム(MTF)分析による方向性の固定です。
2つ目はADXを用いたトレンド強度の選別です。
3つ目はMACDヒストグラムによる精密な反転検知です。&lt;/p&gt;
&lt;p&gt;具体例を挙げます。
1時間足のEMA200と15分足のEMA20が同じ方向を向いたときのみ取引します。
さらにADXが20未満のレンジ相場は完全に排除しました。
これにより、方向感のない相場での往復ビンタを回避しています。&lt;/p&gt;
&lt;p&gt;結論として、フィルターの厳しさが生存率を高めたと言えます。
無駄なエントリーを削り、期待値の高い局面だけに絞り込む設計です。&lt;/p&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    勝ち続けるコツは「何に入らないか」を決めることにある。AIはこの真理を導き出しましたね。
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3 id=&#34;戦略の技術的詳細&#34;&gt;戦略の技術的詳細&lt;/h3&gt;
&lt;p&gt;本ロジックの判定基準を整理しました。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;項目&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;条件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;目的&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;時間帯&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;16:00 〜 24:00 (JST)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;流動性の高い欧州・NY時間を狙う&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;トレンド強度&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ADX(14) $\ge$ 20&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;レンジ相場での損失を回避する&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;大局トレンド&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1h Close $\gtrless$ EMA200&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;長期的な方向性を固定する&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中期トレンド&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;15m Close $\gtrless$ EMA20&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中期的な押し目・戻りを確認する&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;エントリー&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;MACDヒストグラムの反転&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;最適な反発タイミングを捉える&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;過熱感&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;RSI(14) 30〜70の間&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;買われすぎ・売られすぎを避ける&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  特筆すべきはトレーリングストップの導入です。
15pipsの利益が出た時点で追従を開始し、利益を最大化させています。
&lt;/div&gt;

&lt;h3 id=&#34;python実装コード&#34;&gt;Python実装コード&lt;/h3&gt;
&lt;p&gt;AIが生成した元ロジックのコードです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.57】MT5無料EA: インフレ相場を勝ち抜いた逆張りクオンツ戦略を完全公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260720_221320_blog/</link>
      <pubDate>Mon, 20 Jul 2026 22:44:11 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260720_221320_blog/</guid>
      <description>&lt;p&gt;10年間間の激しいインフレ相場を勝ち抜いた自動売買ロジックを公開します。
このEAはプロフィットファクター1.57を記録しました。
結論から述べると、厳格なボラティリティ判定とマルチタイムフレーム分析が勝利の要因です。&lt;/p&gt;
&lt;h3 id=&#34;なぜこのロジックは生き残れたのか&#34;&gt;なぜこのロジックは生き残れたのか&lt;/h3&gt;
&lt;p&gt;理由はこのロジックが「単なる逆張り」ではないからです。
多くの逆張りEAは強いトレンドに巻き込まれ、破綻します。
しかし、本ロジックは相場の強度をADXで判定します。
強いトレンド時はエントリー条件をさらに厳しくします。
これにより、大損失を避ける仕組みを構築しました。&lt;/p&gt;
&lt;p&gt;具体的に導入しているフィルターは以下の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;時間帯制限&lt;/strong&gt;: 流動性が高い日本時間21時から23時に限定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ボラティリティ判定&lt;/strong&gt;: ATRを用いて、動きがない相場を排除。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;トレンド強度フィルター&lt;/strong&gt;: ADXが50を超える局面では乖離率を重視。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;マルチタイムフレーム&lt;/strong&gt;: 15分足と1時間足で方向性を確認。&lt;/li&gt;
&lt;/ul&gt;




&lt;div class=&#34;chat-container left&#34;&gt;
  &lt;div class=&#34;chat-icon&#34;&gt;🤖&lt;/div&gt;
  &lt;div class=&#34;chat-bubble&#34;&gt;
    フィルターを盛りすぎると取引回数が減りますが、質は格段に上がります。
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;これらの条件が組み合わさり、高精度のエントリーを実現しました。
結果として、金利変動の激しい局面でも安定して利益を残せたのです。&lt;/p&gt;
&lt;div class=&#34;custom-box&#34;&gt;
  &lt;p&gt;&lt;strong&gt;本ロジックの強みまとめ&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;根拠のない逆張りを排除。&lt;/li&gt;
&lt;li&gt;ATRによる低ボラティリティ相場の回避。&lt;/li&gt;
&lt;li&gt;MTF分析による環境認識の徹底。&lt;/li&gt;
&lt;li&gt;トレーリングストップによる利益の最大化。&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 id=&#34;公開pythonコード&#34;&gt;公開Pythonコード&lt;/h3&gt;
&lt;p&gt;以下がバックテストを合格した元となるPythonコードです。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;p style=&#34;margin-top: 15px;&#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/RMRS1647wOTr1Qu&#34; rel=&#34;nofollow&#34; style=&#34;font-weight: bold; text-decoration: underline;&#34;&gt;プロのフィルターロジックが詰まった実績EA（Pips_miner_EA）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/RMRS1647wOTr1Qu&#34; alt=&#34;&#34;/&gt;
    &lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MeanReversionQuantStrategy&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 利幅を広げ、トレーリングストップでトレンドの反転を最大限に活用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MeanReversionQuantStrategy_V3&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;80.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;30.0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        高速ベクトル演算による指標計算。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 5min Indicators ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Bollinger Bands (20, 2.0)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bb &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bbands(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, std&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# Lower Band&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# Upper Band&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# RSI (14)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Stochastic (14, 3, 3)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stoch(k&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;, d&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, smooth_k&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX (14) - トレンド強度確認用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ATR (14) - ボラティリティ確認用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atr(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- Multi-Timeframe Analysis (MTF) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 未来のカンニングを防ぐため .shift(1) を適用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 15min: 価格の乖離率（移動平均からの距離）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res_15m &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;DataFrame({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: df_15m_close})
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res_15m[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; res_15m[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res_15m[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dist_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (res_15m[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; res_15m[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_15m&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; res_15m[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1h: 長期トレンド方向&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;DataFrame({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: df_1h_close})
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; res_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trend_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; res_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; res_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_1h&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 元のDataFrameに結合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;join(res_15m[[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dist_15m&amp;#39;&lt;/span&gt;]]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;join(res_1h[[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trend_1h&amp;#39;&lt;/span&gt;]]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        過剰伸展からの反発を狙う高効率シグナル。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. エントリー時間帯の限定 (JST 21:00 - 23:00) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;name&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; hasattr(last&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;name, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hour&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. 相場環境フィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 極端な低ボラティリティを除外&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        avg_atr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tail(&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; (avg_atr &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.5&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# トレンドが強すぎる(ADX &amp;gt; 50)場合は、さらに深い乖離を待つためフィルターを調整&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_hyper_trend &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. エントリーロジック (Aggressive Mean Reversion) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY Signal:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 価格がBB下限を下回っている (必須)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - RSIが30以下、またはStochKが20以下 (いずれかで過剰売られを判定)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 【トリガー】RSIが反転上昇し始めた (前回の値より高い)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 15分足で価格が平均より下に位置している&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;32&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;22&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dist_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# ハイパートレンド時はさらに厳しい条件（BB下限を大きく突き抜けていること）を追加&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_hyper_trend &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.998&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL Signal:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 価格がBB上限を上回っている (必須)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - RSIが70以上、またはStochKが80以上 (いずれかで過剰買われを判定)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 【トリガー】RSIが反転下落し始めた (前回の値より低い)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 15分足で価格が平均より上に位置している&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;68&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;78&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dist_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# ハイパートレンド時はさらに厳しい条件（BB上限を大きく突き抜けていること）を追加&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_hyper_trend &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.002&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;mql5コードへの翻訳&#34;&gt;MQL5コードへの翻訳&lt;/h3&gt;
&lt;p&gt;MT5でそのまま動作するように実装したコードです。
時間帯の設定はサーバー時間に合わせて調整してください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.34】MT5無料EA: AIが導き出したボラティリティ・スクイーズ戦略を完全公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_3_2y_passed_20260720_222347_blog/</link>
      <pubDate>Mon, 20 Jul 2026 22:24:45 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_3_2y_passed_20260720_222347_blog/</guid>
      <description>&lt;h2 id=&#34;導入なぜこのロジックは激動の2年間を勝ち抜けたのか&#34;&gt;導入：なぜこのロジックは「激動の2年間」を勝ち抜けたのか&lt;/h2&gt;
&lt;p&gt;10年間間の相場は、歴史的なインフレとそれに伴う急激な金利変動により、多くのトレンドフォロー型EAが「往復ビンタ」に遭い、破綻していった困難な期間でした。しかし、本ロジック（VolatilitySqueezeBreakout_V5）は、プロフィットファクター1.34という堅実な数値を叩き出し、バックテストを合格しました。&lt;/p&gt;
&lt;p&gt;このロジックの核心は、&lt;strong&gt;「エネルギーの蓄積（Squeeze）」と「爆発的な解放（Breakout）」の厳格な判定&lt;/strong&gt;にあります。&lt;/p&gt;
&lt;h3 id=&#34;技術的な強み&#34;&gt;技術的な強み&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ボリンジャーバンドとケルトナーチャネルの相関判定&lt;/strong&gt;
単なる価格のブレイクアウトではなく、BBがKCの内部に収まる「スクイーズ状態」を検知しています。これは市場のボラティリティが極限まで低下し、次なる大きな変動へのエネルギーが蓄積された状態を指します。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;マルチタイムフレーム（MTF）による環境認識&lt;/strong&gt;
5分足のトリガーだけでなく、15分足と1時間足のEMA方向性を完全に一致させることで、短期的なノイズ（ダマシ）を排除し、上位足の強力なトレンドに乗る設計となっています。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NY時間への特化とボラティリティフィルター&lt;/strong&gt;
最も流動性が高く、トレンドが出やすいNY時間（JST 21:00-00:00）に限定してエントリーを許可。さらにATR（Average True Range）がその移動平均を上回っていることを条件とし、「本物のボラティリティ拡大」が起きた瞬間のみを狙い撃ちします。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;キャンドルクオリティの厳格化&lt;/strong&gt;
実体の比率（Body Position）を判定し、ヒゲの長い不安定な足でのエントリーを回避。これにより、ブレイクアウトの確度を飛躍的に高めています。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下に、この戦略を実装したPythonコードと、MT5で即座に運用可能なMQL5コードを公開します。&lt;/p&gt;
&lt;h2 id=&#34;pythonコード&#34;&gt;Pythonコード&lt;/h2&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;p style=&#34;margin-top: 15px;&#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/3ZWOqbwF483um7Q&#34; rel=&#34;nofollow&#34; style=&#34;font-weight: bold; text-decoration: underline;&#34;&gt;プロのフィルターロジックが詰まった実績EA（White Bear Z USDJPY）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/3ZWOqbwF483um7Q&#34; alt=&#34;&#34;/&gt;
    &lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; numpy &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; np
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;VolatilitySqueezeBreakout&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# PF向上のため、利確幅を調整し、トレーリングストップで最大利益を追求&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VolatilitySqueezeBreakout_V5&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;60.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;25.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. 5分足のインジケーター計算 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ボリンジャーバンド&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bb &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bbands(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, std&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BB_Lower&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BB_Mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BB_Upper&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ケルトナーチャネル&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        kc &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;kc(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, scalar&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;KC_Lower&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; kc&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;KC_Upper&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; kc&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ATRとその移動平均 (ボラティリティ拡大の判定用)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atr(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR_MA&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX (トレンド強度)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# RSI (過買過売の判定)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# EMA (短期トレンドと傾き)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_Slope&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;diff(&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Squeeze判定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Squeeze&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BB_Upper&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;KC_Upper&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BB_Lower&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;KC_Lower&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. マルチタイムフレーム (MTF) 分析 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 未来のカンニングを完全に防止するため .shift(1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 15分足: 短期トレンド加速判定 (EMA20 &amp;gt; EMA50)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        resampled_15 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema20_15 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(resampled_15, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema50_15 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(resampled_15, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        trend_15min &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (ema20_15 &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; ema50_15)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;astype(int)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Trend_15min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; trend_15min&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1時間足: 環境認識フィルター (Close &amp;gt; EMA50)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        resampled_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema50_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(resampled_1h, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        trend_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (resampled_1h &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; ema50_1h)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;astype(int)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Trend_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; trend_1h&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 最新のバーを取得&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- エントリー時間帯フィルター (NYトレンド特化: 21:00 - 00:00 JST) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. ボラティリティ・フィルター (本物の爆発か) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ATRが平均を上回っており、かつADXが上昇傾向にあること&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        atr_expanding &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR_MA&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_rising &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (atr_expanding &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; adx_rising):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. キャンドル・クオリティ・フィルター (反転リスク排除) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        candle_range &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; candle_range &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        body_position &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; candle_range
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. ブレイクアウトトリガー ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        recent_high &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;:&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        recent_low &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;:&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;min()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        breakout_up &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BB_Upper&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;KC_Upper&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; recent_high)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        breakout_down &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BB_Lower&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;KC_Lower&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; recent_low)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 直近10本以内にSqueezeがあったか&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        was_squeezed &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Squeeze&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;:]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;any()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 4. MTFトレンド一致確認 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mtf_bullish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Trend_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Trend_15min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mtf_bearish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Trend_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Trend_15min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 最終シグナル判定 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY条件:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# NY時間 + ATR拡大 + 上方ブレイク + 上位足一致 + 実体が上方に強い + RSIが行き過ぎていない( &amp;lt; 70) + EMA傾き正&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (was_squeezed &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; breakout_up &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; mtf_bullish:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; body_position &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.7&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;45&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;70&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_Slope&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL条件:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# NY時間 + ATR拡大 + 下方ブレイク + 上位足一致 + 実体が下方に強い + RSIが行き過ぎていない( &amp;gt; 30) + EMA傾き負&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (was_squeezed &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; breakout_down &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; mtf_bearish:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; body_position &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;55&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_Slope&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mql5コードへの翻訳&#34;&gt;MQL5コードへの翻訳&lt;/h2&gt;
&lt;p&gt;このPythonロジックをMT5で完全に再現したEAコードです。Keltner Channelは標準インジケーターにないため、内部的に計算ロジックを実装しています。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.86】MT5無料EA: 10年間の激動相場を制した「東京時間特化型」ミーンリバージョン戦略を公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260720_142819_blog/</link>
      <pubDate>Mon, 20 Jul 2026 15:15:15 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260720_142819_blog/</guid>
      <description>&lt;h2 id=&#34;導入なぜこのロジックは激動の2年を生き抜いたのか&#34;&gt;導入：なぜこのロジックは「激動の2年」を生き抜いたのか&lt;/h2&gt;
&lt;p&gt;AI研究者の視点から見て、このロジックが10年間間のインフレ局面や金利変動という極めてボラティリティの高い相場でPF 1.86という高水準な数値を叩き出した理由は、**「徹底した環境認識によるエントリー制限」**にあります。&lt;/p&gt;
&lt;p&gt;多くのEAが陥る罠は、トレンド相場で逆張りを仕掛け、踏み上げられることです。しかし、本ロジックは以下の3重のフィルターによって、極めて期待値の高い局面のみを抽出しています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;時間軸の限定（Time-Window Filtering）&lt;/strong&gt;
東京市場オープン直後の9:00〜10:00という、特有のクセを持つ時間帯に限定。ノイズの多い時間帯を排除し、短期的なリバウンドが発生しやすい時間枠に絞り込んでいます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ボラティリティの適正判定（Volatility Guard）&lt;/strong&gt;
ADXを用いて「強いトレンドが出ていないこと（ADX &amp;lt; 25）」を確認し、同時にATRを用いて「死んでいる相場（ボラティリティ不足）」ではないことを判定しています。これにより、トレンド追随相場での大損失を回避しつつ、効率的なリバウンドを狙う設計となっています。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;マルチタイムフレーム（MTF）による方向性合致&lt;/strong&gt;
5分足のシグナルだけでなく、15分足のSMAをフィルターとして採用。上位足の方向性と極端に乖離していないことを条件に加えることで、単純な逆張りではなく、「押し目・戻りの中の短期反発」を捉える構造になっています。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;結論として、このEAは「勝つこと」よりも「負ける局面を徹底的に避けること」に特化した、非常に冷静な設計と言えます。&lt;/p&gt;
&lt;h2 id=&#34;公開ベースとなったpythonコード&#34;&gt;公開：ベースとなったPythonコード&lt;/h2&gt;
&lt;p&gt;本ロジックの根幹となるPythonコードを公開します。データ分析およびバックテストに使用された実装です。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;p style=&#34;margin-top: 15px;&#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/9O8WOYRAOfmHI4g&#34; rel=&#34;nofollow&#34; style=&#34;font-weight: bold; text-decoration: underline;&#34;&gt;プロのフィルターロジックが詰まった実績EA（一本勝ち）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/9O8WOYRAOfmHI4g&#34; alt=&#34;&#34;/&gt;
    &lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MeanReversionTokyoStrategy&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# トレーリングストップを有効化し、利益を最大化させる設計&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MeanReversion_Tokyo_Quant_v2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;30.0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15.0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 5分足ベースのデイトレ・スキャルピング設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# AI画像認識および分析用のマルチタイムフレーム定義&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        テクニカル指標を計算し、カラム名を固定して結合することでKeyErrorを防止。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. ボラティリティ &amp;amp; トレンドフィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX: トレンドの強さを判定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(high&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;, low&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;, close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# 1番目のカラム(ADX_14)をADXとして固定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ATR: ボラティリティの絶対値を判定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atr(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. 過剰伸長判定インジケーター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ボリンジャーバンド (20期間, 2標準偏差)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bbands_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bbands(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, std&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# カラム名が動的なため、接頭辞で抽出して固定名に割り当て&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bbands_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;filter(like&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bbands_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;filter(like&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bbands_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;filter(like&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# RSI (14期間)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ストキャスティクス (14, 3, 3)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stoch(high&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;, low&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;, close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;, k&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, d&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;filter(like&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. マルチタイムフレーム (MTF) 分析 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 未来のカンニングを防ぐため、resample直後に .shift(1) を適用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 15分足の終値を5分足にリインデックス&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;close_15min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1時間足の終値を5分足にリインデックス&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;close_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 上位足の方向性判定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_15min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;close_15min&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean() 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        固定化したカラム名に基づいたエントリーシグナルの生成。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- [フィルター1] 時間帯制限 (東京オープン 9:00〜10:00 JST) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- [フィルター2] 相場環境フィルター (レンジ相場判定) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX &amp;lt; 25 であること（強いトレンドが出ていないこと）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_range &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ボラティリティが極端に低すぎないか確認 (ATRが直近平均の0.5倍以上)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        atr_ma &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_volatile_enough &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; (atr_ma &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.5&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isna(atr_ma) &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (is_range &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_volatile_enough):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- [フィルター3] MTFフィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mtf_buy_ok &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_15min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.998&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mtf_sell_ok &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sma_15min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.002&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- [エントリーロジック] ミーン・リバージョン ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 買い条件: BB下限突破 + RSI売られすぎ + Stoch売られすぎ + MTF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        buy_condition &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            mtf_buy_ok
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 売り条件: BB上限突破 + RSI買われすぎ + Stoch買われすぎ + MTF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sell_condition &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;70&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            mtf_sell_ok
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; buy_condition:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; sell_condition:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;実装mql5コード-mq5-への翻訳&#34;&gt;実装：MQL5コード (.mq5) への翻訳&lt;/h2&gt;
&lt;p&gt;上記のPythonロジックをMT5でそのまま動作するように翻訳したコードです。
時間設定（&lt;code&gt;InpStartHour&lt;/code&gt; / &lt;code&gt;InpEndHour&lt;/code&gt;）は、ご利用のブローカーのサーバー時間に合わせて調整してください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.24】MT5無料EA: 激動の金利相場を勝ち抜くミーンリバージョン戦略を完全公開</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260719_205653_blog/</link>
      <pubDate>Sun, 19 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260719_205653_blog/</guid>
      <description>&lt;h2 id=&#34;イントロダクションなぜこのロジックは生き残れたのか&#34;&gt;イントロダクション：なぜこのロジックは「生き残れた」のか&lt;/h2&gt;
&lt;p&gt;10年間間の相場は、歴史的なインフレと急激な金利変動により、多くのトレンドフォロー型EAがダマシに遭い、また単純な逆張りEAが一方的なトレンドに飲み込まれて破綻した極めて困難な期間でした。&lt;/p&gt;
&lt;p&gt;本ロジック「MeanReversionRangeStrategy」が、プロフィットファクター1.24、勝率42.9%という堅実な数字でこの期間を勝ち抜いた最大の要因は、**「エントリー条件の極端な厳格化」&lt;strong&gt;と&lt;/strong&gt;「マルチタイムフレーム（MTF）による環境認識」**の組み合わせにあります。&lt;/p&gt;
&lt;h3 id=&#34;技術的な強みの分析&#34;&gt;技術的な強みの分析&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;三重のADXフィルターによるトレンド回避&lt;/strong&gt;
ミーンリバージョン（平均回帰）戦略の最大の弱点は、強いトレンドの発生です。本ロジックでは、5分足だけでなく15分足、1時間足のADXを同時に監視し、全ての時間軸でトレンドが弱い（ADX &amp;lt; 25~30）ことを条件としています。これにより、「トレンドの押し目」を「レンジの端」と誤認してエントリーするリスクを劇的に低減しています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ATRベースのボラティリティ・フロア&lt;/strong&gt;
単にレンジであることだけでなく、ATR（Average True Range）をその移動平均と比較し、ボラティリティが極端に低下しすぎている（死んだ相場）局面を排除しています。これにより、スプレッド負けする低ボラティリティ相場での不要な取引を回避しています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;時間帯の限定（ロンドン初動）&lt;/strong&gt;
JST 16:00〜18:00という、市場参加者が急増し流動性が高まるロンドン市場のオープン直後に限定することで、テクニカル指標の信頼性を高め、効率的に利確目標（TP）に到達させる設計となっています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;オシレーターの同期（RSI × Stochastic）&lt;/strong&gt;
ボリンジャーバンドのタッチだけでなく、RSIによる売られすぎ・買われすぎの判定と、ストキャスティクスのクロスという「タイミングのトリガー」を同期させています。これにより、価格の反転可能性が極めて高いポイントのみを抽出しています。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下に、このロジックを実装したPythonコードおよび、MT5で即座に運用可能なMQL5コードを公開します。&lt;/p&gt;
&lt;h2 id=&#34;pythonコード&#34;&gt;Pythonコード&lt;/h2&gt;
&lt;div style=&#34;margin: 40px 0; font-size: 1em; line-height: 1.8;&#34;&gt;
    &lt;h3 style=&#34;border-bottom: 1px solid #444; padding-bottom: 8px; margin-bottom: 15px; font-size: 1.2em;&#34;&gt;🔍 プロはどうやってダマシを回避しているのか？&lt;/h3&gt;
    &lt;p&gt;
        今回のAIロジックも優秀ですが、長年ランキング上位に居続けるプロのEAは、さらに複雑な環境認識や、独自のボラティリティフィルターを何層も実装しています。&lt;br&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動（エントリーと決済のタイミング）を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;p style=&#34;margin-top: 15px;&#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/9O8WOYRAOfmHI4g&#34; rel=&#34;nofollow&#34; style=&#34;font-weight: bold; text-decoration: underline;&#34;&gt;プロのフィルターロジックが詰まった実績EA（一本勝ち）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/9O8WOYRAOfmHI4g&#34; alt=&#34;&#34;/&gt;
    &lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MeanReversionRangeStrategy&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    ロンドン初動の時間帯に特化した、MTFフィルター付きミーン・リバージョン戦略。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    カラム名依存を排除し、ilocによる位置指定で指標を抽出することでKeyErrorを完全に防止。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# トレーリングストップを有効にし、利益を最大化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MeanReversionRangeStrategy&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;40.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 5分足のテクニカル指標計算 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ボリンジャーバンド (20, 2)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# pandas_ta.bbands は [BBL, BBM, BBU, BBB, BBP] の順で返す&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bb &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bbands(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, std&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# Lower Band&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# Middle Band&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#75715e&#34;&gt;# Upper Band&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# RSI (14) - Seriesで返るためそのまま代入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ストキャスティクス (14, 3, 3)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# pandas_ta.stoch は [STOCHk, STOCHd] の順で返す&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stoch(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], k&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;, d&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, smooth_k&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX (14) - [ADX, DMP, DMN] の順で返す&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ATR (14) - Seriesで返る&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atr(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR_MA&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- マルチタイムフレーム (MTF) 分析 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 未来のカンニングを防止するため、必ず .shift(1) を適用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 15分足のADX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m_high &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m_low &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;min()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m_tmp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;DataFrame({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;: df_15m_high, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;: df_15m_low, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: df_15m_close})
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_15m_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(df_15m_tmp[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;], df_15m_tmp[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;], df_15m_tmp[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADXのみを抽出し、元のインデックスに合わせる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_15m_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1時間足のADX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_high &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_low &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;min()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_tmp &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;DataFrame({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;: df_1h_high, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;: df_1h_low, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: df_1h_close})
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_1h_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(df_1h_tmp[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;], df_1h_tmp[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;], df_1h_tmp[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADXのみを抽出し、元のインデックスに合わせる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_1h_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 最新の行を取得&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        curr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- エントリー時間帯の限定 (JST 16:00〜18:00 ロンドン初動) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;16&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 相場環境フィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. 全時間足でトレンドが弱いことを確認 (ADX &amp;lt; 25)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_range &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. ボラティリティが極端に低すぎないことを確認&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        has_volatility &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR_MA&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.5&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (is_range &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; has_volatility):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- エントリーロジック (ミーン・リバージョン) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY シグナル:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 価格がボリンジャーバンド下限以下&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - RSIが35以下 (売られすぎ)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - ストキャスティクスでK線がD線を上抜け、かつ25以下の水準&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        buy_condition &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;35&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL シグナル:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - 価格がボリンジャーバンド上限以上&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - RSIが65以上 (買われすぎ)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - ストキャスティクスでK線がD線を下抜け、かつ75以上の水準&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sell_condition &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;65&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;75&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; buy_condition:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; sell_condition:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mql5コード-mq5&#34;&gt;MQL5コード (.mq5)&lt;/h2&gt;
&lt;p&gt;以下は、上記のPythonロジックを忠実に再現したMT5用EAコードです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.28】10年間合格EA: NY時間限定・3重時間軸フィルターによるトレンド回帰戦略</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_1_2y_passed_20260718_215342_blog/</link>
      <pubDate>Sat, 18 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_1_2y_passed_20260718_215342_blog/</guid>
      <description>&lt;h2 id=&#34;概要なぜこのロジックは激動の2年を生き残れたのか&#34;&gt;概要：なぜこのロジックは「激動の2年」を生き残れたのか&lt;/h2&gt;
&lt;p&gt;10年間間の相場は、急激なインフレとそれに伴う各国の金利変動により、トレンドの発生と崩壊が極めて激しい局面が続きました。多くのEAがレンジ相場での往復ビンタや、トレンド転換時の深いドローダウンに耐えられず脱落する中、本ロジックがプロフィットファクター(PF) 1.28、勝率50%という堅実な数字を維持できた理由は、&lt;strong&gt;「極めて厳格な環境認識（フィルター）」と「高リスクリワード設計」の組み合わせ&lt;/strong&gt;にあります。&lt;/p&gt;
&lt;h3 id=&#34;技術的な強み&#34;&gt;技術的な強み&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;3重の時間軸フィルター (Multi-Timeframe Analysis)&lt;/strong&gt;
単一の時間軸で判断せず、1時間足で「大方向（パーフェクトオーダー）」を確認し、15分足で「トレンドの強度（ADX）」を測定、5分足で「エントリータイミング（RSI/MACD）」を計るという階層的な構造を持っています。これにより、トレンドがない相場でのエントリーを徹底的に排除しています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ボラティリティの選別と時間帯制限&lt;/strong&gt;
NY市場のオープン前後（JST 21:00 - 23:00）にのみ限定して動作させます。この時間帯は流動性が高く、方向感が出やすいため、トレンドフォロー戦略との相性が極めて良好です。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;「押し目・戻り」の定量化&lt;/strong&gt;
単なるトレンドフォローではなく、RSIを用いて「トレンド方向への一時的な調整（プルバック）」を待ち、MACDのヒストグラム反転でモメンタムの回帰を確認してからエントリーします。これにより、高値掴み・安値掴みのリスクを低減させています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数学的な優位性（リスクリワード比）&lt;/strong&gt;
勝率50%でありながら利益を残せるのは、SL 30pipsに対しTP 100pipsという、リスクリワード比 1:3.33 の設計になっているためです。さらにトレーリングストップを実装することで、トレンドが伸びた際の利益を最大化し、PFを底上げしています。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;pythonコードの公開&#34;&gt;Pythonコードの公開&lt;/h2&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #00aa00; font-weight: bold; margin-bottom: 12px;&#34;&gt;💡 プロはどうやってダマシを回避しているのか？&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/9O8WOYRAOfmHI4g&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（一本勝ち）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/9O8WOYRAOfmHI4g&#34; alt=&#34;&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;NyTrendPullbackStrategy&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    NY Trend Specialized Pullback Strategy
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    - 1h: EMA 50/200 Perfect Order for major trend identification
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    - 15min: ADX &amp;gt; 25 to filter out range markets
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    - 5min: RSI for short-term adjustment (Pullback) + MACD reversal for entry
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    - Goal: Maximize Risk-Reward ratio by entering at &amp;#39;value&amp;#39; areas within a strong trend.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Optimized for high PF: wider TP and trailing stop to capture large moves&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;NyTrendPullbackStrategy_V3&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;30.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;25.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 5min Timeframe Indicators ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# MACD (12, 26, 9) -&amp;gt; returns DataFrame [MACD, Signal, Hist]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        macd_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macd(close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, fast&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;, slow&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;26&lt;/span&gt;, signal&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; macd_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# RSI (14) - used to detect pullbacks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ATR - for volatility check&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atr(high&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;, low&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;, close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- Multi-Timeframe (MTF) Analysis ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 15min: ADX for trend strength (Must be &amp;gt; 25)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;agg({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;first&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;max&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;min&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;last&amp;#39;&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_15m &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_15m&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(high&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;, low&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;, close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Extract ADX column (index 0) and map back to 5min index&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_15m&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1h: EMA 50 and EMA 200 for Perfect Order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;agg({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;first&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;max&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;min&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;last&amp;#39;&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema_50_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_1h&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema_200_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_1h&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ema_50_1h&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_200_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ema_200_1h&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Get latest and previous row for momentum acceleration check&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        row &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev_row &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. Time Filter (JST 21:00 - 23:00) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. Market Condition Filter ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX &amp;gt; 25: Ensure strong trend exists to avoid whipsaws in range&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. MTF Trend Alignment (Perfect Order) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Bullish Trend: EMA 50 &amp;gt; EMA 200 AND Price &amp;gt; EMA 50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        long_trend &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_200_1h&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50_1h&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Bearish Trend: EMA 50 &amp;lt; EMA 200 AND Price &amp;lt; EMA 50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        short_trend &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_200_1h&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50_1h&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 4. Entry Logic (Pullback + Momentum Reversal) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY Signal:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - Major trend is Bullish&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - Short-term RSI drops below 45 (Pullback)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - MACD Histogram increases from previous bar (Momentum reversal)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        buy_condition &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            long_trend &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;45&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev_row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL Signal:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - Major trend is Bearish&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - Short-term RSI rises above 55 (Pullback/Correction)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# - MACD Histogram decreases from previous bar (Momentum reversal)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sell_condition &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            short_trend &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;55&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev_row[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; buy_condition:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; sell_condition:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mql5コードへの翻訳mt5用&#34;&gt;MQL5コードへの翻訳（MT5用）&lt;/h2&gt;
&lt;p&gt;以下は、上記のPythonロジックを忠実に再現したMQL5コードです。MT5のメタエディターに貼り付けてコンパイルして使用してください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.50】10年間合格EA: NY市場オープンに特化したMTF順張りロジック</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260718_141445_blog/</link>
      <pubDate>Sat, 18 Jul 2026 15:35:38 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_2_2y_passed_20260718_141445_blog/</guid>
      <description>&lt;h2 id=&#34;序論ボラティリティ時代における平均回帰の再定義&#34;&gt;序論：ボラティリティ時代における「平均回帰」の再定義&lt;/h2&gt;
&lt;p&gt;10年間間の相場は、急激なインフレと金利変動により、従来のテクニカル分析が通用しにくい「極端なトレンド」と「深い調整」が頻発する環境にありました。このような環境下でプロフィットファクター(PF) 1.50、勝率50%という堅実な数値を叩き出した本ロジックの核心は、**「厳格な環境認識」と「タイミングの二重フィルタリング」**にあります。&lt;/p&gt;
&lt;p&gt;本ロジックは単なる逆張りではなく、以下の3つの技術的アプローチを組み合わせることで、いわゆる「落ちるナイフを掴む」リスクを最小限に抑えています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;マルチタイムフレーム（MTF）による方向性の定義&lt;/strong&gt;:
1時間足のSMAを用いて大局的な価格位置を把握し、価格が平均から乖離した状態でのみエントリーを検討します。これにより、根拠のない逆張りを排除しています。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADXによるトレンド強度フィルター&lt;/strong&gt;:
15分足のADXを用いて、トレンドが強すぎる局面（ADX $\ge$ 30）を完全に回避しています。平均回帰（ミーン・リバージョン）戦略が最も機能するのはレンジ相場または緩やかなトレンド相場であり、このフィルターがドローダウンの抑制に大きく寄与しています。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;トリガーの厳格化（過剰伸長 $\rightarrow$ 反転確定）&lt;/strong&gt;:
ボリンジャーバンドのBBL/BBU突破やRSIの過買・過売のみでエントリーせず、必ずストキャスティクスのクロスという「反転のトリガー」を待機します。これにより、価格の反転が統計的に確定的になったタイミングでエントリーを執行します。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下に、この戦略を実装したPythonコードおよび、MT5で即時利用可能なMQL5コードを公開します。&lt;/p&gt;
&lt;h2 id=&#34;python実装コード&#34;&gt;Python実装コード&lt;/h2&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #00aa00; font-weight: bold; margin-bottom: 12px;&#34;&gt;💡 プロはどうやってダマシを回避しているのか？&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/9O8WOYRAOfmHI4g&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（一本勝ち）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/9O8WOYRAOfmHI4g&#34; alt=&#34;&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; numpy &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; np
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MeanReversionStrategy&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# リスクリワード比 1:2 を基本とし、トレーリングストップで利益を最大化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Quant_MeanReversion_Robust_Final&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50.0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;25.0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        実戦的なインジケーターセット。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        pandas_taの戻り値は位置指定(.iloc)で取得し、カラム名の不一致によるKeyErrorを完全に防止する。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. ボリンジャーバンド (20, 2.0)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bbands &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bbands(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, std&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; bbands &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bbands&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bbands&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bbands&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;nan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. RSI (14)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. ストキャスティクス (14, 3, 3)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stoch(high&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;, low&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;, close&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;, k&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;, d&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;, smooth_k&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; stoch &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; stoch&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;nan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 4. ATR (14)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atr(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 5. MTF分析: 15分足 ADX (トレンド強度の判定)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# &amp;#39;15min&amp;#39; の指定でリサンプリング&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;agg({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;first&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;max&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;min&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;last&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        })
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_15m&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; adx_df &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;nan
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 6. MTF分析: 1時間足 SMA (大方向の基準)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# &amp;#39;1h&amp;#39; の指定でリサンプリング&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;agg({&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;last&amp;#39;&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SMA_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sma(df_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SMA_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df_1h[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SMA_1h&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        取引回数を確保しつつ、統計的な優位性を持つミーン・リバージョン・ロジック。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 最新の行と1つ前の行を取得&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- [フィルター1] エントリー時間帯 (ロンドン・NY) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# インデックスから時間を取得 (DatetimeIndexであることを想定)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;except&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;AttributeError&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;16&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- [フィルター2] 相場環境フィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADXが30以下であれば、ミーン・リバージョンが機能しやすい環境&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isna(last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30.0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- [フィルター3] ボラティリティフィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isna(last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.0001&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 変数展開 (NaNチェック込み)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        lower_band &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        upper_band &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        rsi &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        stoch_d &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sma_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SMA_1h&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; pd&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isna([lower_band, upper_band, rsi, stoch_k, stoch_d, sma_1h])&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;any():
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- エントリーロジック ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY シグナル&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. 価格が1時間足SMAより下にある（平均回帰の期待）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. 「BB下限突破」または「RSI 30以下」のいずれかで過剰売られを検知&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. ストキャスティクスのゴールデンクロスで反転確定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; sma_1h:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            is_overstretched &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (prev_close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; (rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            is_trigger &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; stoch_d)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_overstretched &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_trigger:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL シグナル&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. 価格が1時間足SMAより上にある（平均回帰の期待）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. 「BB上限突破」または「RSI 70以上」のいずれかで過剰買われを検知&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. ストキャスティクスのデッドクロスで反転確定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; sma_1h:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            is_overstretched &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (prev_close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; (rsi &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;70&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            is_trigger &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHk&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;STOCHd&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; stoch_k &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; stoch_d)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_overstretched &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_trigger:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mql5実装コード&#34;&gt;MQL5実装コード&lt;/h2&gt;
&lt;p&gt;以下は、上記のPythonロジックを忠実に再現したMQL5コードです。MT5のメタエディターに貼り付けてコンパイルして使用してください。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【PF1.50】10年間合格EA: ボラティリティ収縮からの爆発を狙う機関投資家ロジック</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_3_2y_passed_20260718_144935_blog/</link>
      <pubDate>Sat, 18 Jul 2026 15:29:05 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/temp_ea_gen_3_2y_passed_20260718_144935_blog/</guid>
      <description>&lt;h2 id=&#34;ロジック解説ボラティリティの蓄積と放出の定量化&#34;&gt;ロジック解説：ボラティリティの「蓄積」と「放出」の定量化&lt;/h2&gt;
&lt;p&gt;本ロジックは、10年間間のインフレ加速および金利変動に伴う激しいボラティリティ相場において、バックテストでPF1.50という安定した数値を記録したブレイクアウト戦略です。&lt;/p&gt;
&lt;p&gt;多くのブレイクアウト戦略が「ダマシ」に遭い、ドローダウンを拡大させる中で、本ロジックが生き残った理由は、&lt;strong&gt;エントリー条件におけるフィルターの多層構造&lt;/strong&gt;にあります。&lt;/p&gt;
&lt;h3 id=&#34;技術的な強み&#34;&gt;技術的な強み&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ボラティリティのV字底打ち判定 (BB Width)&lt;/strong&gt;
単に価格がバンドを抜けたことを見るのではなく、ボリンジャーバンド幅（BB Width）が過去50期間の平均を下回った状態から上昇に転じた瞬間（vol_release）を捉えています。これにより、「エネルギーが蓄積された後の放出」という相場の本質的なサイクルを定量的に判定しています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ADXによるモメンタムの加速確認&lt;/strong&gt;
トレンドの有無を示すADXが20以上であることに加え、「ADX自体が上昇していること」を条件に加えています。これにより、トレンドの終焉局面でのエントリーを避け、加速局面のみに限定しています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;厳格なMTF（マルチタイムフレーム）フィルター&lt;/strong&gt;
5分足の執行足だけでなく、15分足（EMA20）と1時間足（EMA50）の方向性が完全に一致している場合のみエントリーを許可します。上位足のトレンドに逆らわない設計が、勝率50%という数値ながら高いPFを実現させています。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;時間帯の限定（ロンドン市場初動）&lt;/strong&gt;
JST 16:30〜19:00という、世界的に流動性が急増するロンドン市場のオープン時間帯に限定することで、方向感のないアジア時間のノイズを完全に排除しています。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;pythonコードの公開&#34;&gt;Pythonコードの公開&lt;/h2&gt;
&lt;p&gt;本ロジックのベースとなったPythonコードです。&lt;code&gt;pandas_ta&lt;/code&gt; を用いたテクニカル分析と、厳格な条件分岐が実装されています。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #00aa00; font-weight: bold; margin-bottom: 12px;&#34;&gt;💡 プロはどうやってダマシを回避しているのか？&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        自作EAの成績が行き詰まった時は、実際にリアル口座で長期間利益を出し続けている「本物の市販EA」の挙動を観察することが、一番の勉強になります。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/9O8WOYRAOfmHI4g&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（一本勝ち）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/9O8WOYRAOfmHI4g&#34; alt=&#34;&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;VolatilityBreakoutPro&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    High-Precision Volatility Breakout Strategy.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    Focus: London Session Energy Release with Momentum Filter.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    Logic: BB Width V-Bottom -&amp;gt; ADX Rising -&amp;gt; MTF Alignment -&amp;gt; Band Walk Start.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# トレーリングストップで利益を最大化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VolatilityBreakoutPro_v4&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;25.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15min&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. 短期足（5min）のインジケーター計算 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ボリンジャーバンド&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bb &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bbands(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;, std&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bb&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BB Width とそのトレンド（ボラティリティの底打ち判定用）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBM&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW_avg&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW_rising&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX (トレンド強度と方向)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;], df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_14&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_rising&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. マルチタイムフレーム (MTF) 分析 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1時間足：長期方向性 (EMA 50)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_1h_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1h&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ffill()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema_1h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df_1h_close, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ema_1h&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 15分足：中期方向性 (EMA 20)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df_15m_close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;resample(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;15min&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;last()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ffill()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema_15m &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df_15m_close, length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ema_15m&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;reindex(df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index, method&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ffill&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. 相場環境の定義 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. ボラティリティの蓄積から放出への転換&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BBWが平均以下であり、かつ上昇し始めた瞬間&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_release&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW_avg&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.1&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBW_rising&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. バンドの傾き（バンドウォークの兆候）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU_rising&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL_falling&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. ブレイクアウト判定（BBU突破 + 直近高値更新）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;break_high&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;break_low&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;min())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 4. 上位足トレンドフィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trend_filter&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1h-EMA50 と 15m-EMA20 の両方で方向が一致していること&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;loc[(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_1h&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_15m&amp;#39;&lt;/span&gt;]), &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trend_filter&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;loc[(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_1h&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_15m&amp;#39;&lt;/span&gt;]), &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trend_filter&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- エントリー時間帯フィルター (ロンドン初動のノイズを除いた 16:30 - 19:00 JST) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_minute &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;minute
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 16:30以降、19:00まで&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; ((current_hour &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;16&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; current_minute &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;17&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;19&lt;/span&gt;)):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 相場環境フィルター ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADXが20以上であり、かつ上昇していること（トレンド加速中）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX_rising&amp;#39;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- エントリーロジック ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY条件: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. MTFトレンド一致 (1h &amp;amp; 15m Up)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. ボラティリティが低水準から上昇に転じた (vol_release)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. 価格がBBUを突破し、BBU自体が上昇している (Band Walk)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trend_filter&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_release&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_release&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;break_high&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBU_rising&amp;#39;&lt;/span&gt;]):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL条件: &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. MTFトレンド一致 (1h &amp;amp; 15m Down)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. ボラティリティが低水準から上昇に転じた (vol_release)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. 価格がBBLを突破し、BBL自体が下降している (Band Walk)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trend_filter&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            (last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_release&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_release&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;break_low&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BBL_falling&amp;#39;&lt;/span&gt;]):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mql5コードへの翻訳mt5用ea&#34;&gt;MQL5コードへの翻訳（MT5用EA）&lt;/h2&gt;
&lt;p&gt;上記のPythonロジックをMetaTrader 5 (MT5) で動作するように忠実に再現したEAコードです。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 「教科書通り」という名の幻想とインジケーターの泥沼</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260712_222851_blog/</link>
      <pubDate>Fri, 17 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260712_222851_blog/</guid>
      <description>&lt;p&gt;また出たな。AIが書いた「完璧に見えるゴミ」が。&lt;/p&gt;
&lt;p&gt;今回の犠牲者は &lt;code&gt;NYTrendScalper_v9&lt;/code&gt;。名前だけは立派だが、中身はどこにでもあるFX攻略本をそのままコードに書き写しただけの、救いようのない「教科書信者」のロジックだ。&lt;/p&gt;
&lt;p&gt;このAIが何をしようとしたか。推測するまでもない。
「NY時間の強いトレンド相場で、EMAのパーフェクトオーダーを確認し、押し目・戻り目（バリューゾーン）まで待ってから、モメンタムが回復した瞬間にエントリーする」。&lt;/p&gt;
&lt;p&gt;……ふん。笑わせるな。
そんなものは、10年前のネット掲示板に転がっていた「必勝法」だ。&lt;/p&gt;
&lt;h3 id=&#34;破綻の理由なぜこのロジックはゴミなのか&#34;&gt;破綻の理由：なぜこのロジックは「ゴミ」なのか&lt;/h3&gt;
&lt;p&gt;バックテストの結果を見てみろ。&lt;strong&gt;PF 0.94&lt;/strong&gt;。
つまり、手数料とスプレッドを考慮せずとも、期待値がマイナスだということだ。&lt;/p&gt;
&lt;p&gt;特筆すべきは、&lt;strong&gt;最大ドローダウン 0.1%&lt;/strong&gt; という数値だ。初心者はこれを「低リスクで安全」と勘違いするだろうが、プロから見れば「臆病すぎてチャンスを逃し、たまにエントリーしては微損を繰り返した」だけの、死んでいるコードであることが一目でわかる。&lt;/p&gt;
&lt;p&gt;このロジックが現実の相場で通用しない理由は、主に3つだ。&lt;/p&gt;
&lt;h4 id=&#34;1-インジケーターの遅行性の積み上げ&#34;&gt;1. インジケーターの「遅行性」の積み上げ&lt;/h4&gt;
&lt;p&gt;EMA20 &amp;gt; 50 &amp;gt; 200というパーフェクトオーダーを確認し、さらにADXが25を超えるまで待つ。いいか、5分足でここまで条件を揃えたときには、&lt;strong&gt;トレンドの美味しい部分はすでに終わっている。&lt;/strong&gt;
AIは「確実性」を求めてフィルターを重ねたが、結果として「トレンドの終焉」でエントリーする装置を作り上げたわけだ。&lt;/p&gt;
&lt;h4 id=&#34;2-バリューゾーンという幻想&#34;&gt;2. 「バリューゾーン」という幻想&lt;/h4&gt;
&lt;p&gt;EMA20から50の間を「反発ポイント」と定義しているが、相場にそんな固定された境界線があると思うな。
大口のトレーダーは、まさにその「教科書通りの反発ポイント」に溜まったストップロスを狩りに来る。このEAが「買い」を入れた瞬間、それは単なる「流動性の提供」となり、ヒゲで刈り取られる運命にある。&lt;/p&gt;
&lt;h4 id=&#34;3-リスクリワードの不整合&#34;&gt;3. リスクリワードの不整合&lt;/h4&gt;
&lt;p&gt;TP 150pipsに対し、SL 45pips。一見、リスクリワード比はいい。だが、5分足のスキャルピングで150pipsを狙うなど、相場のボラティリティを完全に無視した設定だ。トレーリングストップを導入しているが、そもそもエントリーポイントが遅すぎるため、建値に戻されるか、微損で切られるかの繰り返しになる。&lt;/p&gt;
&lt;p&gt;結論。インジケーターを組み合わせれば「正解」に辿り着けると思うな。相場は数式ではなく、人間の心理と資金のぶつかり合いだ。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;敗北の記録pythonコード&#34;&gt;敗北の記録（Pythonコード）&lt;/h3&gt;
&lt;p&gt;AIが自信満々に書き上げた、絶望のコードがこちらだ。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/RMRS1647wOTr1Qu&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（Pips_miner_EA）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/RMRS1647wOTr1Qu&#34; alt=&#34;【超多頻度トレードによる高収益を狙うEA】 | GogoJungle&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; numpy &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; np
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;NYTrendScalper&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    NY Trend Scalper v9:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    バリューゾーン・リバウンド戦略。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    EMA20-50のゾーン反発とADX強トレンドを組み合わせ、低DDを維持しつつPFの最大化を追求する。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# DD 0.2%という余裕を最大限に活用し、リスクリワード比を向上させる。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# TPを大幅に伸ばし、トレーリングストップでトレンドの終焉まで追随する。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;NYTrendScalper_v9&amp;#34;&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;150.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;45.0&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            enable_trailing_stop&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            trail_start_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;30.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 5分足 (Base Timeframe) 指標 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ADX: トレンド強度の判定 (14)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        adx_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;adx(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; adx_df &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; adx_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# ATR: ボラティリティ (14)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;atr(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR_MA&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# MACD: モメンタム (12, 26, 9)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        macd_df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macd(fast&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;, slow&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;26&lt;/span&gt;, signal&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; macd_df &lt;span style=&#34;color:#f92672&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; macd_df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[:, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# RSI: 強弱判定 (14)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rsi(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- Trend Filters (MTF) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# EMA 20: 短期トレンド / EMA 50: 中期トレンド / EMA 200: 長期トレンド&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_200&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        curr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 必須カラムチェック&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        required_cols &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_200&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR_MA&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; all(col &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;columns &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; col &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; required_cols):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 【エントリー時間帯の限定】&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# NY市場のメイントレンド時間帯 (21:00〜01:00 JST)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 【相場環境フィルター】&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. トレンド強度の厳格化: ADX &amp;gt; 25 (強いトレンドのみを抽出)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ADX&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. ボラティリティ: ATRが平均的に安定していること&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ATR_MA&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.6&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 【MTFトレンド判定: パーフェクトオーダーの確認】&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 強気環境: 価格 &amp;gt; EMA 20 &amp;gt; EMA 50 &amp;gt; EMA 200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_bullish_env &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_200&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 弱気環境: 価格 &amp;lt; EMA 20 &amp;lt; EMA 50 &amp;lt; EMA 200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_bearish_env &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_200&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 【エントリートリガー: バリューゾーンからの反発】&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 買いシグナル:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_bullish_env:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# 1. バリューゾーン判定: 直近の安値がEMA 20〜EMA 50の間に位置していたか&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            in_value_zone &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.001&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.999&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# 2. プライスアクション: 直近高値を更新する強い陽線&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            is_strong_bull &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# 3. モメンタム: RSIが50以上、かつMACDヒストグラムが上昇&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            momentum_ok &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; in_value_zone &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_strong_bull &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; momentum_ok:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 売りシグナル:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; is_bearish_env:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# 1. バリューゾーン判定: 直近の高値がEMA 20〜EMA 50の間に位置していたか&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            in_value_zone &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_20&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.999&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_50&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.001&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# 2. プライスアクション: 直近安値を更新する強い陰線&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            is_strong_bear &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# 3. モメンタム: RSIが50以下、かつMACDヒストグラムが下降&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            momentum_ok &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSI&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MACD_hist&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; in_value_zone &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_strong_bear &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; momentum_ok:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;オマケ反面教師用-mql5コード&#34;&gt;オマケ：反面教師用 MQL5コード&lt;/h3&gt;
&lt;p&gt;「この程度のロジックで本当に負けるのか？」と、まだ夢を見ている物好きな方へ。MT5でその絶望を体験するためのコードを書いておいた。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 【擬似MTFと教科書通りロジックの末路】</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260710_052711_blog/</link>
      <pubDate>Sun, 12 Jul 2026 22:19:55 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260710_052711_blog/</guid>
      <description>&lt;p&gt;深夜2時。またAIが「完璧な聖杯」を自称してゴミを生成してくれた。
今回の被害者は &lt;code&gt;NY_Trend_Momentum_v10&lt;/code&gt;。名前だけは立派だが、中身はネットに転がっている「FX初心者向け入門書」をそのままコードに書き出したような、救いようのない凡作だ。&lt;/p&gt;
&lt;h3 id=&#34;そもそも何を作ろうとしたのか&#34;&gt;そもそも何を作ろうとしたのか？&lt;/h3&gt;
&lt;p&gt;Pythonコードを見る限り、AIの意図はこうだ。
「ロンドン〜NY時間のボラティリティを活かし、1時間足で方向性を決め、15分足でフィルタリングし、5分足のMACDとEMAでタイミングを計る」&lt;/p&gt;
&lt;p&gt;いわゆる&lt;strong&gt;マルチタイムフレーム（MTF）分析によるトレンドフォロー戦略&lt;/strong&gt;。
教科書通り。あまりにも教科書通りすぎて、涙が出る。AIは「複雑すぎるフィルターを排除し、本質的なトレンドに集中する」とか抜かしているが、要するに「工夫することを諦めた」だけだろう。&lt;/p&gt;
&lt;h3 id=&#34;破綻の理由なぜこのコードはゴミなのか&#34;&gt;破綻の理由：なぜこのコードは「ゴミ」なのか&lt;/h3&gt;
&lt;p&gt;結果を見てみろ。 &lt;strong&gt;PF 0.91&lt;/strong&gt;。
期待値がマイナス。つまり、使い続ければ確実に口座残高が溶ける仕様だ。最大ドローダウン 0.1% という数値に「低リスクで素晴らしい」と錯覚した情弱がいるかもしれないが、これは単に**「まともにポジションを持てていない」か「損切りが早すぎて利益を伸ばせていない」だけ**だ。&lt;/p&gt;
&lt;p&gt;技術的な破綻ポイントを指摘してやる。&lt;/p&gt;
&lt;h4 id=&#34;1-擬似mtfという名の怠慢&#34;&gt;1. 「擬似MTF」という名の怠慢&lt;/h4&gt;
&lt;p&gt;このコードで一番笑ったのがここだ。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/dCPVN5Ya9ChJbJj&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（BeeOne_USDJPY）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/dCPVN5Ya9ChJbJj&#34; alt=&#34;フォワード5年で収益率100％！安定的に利益を積み上げるシンプルロジックEA！ | GogoJungle&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_15m&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;EMA_1h&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;おい、正気か？ 5分足のデータに対して期間を3倍、12倍にしたEMAを引けばMTFになると思っているのか？
本物のMTFは、上位足の確定足（Close）を確認して判定するものだ。単に期間を伸ばしたEMAは、ただの「超長期移動平均線」に過ぎない。上位足の構造的トレンドを捉えているつもりだろうが、実際にはただのラグ（遅延）を増大させているだけ。エントリーが遅すぎる。&lt;/p&gt;
&lt;h4 id=&#34;2-インジケーターの盛りすぎラグの三重奏&#34;&gt;2. インジケーターの盛りすぎ（ラグの三重奏）&lt;/h4&gt;
&lt;p&gt;EMA20 ＋ MACD ＋ ADX。
すべてが「遅行指標」だ。
1時間足の方向を確認し、ADXで強度を測り、MACDの反転を待ち、さらにEMA20を上抜けるのを待つ……。
その頃にはもうトレンドの終盤か、あるいは調整局面に入っている。AIは「確度を高めている」つもりだろうが、実際には**「絶好のエントリータイミングをすべて逃し、天井・底で掴まされるロジック」**を構築している。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: パーフェクトオーダーという幻想とNY時間の暴力</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260707_220644_blog/</link>
      <pubDate>Thu, 09 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260707_220644_blog/</guid>
      <description>&lt;p&gt;こんにちは。投資の世界へようこそ！
皆さんは「教科書通りの手法を組み合わせれば勝てる」と思っていませんか？……あぁ、もう。AIにそれをやらせたらどうなるか、今回の事例が残酷なまでに証明してくれました。&lt;/p&gt;
&lt;p&gt;今回紹介するのは、AIが自信満々に書き上げた**「NYバリューゾーン・バウンス戦略」**。
名前だけは立派ですが、結果は悲惨な「ボツ」となりました。&lt;/p&gt;
&lt;h3 id=&#34;そもそもaiは何をしようとしたのか&#34;&gt;そもそも、AIは何をしようとしたのか？&lt;/h3&gt;
&lt;p&gt;このEAの意図は非常にシンプル（かつ、いかにもAIらしい）ものです。
Pythonコードから読み取れるロジックは以下の通り。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;環境認識&lt;/strong&gt;: EMA20 &amp;gt; 50 &amp;gt; 100 という「パーフェクトオーダー」が発生している強いトレンド状態のみを狙う。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;待ち伏せ&lt;/strong&gt;: 価格が一時的に短期EMAを割り込み、中期EMA付近（いわゆるバリューゾーン）まで押し戻されるのを待つ。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;トリガー&lt;/strong&gt;: 押し目から反発し、直近の数本の高値を更新して「陽線」で確定した瞬間にエントリー。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;時間制限&lt;/strong&gt;: 最もボラティリティが出るニューヨーク市場オープン時（21:00〜23:00）に限定。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;「トレンド方向に、安く買って、反発を確認して入る」。
至極真っ当なロジックに見えますよね？ 初心者の方なら「これなら勝てるのでは？」と思うかもしれません。&lt;/p&gt;
&lt;h3 id=&#34;なぜこのロジックは破綻したのか&#34;&gt;なぜ、このロジックは破綻したのか？&lt;/h3&gt;
&lt;p&gt;結果を見てみましょう。&lt;strong&gt;プロフィットファクター（PF）は 0.92&lt;/strong&gt;。
つまり、100円稼ごうとして108円失う計算です。投資としては「不合格」どころか、「やってはいけない」レベルです。&lt;/p&gt;
&lt;p&gt;なぜ、こんなに綺麗なロジックが通用しなかったのか。技術的な視点から、AIの甘さを解説しますね。&lt;/p&gt;
&lt;h4 id=&#34;1-ny時間の暴力をなめていた&#34;&gt;1. 「NY時間の暴力」をなめていた&lt;/h4&gt;
&lt;p&gt;AIは「NYオープン＝チャンス」と考えましたが、現実は「NYオープン＝ノイズの嵐」です。
この時間帯は急激な価格変動が起きるため、EMAのような遅行指標に基づいた「押し目待ち」をしている間に、価格がバリューゾーンを突き抜けてトレンド転換したり、激しい上下の振幅（ダマシ）に巻き込まれたりします。&lt;/p&gt;
&lt;h4 id=&#34;2-固定ピップス設定の限界&#34;&gt;2. 固定ピップス設定の限界&lt;/h4&gt;
&lt;p&gt;TP（利確）30pips / SL（損切）15pips という固定設定。これが致命的です。
相場のボラティリティは日々変わります。NY時間の激しい動きの中では、15pipsの損切りは「ただのノイズ」で狩られるほど浅すぎます。一方で、トレンドが出ている時に30pipsで利確してしまうのは、利益を早々に切り捨てているだけです。&lt;/p&gt;
&lt;h4 id=&#34;3-構造的ブレイクの定義が浅すぎる&#34;&gt;3. 「構造的ブレイク」の定義が浅すぎる&lt;/h4&gt;
&lt;p&gt;コードにある &lt;code&gt;last_row[&#39;Close&#39;] &amp;gt; recent_high&lt;/code&gt; という条件。直近2本の高値を超えただけで「反発した！」と判断していますが、これはあまりにも単純すぎます。
大口投資家のストップロスを巻き込んだ一瞬の跳ね上がり（ダマシ）に反応してエントリーし、そのまま元の方向に突き落とされる……という展開が目に浮かびますね。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;結論：教科書的な手法を機械的に組み合わせただけでは、現代の複雑な相場（特に激動のNY時間）では通用しないということです。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;失敗したpythonコード&#34;&gt;失敗したPythonコード&lt;/h3&gt;
&lt;p&gt;AIが書き残した、あまりにナイーブなコードを公開します。研究用としてどうぞ。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 教科書通りの「押し目買い」を信じたAIの末路</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260707_214505_blog/</link>
      <pubDate>Tue, 07 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260707_214505_blog/</guid>
      <description>&lt;p&gt;深夜2時。またAIが「完璧な聖杯」を生成したと抜かしていたので、バックテストにぶち込んでみた。
結果？ &lt;strong&gt;ゴミ。完敗。大爆死。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;今回の被害者は &lt;code&gt;NYVolatilityValue&lt;/code&gt; と名付けられた、いかにも「分かってる感」を出した戦略だ。
Pythonコードを見る限り、AIの意図はこうだ。
「NY時間のボラティリティを利用し、長期EMAでトレンドを掴み、短期EMAでの押し目（戻り）を確認してから再加速でエントリーする。リスクリワードは1:2.5で効率よく稼ぐぜ！」&lt;/p&gt;
&lt;p&gt;……いやいや、2026年にもなってまだそんな「FX初心者向けYouTube動画」みたいなロジックを本気で組んだのか？&lt;/p&gt;
&lt;h3 id=&#34;破綻の解説なぜこのコードはただの寄付に終わったか&#34;&gt;破綻の解説：なぜこのコードは「ただの寄付」に終わったか&lt;/h3&gt;
&lt;p&gt;まず結果を見てくれ。
&lt;strong&gt;プロフィットファクター (PF): 1.05&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;これ、実質的に「手数料とスプレッドで全部持っていかれた」ってことだ。ほぼランダムウォーク。
最大ドローダウン 0.1% という数字だけ見れば「安全」に見えるかもしれないが、これは単にエントリー回数が少なすぎて、運良く大火傷を免れただけ。期待値が死んでいる。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;技術的なダメ出しポイント：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;固定pipsの絶望感&lt;/strong&gt;:
TP 50pips / SL 20pips という固定値。NY時間のボラティリティを狙うと言いながら、ボラティリティに応じて変動しない固定SLを置くという矛盾。NY時間のノイズ一本で20pipsなんて余裕で吹き飛ぶ。AI、お前はATRを計算したのに、なぜそれをSLに反映させなかった？ 宝の持ち腐れもいいところだ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;「EMA20を上抜けたら買い」というお花畑ロジック&lt;/strong&gt;:
&lt;code&gt;close_prev &amp;lt;= ema_f_prev * 1.0005&lt;/code&gt; で調整を確認し、&lt;code&gt;close_curr &amp;gt; ema_f_curr&lt;/code&gt; でエントリー。これ、典型的な「ダマシ」の量産機だ。相場がレンジに移行した瞬間、EMAを上下に跨ぐたびにエントリーしてはSLに引っかかる地獄ループが見える。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ATRフィルターが形骸化している&lt;/strong&gt;:
&lt;code&gt;if atr == 0 or pd.isna(atr): return None&lt;/code&gt;
……は？ これを「ボラティリティフィルター」と呼ぶのか？ 0じゃなければOKって、それはフィルターじゃなくて単なる「生存確認」だろ。最低限の閾値を設定しろ。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;結論として、このEAは**「教科書に書いてあることをそのまま実装したが、相場のダイナミズム（ノイズと流動性）を完全に無視した」**ため、手数料を支払うためだけの機械と化したわけだ。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;失敗したpythonコード&#34;&gt;失敗したPythonコード&lt;/h3&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 過剰フィルターという名の「完璧主義的な自殺」</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260706_170259_blog/</link>
      <pubDate>Mon, 06 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260706_170259_blog/</guid>
      <description>&lt;p&gt;また出たよ。最近のAIが書き出す「いかにも正解っぽく見えるゴミ」だ。&lt;/p&gt;
&lt;p&gt;今回の標本は、NY市場のボラティリティを狙ったという『NYStructureTrend』。
ロジックを紐解けば、長期EMAで環境認識をし、短期EMAへのプルバックを待ち、出来高を確認し、直近高値・安値のブレイクでエントリーする……という、FXの入門書に書いてある「正解」を全部盛り込んだような構成だ。&lt;/p&gt;
&lt;p&gt;AIはきっとこう思ったんだろう。「条件を重ねれば重ねるほど、勝率は上がり、リスクは減る」と。
だが、相場の本質を理解していない人間（とAI）が陥る最大の罠がここにある。&lt;/p&gt;
&lt;h2 id=&#34;破綻の理由フィルターの積み上げによる取引機会の絶滅&#34;&gt;破綻の理由：フィルターの積み上げによる「取引機会の絶滅」&lt;/h2&gt;
&lt;p&gt;まずはこの絶望的なバックテスト結果を見てくれ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;取引回数: 0回&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;プロフィットファクター (PF): 0.00&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最大ドローダウン: 0.0%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;笑わせるな。ドローダウン0%？ それは「勝った」のではなく、「戦場にすら立てなかった」ということだ。&lt;/p&gt;
&lt;p&gt;なぜこうなったか？ 技術的に解説してやる。このEAは**「フィルターの過剰積載」**で自死したんだ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;時間帯の極端な制限&lt;/strong&gt;: JST 21:00〜23:00の2時間のみ。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;環境認識の硬直化&lt;/strong&gt;: EMA200の傾きと価格位置という、遅行指標による二重チェック。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;プルバックの厳格な定義&lt;/strong&gt;: EMA20に「接近または下回ること」というピンポイントな要求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;出来高のハードル&lt;/strong&gt;: 平均の80%以上の出来高を要求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;構造的ブレイクの確定&lt;/strong&gt;: さらに直近2本の高値を抜けるというトリガー。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これらすべてが「同時に」成立する確率を計算してみろ。
「トレンドが出ていて、かつ、ちょうどいいタイミングで押し目を作り、かつ、十分な出来高があり、かつ、タイミングよく直近高値を抜ける」……そんな都合のいいタイミングが、5分足のわずか2時間枠の中で、2年間一度も起きなかったということだ。&lt;/p&gt;
&lt;p&gt;AIは「期待値」ではなく「条件の整合性」だけを追い求めた。
実際の相場はもっと泥臭い。インジケーターが完璧に整うのを待っていたら、美味しいところは全部食い尽くされている。裁量トレーダーが意識するのは「条件の合致」ではなく「相場のリズム」と「不均衡」だ。&lt;/p&gt;
&lt;p&gt;このコードは、教科書を丸暗記して試験には満点を取るが、実戦では一歩も動けない臆病者の思考そのものだ。&lt;/p&gt;
&lt;h2 id=&#34;失敗したpythonコード&#34;&gt;失敗したPythonコード&lt;/h2&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/3ZWOqbwF483um7Q&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（White Bear Z USDJPY）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/3ZWOqbwF483um7Q&#34; alt=&#34;2016年 fx-on 売れ筋No.1 EA！ シロクマの集大成！ | GogoJungle&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;NYStructureTrend&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    NY市場オープン時間帯の構造的転換を狙う戦略。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    EMA200の傾きで環境を定義し、EMA20へのプルバック後、出来高を伴う直近高値/安値更新でエントリーする。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# NY市場のボラティリティに合わせ、SLを20pipsに広げて「呼吸」をさせ、TPを35pipsに設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;NY_Structure_Trend&amp;#34;&lt;/span&gt;, default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;35.0&lt;/span&gt;, default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# パラメータ&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;slow_ema_period &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 長期トレンド方向&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fast_ema_period &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# 価値領域（プルバック基準）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vol_ma_period &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;     &lt;span style=&#34;color:#75715e&#34;&gt;# 出来高平均判定用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        テクニカル指標の計算。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 長期EMA (環境認識)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_slow&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;slow_ema_period)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 短期EMA (プルバック基準)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_fast&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;fast_ema_period)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 出来高の移動平均 (ボラティリティ・流動性判定)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_ma&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Volume&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vol_ma_period)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        最新の足に基づいて売買シグナルを生成する。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;slow_ema_period &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        curr &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev_prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 時間帯フィルタ (JST 21:00 - 23:00) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_time_jst &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;index[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tz_localize(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;UTC&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tz_convert(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Asia/Tokyo&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; current_time_jst&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;21&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. MTF環境認識 (トレンドの方向性と強さ) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# EMA200が明確に上向きであり、価格がその上にあること&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_bullish_env &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_slow&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_slow&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_slow&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# EMA200が明確に下向きであり、価格がその下にあること&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_bearish_env &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_slow&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_slow&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_slow&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. 出来高フィルター (本物の動きかどうかの判定) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 現在の出来高が平均の80%以上であることを条件とし、死んだ相場を排除&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        has_volume &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Volume&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; (curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_ma&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.8&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. プライスアクション・トリガー (構造的ブレイク) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 【BUYトリガー】&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# A. 強気環境であること&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# B. プルバック: 前回の足の安値がEMA20に接近、または下回った（押し目の形成）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# C. 構造的ブレイク: 今回の終値が「前回と前々回の足の最高値」を上抜いた（反転の確定）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bullish_pullback &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_fast&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.0005&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bullish_breakout &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; max(prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;], prev_prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 【SELLトリガー】&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# A. 弱気環境であること&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# B. プルバック: 前回の足の高値がEMA20に接近、または上回った（戻りの形成）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# C. 構造的ブレイク: 今回の終値が「前回と前々回の足の最低値」を下抜いた（反転の確定）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bearish_pullback &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_fast&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.9995&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bearish_breakout &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; curr[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; min(prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;], prev_prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- シグナル確定 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; has_volume &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_bullish_env &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; bullish_pullback &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; bullish_breakout:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; has_volume &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_bearish_env &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; bearish_pullback &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; bearish_breakout:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;オマケmql5変換&#34;&gt;オマケ（MQL5変換）&lt;/h2&gt;
&lt;p&gt;「こんなに厳格な条件なら、MT5の高速バックテストで10年分回せば1回くらいはエントリーするだろう」という、絶望的な好奇心を持つ物好きな方のために、MQL5に書き換えておいた。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 5本の足で『構造』と呼ぶ傲慢さとEMA200の呪い</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260705_215617_blog/</link>
      <pubDate>Sun, 05 Jul 2026 22:00:03 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260705_215617_blog/</guid>
      <description>&lt;p&gt;深夜2時。またAIが「完璧なロジックを生成しました！」みたいな顔してゴミを量産してる。
今回もまた、教科書通りの「それっぽい」手法を盛り込んだだけの、実戦完全無視なボツEAが爆誕した。&lt;/p&gt;
&lt;p&gt;今回のターゲットは**「NYオープン時間帯の構造的ブレイクアウト」**。
Pythonコードを眺める限り、AIの思考回路はこうだ。
「NY時間はボラが出る（常識） → EMA200でトレンド方向を固定する（教科書1ページ目） → 直近のレンジを抜けた方向にエントリーする（初心者向け手法） → でも大陽線・大陰線は『クライマックス』だから避ける（ここが致命的な勘違い）」&lt;/p&gt;
&lt;p&gt;……いや、NY時間のボラティリティを狙っておいて、強い動きを「クライマックス」として排除するってどういう脳内回路だよ。正気か？&lt;/p&gt;
&lt;h3 id=&#34;絶望のバックテスト結果&#34;&gt;絶望のバックテスト結果&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PF: 0.86&lt;/strong&gt;（はい、勝ち少ない。手数料とスプレッドで死ぬパターン）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最大ドローダウン: 0.1%&lt;/strong&gt;（一見低く見えるが、単にリスクを取りすぎていないか、取引回数に対して期待値が低すぎて資金がじりじりと削られただけの結果）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不合格理由&lt;/strong&gt;: 10年間間のPFが1.2を余裕で下回った。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;技術的な破綻ポイントなぜ負けるのか&#34;&gt;技術的な「破綻」ポイント：なぜ負けるのか&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 「構造（Structure）」の定義が幼稚園レベル&lt;/strong&gt;
&lt;code&gt;lookback_period = 5&lt;/code&gt;。5分足の5本分、つまり「直近25分間の高値・安値」を構造と呼んでいる。
おい、それは「構造」じゃなくてただの「ノイズ」だ。相場の構造（Structure）を語るなら、最低でも1時間足や4時間足の意識されるレベルを追え。25分のレンジブレイクなんて、スプレッドの変動レベルで簡単にダマシに合う。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 自殺志願のような「クライマックス・フィルタ」&lt;/strong&gt;
&lt;code&gt;body_size &amp;lt; (curr[&#39;atr&#39;] * 2.5)&lt;/code&gt;
ここがこのコードの最大のギャグ。NY時間のブレイクアウト戦略において、最も利益が出るのは「強い方向感が出たとき」だ。それを「実体が大きすぎるから天井/底かも」という妄想でフィルタリングしている。
つまり、**「本当に強いトレンドが出たときだけエントリーを回避し、迷いのある弱い動きのときだけエントリーする」**という、負けるためだけの完璧なロジックが完成している。天才か。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 固定TP/SLの思考停止&lt;/strong&gt;
TP 30 / SL 15 という固定ピプス設定。
ボラティリティが激しく変動するNY時間に、ATRを計算しておきながら利確・損切りにそれを反映させない。これじゃあ、ボラが大きい日は一瞬で狩られ、ボラが小さい日は利確まで届かずに戻ってくる。&lt;/p&gt;
&lt;p&gt;結論：このEAは**「トレンドの初動を逃し、ノイズに飛び乗り、正解の波だけを拒絶する」**という、トレードにおける禁忌を全て詰め込んだ芸術作品である。&lt;/p&gt;
&lt;h3 id=&#34;敗北のコードpython&#34;&gt;敗北のコード（Python）&lt;/h3&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 【教科書的なトレンドフォローとレンジブレイクの絶望的なミスマッチ】</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260704_215259_blog/</link>
      <pubDate>Sat, 04 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260704_215259_blog/</guid>
      <description>&lt;p&gt;またAIが「完璧なロジック」を自称してゴミを量産した。&lt;/p&gt;
&lt;p&gt;今回の被験体は、NYオープンという相場のボラティリティが最大化する時間帯を狙った「レンジブレイクアウト戦略」だ。Pythonコードを見る限り、AIの意図は明確だった。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;環境認識&lt;/strong&gt;: EMA50とEMA200のパーフェクトオーダーでトレンド方向を固定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;トリガー&lt;/strong&gt;: 直近1時間の高値・安値を終値でブレイク。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;フィルター&lt;/strong&gt;: EMA200からの乖離を制限し、「高値掴み・安値掴み」を防止。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;時間限定&lt;/strong&gt;: NYオープン（JST 21-23時）という、最も「動きがある」時間帯に限定。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一見すると、リスク管理とトレンドフォローを兼ね備えた堅実な戦略に見える。だが、結果は惨敗。PF 0.84という、時間をかけて資金を溶かす典型的な「負けパターン」に陥った。&lt;/p&gt;
&lt;h3 id=&#34;なぜこのロジックはゴミなのか&#34;&gt;なぜこのロジックは「ゴミ」なのか&lt;/h3&gt;
&lt;p&gt;結論から言えば、&lt;strong&gt;「遅行指標によるトレンド判定」と「短期レンジブレイク」の相性が最悪だから&lt;/strong&gt;だ。&lt;/p&gt;
&lt;h4 id=&#34;1-遅行性のダブルパンチ&#34;&gt;1. 遅行性のダブルパンチ&lt;/h4&gt;
&lt;p&gt;EMA50とEMA200のパーフェクトオーダーを確認してエントリーする。この時点で、5分足レベルのトレンドは既に中盤から終盤に差し掛かっていることが多い。そこにさらに「直近1時間の高値ブレイク」という条件を加えるため、エントリータイミングは常に「トレンドの天井・底」付近になる。&lt;/p&gt;
&lt;h4 id=&#34;2-nyオープンのダマシを正解だと思い込んでいる&#34;&gt;2. NYオープンの「ダマシ」を正解だと思い込んでいる&lt;/h4&gt;
&lt;p&gt;NYオープン時間帯は、方向感を決める前の激しい上下振幅（ウィップソー）が頻発する。12本（1時間）程度の狭いレンジをブレイクしたからといって、それがトレンドの継続を意味することは少ない。むしろ、AIが「完璧なトレンドだ」と判定して飛び乗った瞬間が、大口の利益確定による反転ポイントになるという皮肉な結果を招いている。&lt;/p&gt;
&lt;h4 id=&#34;3-最大ドローダウン-01-の正体&#34;&gt;3. 最大ドローダウン 0.1% の正体&lt;/h4&gt;
&lt;p&gt;一見、最大DD 0.1%という数字は驚異的な安定感に見える。だが、クオンツ的に見ればこれは「リスクを取っていない」のではなく、**「損切り（SL 15pips）が浅すぎて、方向性が出る前に速攻で切られている」**だけのことだ。PF 0.84という数値が示す通り、勝ちを伸ばせず、負けを頻発させているだけ。安定して負けているだけである。&lt;/p&gt;
&lt;p&gt;AIは「教科書に書いてある条件」を組み合わせれば勝てると信じているようだが、相場は足し算で解決するほど単純ではない。&lt;/p&gt;
&lt;h3 id=&#34;失敗したpythonコード&#34;&gt;失敗したPythonコード&lt;/h3&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/RMRS1647wOTr1Qu&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（Pips_miner_EA）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/RMRS1647wOTr1Qu&#34; alt=&#34;【超多頻度トレードによる高収益を狙うEA】 | GogoJungle&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas_ta &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ta
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;NYRangeBreakout&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    NYオープン時間帯に特化したMTFレンジブレイクアウト戦略。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    EMA 50/200による強力なトレンドフィルターを掛け、
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    直近1時間（12本分）の最高値/最安値を終値でブレイクした瞬間のみにエントリーを絞る。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 勝率と利益のバランスを最適化した設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;NYRangeBreakout&amp;#34;&lt;/span&gt;, default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;25.0&lt;/span&gt;, default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        MTFトレンド判定およびブレイクアウト判定用の指標を計算。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 中期トレンドフィルター (15m相当)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 長期トレンドフィルター (1h相当)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_long&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ta&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ema(df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;], length&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 直近12本（1時間分）の最高値と最安値を計算 (ブレイクアウト判定用)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# shift(1)することで、現在の足を含めない「直近の壁」を定義する&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;range_high&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;range_low&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;min()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;shift(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        NYオープン時間帯に、MTFトレンドが一致し、かつ1時間レンジをブレイクした時にシグナルを出す。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 最新の足を取得&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_bar &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 時間帯判定 (JST 21:00 - 23:00) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# JST 21:00 = UTC 12:00 / JST 23:00 = UTC 14:00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        current_hour &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; current_bar&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;name&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hour
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; current_hour &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;14&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 変数抽出 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        close &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; current_bar[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema_m &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; current_bar[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_mid&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ema_l &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; current_bar[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ema_long&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        range_h &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; current_bar[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;range_high&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        range_l &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; current_bar[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;range_low&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- エントリーロジック ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. MTF環境認識: 価格 &amp;gt; EMA50 &amp;gt; EMA200 (完璧な上昇トレンドの並び)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. ブレイク判定: 終値が直近12本(1時間)の最高値を明確に上抜けた&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; ema_m) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (ema_m &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; ema_l):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; range_h:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 乖離フィルター: 長期EMAから離れすぎている場合は飛び乗りと判断&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; ema_l &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.01&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. MTF環境認識: 価格 &amp;lt; EMA50 &amp;lt; EMA200 (完璧な下降トレンドの並び)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. ブレイク判定: 終値が直近12本(1時間)の最安値を明確に下抜けた&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; ema_m) &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; (ema_m &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; ema_l):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; range_l:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 乖離フィルター&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; close &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; ema_l &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.99&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;オマケmql5への変換&#34;&gt;オマケ：MQL5への変換&lt;/h3&gt;
&lt;p&gt;「この絶望感をMT5で体感したい」という物好きな方のために、上記ロジックをMQL5に移植した。検証環境でぜひ、資金がじわじわと削られていく快感を味わってほしい。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 過剰適合の幻想と致命的な型エラー</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260703_224038_blog/</link>
      <pubDate>Fri, 03 Jul 2026 22:46:12 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260703_224038_blog/</guid>
      <description>&lt;h2 id=&#34;導入aiが夢見た完璧なブレイクアウト&#34;&gt;導入：AIが夢見た「完璧なブレイクアウト」&lt;/h2&gt;
&lt;p&gt;今回のボツEAは、AIが「ボラティリティの凝縮から拡散への転換点」を捉えようとして設計した、いわゆる&lt;strong&gt;ボラティリティ・スクイーズ戦略&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;Pythonコードから読み取れるAIの意図は以下の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;長期的な方向性の確認&lt;/strong&gt;: 線形回帰の傾き（Slope）と効率比（Efficiency Ratio）を用いて、「ノイズではない明確なトレンド」があることを確認する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;エネルギーの蓄積を検知&lt;/strong&gt;: 短期ボラティリティと長期ボラティリティの比率を算出し、相場が「スクイーズ（凝縮）」状態にあることを定義する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;構造的なブレイクアウト&lt;/strong&gt;: スクイーズ期間中の高値・安値を更新し、かつ「強すぎず弱すぎない」適度なモメンタム（Impulse Intensity）を伴って抜けた瞬間にエントリーする。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;理論だけを見れば、非常に「クオンツらしく」知的なアプローチに見えます。しかし、結果は無残なものでした。&lt;/p&gt;
&lt;h2 id=&#34;破綻の解説知的な装いをしたただのゴミ&#34;&gt;破綻の解説：知的な装いをした「ただのゴミ」&lt;/h2&gt;
&lt;p&gt;このEAが敗北した理由は、単なるコードのバグだけではありません。行動経済学的な観点から見れば、これは**「コントロールの錯覚（Illusion of Control）」**に陥った典型的な事例です。&lt;/p&gt;
&lt;h3 id=&#34;1-致命的な実装ミス技術的破綻&#34;&gt;1. 致命的な実装ミス（技術的破綻）&lt;/h3&gt;
&lt;p&gt;まず、このEAはバックテストにすら到達していません。
&lt;code&gt;Execution Error: &#39;numpy.float64&#39; object has no attribute &#39;shift&#39;&lt;/code&gt;
という、あまりにも初歩的なエラーで自爆しています。&lt;code&gt;generate_signal&lt;/code&gt;関数内で、単一の行（Series）である&lt;code&gt;last[&#39;squeeze_high&#39;]&lt;/code&gt;に対して&lt;code&gt;.shift(1)&lt;/code&gt;を呼び出そうとしています。&lt;code&gt;.shift()&lt;/code&gt;は pandas の Series や DataFrame のメソッドであり、数値（float64）に対しては使えません。&lt;/p&gt;
&lt;p&gt;AIは「過去のデータを参照する」という概念をコードに盛り込みましたが、&lt;strong&gt;「今、自分が扱っている変数が『配列』なのか『単一の値』なのか」という型定義の意識が完全に欠落していた&lt;/strong&gt;のです。&lt;/p&gt;
&lt;h3 id=&#34;2-過剰適合overfittingの罠&#34;&gt;2. 過剰適合（Overfitting）の罠&lt;/h3&gt;
&lt;p&gt;仮にバグを修正したとしても、このロジックが現実の相場で通用する可能性は極めて低いです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vol_ratio &amp;lt; 0.85&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;er_l &amp;gt; 0.25&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0.7 &amp;lt; impulse_rel &amp;lt; 3.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pds &amp;gt; 0.6&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの数値（しきい値）はどこから来たのでしょうか？根拠のない「魔法の数字」を並べてフィルターを重ねる行為は、過去データに無理やり合わせた**カーブフィッティング（過剰適合）**そのものです。フィルターを増やせば増やすほど、バックテストの数字は綺麗になりますが、未知の相場（アウトオブサンプル）では全く機能しません。&lt;/p&gt;
&lt;h3 id=&#34;3-ダマシへの無知&#34;&gt;3. 「ダマシ」への無知&lt;/h3&gt;
&lt;p&gt;ボラティリティ・スクイーズ後のブレイクアウトは、機関投資家にとって絶好の「流動性狩り（ストップ狩り）」の標的です。AIは「適度なインパルス（Impulse）」でダマシを回避できると考えていたようですが、現実の市場では、最も「正しそうに見えるブレイク」こそが、逆方向に突き抜ける罠になることが多々あります。&lt;/p&gt;
&lt;p&gt;このEAは、数学的な美しさに酔いしれ、相場の本質である**「不確実性と騙し合い」**という心理的側面を完全に無視した、机上の空論に過ぎなかったと言えるでしょう。&lt;/p&gt;
&lt;h2 id=&#34;pythonコードの公開失敗作&#34;&gt;Pythonコードの公開（失敗作）&lt;/h2&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 統計的アノマリーという幻想と「過剰エンジニアリング」の末路</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260703_215638_blog/</link>
      <pubDate>Fri, 03 Jul 2026 22:17:36 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260703_215638_blog/</guid>
      <description>&lt;p&gt;またAIが「完璧な聖杯」を夢見て、壮大なゴミを生成してくれた。&lt;/p&gt;
&lt;p&gt;今回の被験体は、名付けて**「Symmetry-Based Vacuum Expansion (SVE)」**。
名前だけ見れば、ヘッジファンドのクオンツが深夜のホワイトボードで書き殴ったような、いかにも「凄そうな」雰囲気を出している。&lt;/p&gt;
&lt;p&gt;ロジックの意図をPythonコードから読み解くと、AIは「相場のエネルギー蓄積（Coiling）からの爆発的解放（Vacuum Expansion）」を捉えようとしたらしい。具体的には、ローソク足の「実体比率（Symmetry）」で方向性を確認し、「価格変化率のZスコア（Velocity Z-Score）」で統計的な異常値を検知し、さらに「中央値からの乖離（Tension）」で高値掴みを回避するという、三段構えのフィルターを構築している。&lt;/p&gt;
&lt;p&gt;なるほど、理屈は立っている。だが、相場は数式通りに動くほど親切ではない。&lt;/p&gt;
&lt;h3 id=&#34;惨敗の分析なぜこのロジックはゴミなのか&#34;&gt;惨敗の分析：なぜこのロジックは「ゴミ」なのか&lt;/h3&gt;
&lt;p&gt;バックテストの結果を見てみよう。
&lt;strong&gt;プロフィットファクター (PF): 0.92&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;結論から言えば、手数料とスプレッドを考慮すれば、このEAを動かすことは「電子的な寄付」に等しい。最大ドローダウンが0.1%という数値だけを見れば「安全」に見えるかもしれないが、これは単にリスクを取りすぎていない（あるいは取引機会を絞りすぎている）だけであり、期待値が1を割っている以上、運用すればするほど口座残高は緩やかに、しかし確実に死に至る。&lt;/p&gt;
&lt;p&gt;技術的な破綻理由は主に3点だ。&lt;/p&gt;
&lt;h4 id=&#34;1-zスコア--20という遅効性の罠&#34;&gt;1. 「Zスコア &amp;gt; 2.0」という遅効性の罠&lt;/h4&gt;
&lt;p&gt;AIはZスコアを用いて「統計的な異常値（Vacuum）」をトリガーにした。しかし、Zスコアが2.0を超えるということは、すでに価格が急激に動いた&lt;strong&gt;後&lt;/strong&gt;であることを意味する。
つまり、このEAは「爆発の瞬間」ではなく、「爆発しきった後の末端」でエントリーしている。典型的な「追っかけ買い・売り」だ。&lt;/p&gt;
&lt;h4 id=&#34;2-対称性symmetryという名のノイズ&#34;&gt;2. 「対称性（Symmetry）」という名のノイズ&lt;/h4&gt;
&lt;p&gt;実体とヒゲの比率で方向性を判定しているが、5分足レベルでのこの数値は極めてノイズが多い。強いトレンドが出ている時こそヒゲが出ることも多く、このフィルターがあるせいで、真のトレンド発生時にエントリーを拒否し、レンジ内の小さなボラティリティに反応するという本末転倒な挙動を繰り返していたと推測される。&lt;/p&gt;
&lt;h4 id=&#34;3-絶望的なtpsl比&#34;&gt;3. 絶望的なTP/SL比&lt;/h4&gt;
&lt;p&gt;TP 20pips / SL 15pips。
統計的アノマリーを狙う戦略でありながら、利確幅が極めて狭い。Zスコアで捉えた「爆発」に乗るなら、本来はトレンドを伸ばすべきだが、このEAは小刻みに利確しようとした。結果として、たまに発生する大きな逆行（ダマシ）で利益をすべて吐き出し、PF 0.92という絶望的な数字に落ち着いたわけだ。&lt;/p&gt;
&lt;p&gt;要するに、&lt;strong&gt;「凝った指標を組み合わせれば勝てる」というAI特有の過剰エンジニアリングの典型例&lt;/strong&gt;である。&lt;/p&gt;
&lt;h3 id=&#34;失敗したpythonコード&#34;&gt;失敗したPythonコード&lt;/h3&gt;
&lt;p&gt;AIが自信満々に書き出した、美しくも役に立たないコードがこちらだ。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/3ZWOqbwF483um7Q&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（White Bear Z USDJPY）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/3ZWOqbwF483um7Q&#34; alt=&#34;2016年 fx-on 売れ筋No.1 EA！ シロクマの集大成！ | GogoJungle&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; numpy &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; np
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;SVEStrategy&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    Symmetry-Based Vacuum Expansion (SVE) Strategy
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    This strategy identifies high-probability impulse moves by detecting 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    the transition from a &amp;#39;Coiling&amp;#39; state to a &amp;#39;Vacuum Expansion&amp;#39; state, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    synchronized across multiple timeframes using Body-to-Range Symmetry 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    and Velocity Z-Scores.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Optimized TP/SL to capture the initial impulse and exit before mean reversion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SVE_Vacuum_Expansion_Quant&amp;#34;&lt;/span&gt;, default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20.0&lt;/span&gt;, default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Window settings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macro_window &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;12&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# 1h equivalent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;meso_window &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;     &lt;span style=&#34;color:#75715e&#34;&gt;# 15m equivalent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stat_window &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;# Window for Z-score and volatility&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tension_limit &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.5&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Maximum allowed tension to prevent chasing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        Compute Symmetry Conviction, Velocity Z-Score, and Macro Tension.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. Symmetry Conviction (Body-to-Range Ratio) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;range&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;body&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;body&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;range&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1e-9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# MTF Symmetry: Average conviction over meso and macro windows&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry_meso&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;meso_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry_macro&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macro_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. Velocity Z-Score (The Vacuum Trigger) ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Calculate the raw velocity (rate of change)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;velocity&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;diff(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vel_mean&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;velocity&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stat_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vel_std&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;velocity&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;stat_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;std()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vel_zscore&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;velocity&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vel_mean&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vel_std&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1e-9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. Macro Tension &amp;amp; Equilibrium ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Use median of midpoints for a robust equilibrium&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;midpoint&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_median&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;midpoint&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macro_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;median()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Macro Range for tension normalization&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_max&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macro_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_min&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macro_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;min()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_range&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_max&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_min&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Tension: Distance from equilibrium relative to macro range&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tension&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_median&amp;#39;&lt;/span&gt;])&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;abs() &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_range&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1e-9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 4. Macro Directional Vector ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_vector&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;diff(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macro_window)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        Generate signals based on the synchronicity of Tension, Symmetry, and Vacuum Velocity.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;macro_window &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- Entry Conditions: The Triple Convergence ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. Tension Filter: Only enter when price is relatively close to equilibrium&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# This prevents &amp;#34;buying the top&amp;#34; or &amp;#34;selling the bottom&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        is_low_tension &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tension&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tension_limit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. Symmetry Synchronization: All timeframes must show conviction in the same direction&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Bullish Symmetry: Current, Meso, and Macro are all positively biased&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        symmetry_bullish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry_meso&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry_macro&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.05&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# Bearish Symmetry: Current, Meso, and Macro are all negatively biased&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        symmetry_bearish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0.3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry_meso&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0.1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;symmetry_macro&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0.05&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. Vacuum Trigger: Velocity Z-score must spike (Statistical anomaly)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# We look for a significant jump in velocity relative to the recent past&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vacuum_bullish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vel_zscore&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        vacuum_bearish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vel_zscore&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 4. Macro Alignment: Trade in the direction of the 1h vector&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        macro_bullish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_vector&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        macro_bearish &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;macro_vector&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- Final Execution Logic ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# BUY: Macro UP + Low Tension + Symmetry BULLISH + Vacuum BULLISH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; macro_bullish &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_low_tension &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; symmetry_bullish &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; vacuum_bullish:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# Final confirmation: Candle must be bullish and close near the high&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# SELL: Macro DOWN + Low Tension + Symmetry BEARISH + Vacuum BEARISH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; macro_bearish &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; is_low_tension &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; symmetry_bearish &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; vacuum_bearish:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;# Final confirmation: Candle must be bearish and close near the low&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;オマケ反面教師としてのmql5変換&#34;&gt;オマケ：反面教師としてのMQL5変換&lt;/h3&gt;
&lt;p&gt;「こんなゴミのようなロジックを、あえてMT5で動かして絶望を味わいたい」という物好きな方のために、MQL5に移植しておいた。
統計的な計算（Zスコアや中央値）をMQL5で実装するのは少々手間だが、その手間こそが「この戦略に価値がないこと」を再認識させる良い修行になるだろう。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 擬似物理学とZ-Scoreの幻想に溺れた『共鳴戦略』</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260702_213816_blog/</link>
      <pubDate>Thu, 02 Jul 2026 22:00:02 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260702_213816_blog/</guid>
      <description>&lt;p&gt;またAIが「それっぽい」名前の戦略を書き出して、見事に相場に焼かれた。今回の被害者は &lt;code&gt;AdaptiveResonanceStrategy&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;名前からして意識が高い。「適応的共鳴戦略」か。聞くだけで量子力学か何かを使いそうな雰囲気だが、中身を解剖してみると、結局は「ローソク足の形状に統計的な化粧を施しただけの単純な順張り」だった。&lt;/p&gt;
&lt;h3 id=&#34;導入aiが描いた高尚なロジック&#34;&gt;導入：AIが描いた「高尚な」ロジック&lt;/h3&gt;
&lt;p&gt;このEAの意図をPythonコードから読み解くと、AIは以下のような「理論的アプローチ」を試みたようだ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;物理的圧力（Pressure）の定義&lt;/strong&gt;: &lt;code&gt;(Open+Close)/2&lt;/code&gt; と &lt;code&gt;(High+Low)/2&lt;/code&gt; の差分を取り、価格の重心がどちらに寄っているかを「圧力」と定義。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多時間軸（MTF）の同期&lt;/strong&gt;: 1時間足で方向性を決め、15分足で同調を確認し、5分足でトリガーを引くという、教科書通りの階層的フィルター。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;純度（Purity）によるノイズ除去&lt;/strong&gt;: 実体（Body）がヒゲに対してどれだけ大きいかを計算し、それをZ-Scoreで正規化することで「統計的に有意なインパルス」だけを抽出。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ボラティリティ・レジームの制御&lt;/strong&gt;: 適度なボラティリティがあるときのみエントリーし、端に寄りすぎた価格（Over-extension）を排除。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一見すると、リスク管理とフィルタリングが徹底された緻密な設計に見える。だが、クオンツの視点から見れば、これは典型的な**「過剰適合への憧憬」&lt;strong&gt;と&lt;/strong&gt;「統計学の誤用」**の塊だ。&lt;/p&gt;
&lt;h3 id=&#34;破綻の解説なぜpf-102という死に至ったか&#34;&gt;破綻の解説：なぜPF 1.02という「死」に至ったか&lt;/h3&gt;
&lt;p&gt;結果は悲惨だ。PF 1.02。最大ドローダウン 0.0%（おそらく取引回数が少なすぎて、あるいは極端に保守的な設定で、資産曲線がほぼ横ばいだったのだろう）。&lt;/p&gt;
&lt;p&gt;なぜこのロジックは通用しなかったのか。技術的な問題点を列挙する。&lt;/p&gt;
&lt;h4 id=&#34;1-z-scoreへの盲信正規分布の罠&#34;&gt;1. Z-Scoreへの盲信（正規分布の罠）&lt;/h4&gt;
&lt;p&gt;AIはこのコードの中で、あらゆる指標を &lt;code&gt;calculate_zscore&lt;/code&gt; で正規化している。Z-Scoreはデータが正規分布に従っていることを前提とした指標だ。しかし、相場のリターンや価格変動（特に5分足のような短期足）は、ファットテイル（尖度が高い）な分布を持つ。
正規分布を前提に「0.8σを超えたら有意なインパルス」と判定しても、実際にはそれは単なる「ノイズの塊」に過ぎない。統計的な「有意性」を演出したが、相場における「意味」を抽出できていない。&lt;/p&gt;
&lt;h4 id=&#34;2-圧力という名の擬似指標&#34;&gt;2. 「圧力」という名の擬似指標&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;pressure&lt;/code&gt; の計算式を見てほしい。これは単にローソク足の中央値がどこにあるかを見ているだけだ。これを「物理的圧力」と呼ぶのは、単なる言葉遊びに過ぎない。結局のところ、これは「ヒゲが長いか短いか」を別の言い方で表現しているだけであり、新しいエッジ（優位性）を何一つ提供していない。&lt;/p&gt;
&lt;h4 id=&#34;3-低い期待値とスプレッドの壁&#34;&gt;3. 低い期待値とスプレッドの壁&lt;/h4&gt;
&lt;p&gt;TP 20pips / SL 15pips という設定。PF 1.02 という数値は、手数料とスプレッドを考慮すれば、実質的にはマイナスである。
AIは「閾値を1.5から0.8へ緩和し、機会損失を削減した」とコメントしているが、これは典型的な**「負けトレードを増やして取引回数を稼ぐ」**という愚策だ。エッジのない戦略において、取引回数を増やすことは、破産への速度を上げることに等しい。&lt;/p&gt;
&lt;h4 id=&#34;4-静的な閾値の限界&#34;&gt;4. 静的な閾値の限界&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;0.6 &amp;lt; vol_ratio &amp;lt; 3.0&lt;/code&gt; や &lt;code&gt;0.05 &amp;lt; close_pos &amp;lt; 0.95&lt;/code&gt; といったハードコードされた数値。相場のボラティリティは動的に変化する。ある時期には適切だった数値が、10年間間（レポートにあるつまずいた期間）には全く適合しなかったのだろう。&lt;/p&gt;
&lt;p&gt;結論として、このEAは**「統計学的な用語を散りばめて、単純なインジケーターの組み合わせを高度に見せかけただけのハリボテ」**であったと言える。&lt;/p&gt;
&lt;h3 id=&#34;失敗したpythonコード&#34;&gt;失敗したPythonコード&lt;/h3&gt;
&lt;p&gt;AIが自信満々に書き出した、その「ゴミ」をここに晒しておく。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;</description>
    </item>
    <item>
      <title>AIの敗北録: 統計的過剰装飾という名の「ただのブレイクアウト」</title>
      <link>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260701_171755_blog/</link>
      <pubDate>Wed, 01 Jul 2026 17:55:58 +0900</pubDate>
      <guid>https://ea-ai-blog.pages.dev/ea-logics/rejected_ea_20260701_171755_blog/</guid>
      <description>&lt;p&gt;またAIが「完璧なロジック」を書き上げたと思い込んで、相場という名のシュレッダーに資金を投げ込むレポートが届いた。&lt;/p&gt;
&lt;p&gt;今回の被験体は &lt;code&gt;DynamicMomentumScoreStrategy&lt;/code&gt;。名前だけは立派だ。ダイナミック、モメンタム、スコアリング。最近のLLM（大規模言語モデル）が好む「それっぽく聞こえる統計用語」を盛り盛りにした、典型的なオーバーエンジニアリングの産物である。&lt;/p&gt;
&lt;h3 id=&#34;導入aiが描いた勝ち筋の幻想&#34;&gt;導入：AIが描いた「勝ち筋」の幻想&lt;/h3&gt;
&lt;p&gt;このEAの設計思想をコードから読み解くと、AIはこう考えたらしい。
「単純なブレイクアウトはダマシが多い。ならば、線形回帰の勾配、Z-scoreによる乖離率、出来高の相対強度、価格効率性（Efficiency Ratio）、そしてローソク足の実体強度という5つのフィルターを設け、それをスコアリングして閾値を超えた時だけエントリーすれば、高期待値のトレードだけを抽出できるはずだ」&lt;/p&gt;
&lt;p&gt;なるほど。教科書的なテクニカル指標を組み合わせれば、確率論的に勝てると思われたのだろう。5分足という短期足で、複数の時間軸（視覚的には）を意識しつつ、統計的に「正当化された」ブレイクアウトを狙う。一見すると理知的だが、クオンツの視点から見れば「何を信じていいか分からず、とりあえず全部入れた」迷走の跡に見える。&lt;/p&gt;
&lt;h3 id=&#34;破綻の解説なぜこのロジックはゴミなのか&#34;&gt;破綻の解説：なぜこのロジックはゴミなのか&lt;/h3&gt;
&lt;p&gt;結果は悲惨だ。&lt;strong&gt;PF 0.82&lt;/strong&gt;。
1.2以上を合格ラインとする中で、この数値は「トレードすればするほど、統計的に確実に資金が減る」ことを意味している。&lt;/p&gt;
&lt;p&gt;最大ドローダウンが0.4%と極めて低い点に騙されてはいけない。これはリスク管理が優秀なのではなく、単に期待値がマイナスのトレードを大量に繰り返し、緩やかに、そして確実に死に向かっているだけだ。&lt;/p&gt;
&lt;p&gt;技術的にこのロジックが破綻した理由は明白である。&lt;/p&gt;
&lt;h4 id=&#34;1-後出しジャンケン的なスコアリング&#34;&gt;1. 「後出しジャンケン」的なスコアリング&lt;/h4&gt;
&lt;p&gt;このEAは、ピボット（直近高値・安値）をブレイクした「後」に、その足の終値を用いてスコアを計算している。
5分足の世界において、価格効率性や実体強度が高い状態で確定したということは、&lt;strong&gt;すでに価格が伸びきった後&lt;/strong&gt;である可能性が極めて高い。つまり、AIは「勢いよく上がった後」に、「これは勢いがあるから買いだ！」と判断してエントリーしている。典型的な「高値掴み」マシンだ。&lt;/p&gt;
&lt;h4 id=&#34;2-ボラティリティを無視した固定tpsl&#34;&gt;2. ボラティリティを無視した固定TP/SL&lt;/h4&gt;
&lt;p&gt;TP 20pips / SL 15pips。この数値の根拠はどこにある？
Z-scoreや線形回帰といった動的な指標を使いながら、出口戦略だけは固定値という矛盾。ボラティリティが低い局面ではTPに届かず、高い局面では一瞬でSLに狩られる。統計的アプローチを謳うなら、ATR（Average True Range）に基づいた動的なエグジットを実装すべきだった。&lt;/p&gt;
&lt;h4 id=&#34;3-スプレッドという現実の壁&#34;&gt;3. スプレッドという現実の壁&lt;/h4&gt;
&lt;p&gt;取引回数2116回。この回数でPF 0.82ということは、1回あたりの期待利得が極めて低い。ここに実運用のスプレッドと滑りを加味すれば、バックテストの結果以上に悲惨なカーブを描くだろう。AIは往々にして「スプレッド 0」の理想郷で計算を行うが、現実は非情である。&lt;/p&gt;
&lt;p&gt;結論として、このEAは「統計的な指標を組み合わせればフィルタリングできる」というナイーブな幻想に基づいた、単なる&lt;strong&gt;遅行指標の寄せ集め&lt;/strong&gt;に過ぎない。&lt;/p&gt;
&lt;h3 id=&#34;失敗したpythonコード&#34;&gt;失敗したPythonコード&lt;/h3&gt;
&lt;p&gt;反面教師として、AIが書き上げた「もっともらしいが使い物にならない」コードを公開する。&lt;/p&gt;
&lt;div style=&#34;margin: 40px 0; padding: 20px; border-radius: 8px; text-align: center; font-family: monospace;&#34;&gt;
    &lt;div style=&#34;color: #ff3333; font-weight: bold; margin-bottom: 12px;&#34;&gt;[SYSTEM WARNING] 本記事のEAは実運用に耐えません&lt;/div&gt;
    &lt;p style=&#34;font-size: 0.95em; color: #e0e0e0; margin: 0 0 15px 0; line-height: 1.6;&#34;&gt;
        大切な資金を運用するなら、厳しいリアルフォワードテストをクリアしたプロ開発のEAを利用することを強く推奨します。&lt;br&gt;
        実際にリアルタイムで利益を出し続けている本物のデータを確認してください。
    &lt;/p&gt;
    &lt;div style=&#34;margin-top: 20px; font-size: 1.1em; &#34;&gt;
        👉 &lt;a href=&#34;https://www.gogojungle.co.jp/re/dCPVN5Ya9ChJbJj&#34; rel=&#34;nofollow&#34; style=&#34;color: #00ff00; font-weight: bold; text-decoration: none;&#34;&gt;プロのフィルターロジックが詰まった実績EA（BeeOne_USDJPY）を参考にする&lt;/a&gt;&lt;img border=&#34;0&#34; style=&#34;display:none;&#34; width=&#34;0&#34; height=&#34;0&#34; src=&#34;https://www.gogojungle.co.jp/re/img/dCPVN5Ya9ChJbJj&#34; alt=&#34;フォワード5年で収益率100％！安定的に利益を積み上げるシンプルロジックEA！ | GogoJungle&#34;/&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; numpy &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; np
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; pandas &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; pd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; strategies.base &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; BaseStrategy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;DynamicMomentumScoreStrategy&lt;/span&gt;(BaseStrategy):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    Dynamic Momentum Score (DMS) Strategy:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    厳格なフィルター条件を捨て、複数の統計的指標をスコアリングすることで、
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    取引回数の確保と高期待値の両立を目指す構造的ブレイクアウト戦略。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 親クラスの初期化: TP 20pips, SL 15pips でバランスを調整&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        super()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DynamicMomentumScoreStrategy&amp;#34;&lt;/span&gt;, default_tp_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20.0&lt;/span&gt;, default_sl_pips&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;15.0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;base_timeframe &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vision_timeframes &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;5m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;15m&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1h&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# パラメータ設定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;short_window &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mid_window &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;long_window &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;60&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;z_min &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.8&lt;/span&gt;           &lt;span style=&#34;color:#75715e&#34;&gt;# エントリー閾値を緩和&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;z_max &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2.2&lt;/span&gt;           &lt;span style=&#34;color:#75715e&#34;&gt;# 過熱圏の定義&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;score_threshold &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# エントリーに必要な最低スコア&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_calculate_slope&lt;/span&gt;(self, series):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;線形回帰の勾配を計算&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        y &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; series&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;values
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        x &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;arange(len(y))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(y) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        slope, _ &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; np&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;polyfit(x, y, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; slope
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;calculate_indicators&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        スコアリングに使用する統計指標を計算する。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 1. モメンタム勾配&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slope_short&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;short_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;apply(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;_calculate_slope, raw&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slope_mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mid_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;apply(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;_calculate_slope, raw&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 2. 統計的乖離 (Z-score)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;std_mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mid_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;std()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mean_mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mid_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;z_score&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mean_mid&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;std_mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1e-9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 3. 出来高の相対強度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_sma&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Volume&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mid_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mean()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rel_volume&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Volume&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;vol_sma&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1e-9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 4. 価格効率性&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        net_change &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;diff(&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;abs()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sum_abs_change &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;diff()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;abs()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sum()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;efficiency&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; net_change &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; (sum_abs_change &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1e-9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 5. ローソク足の実体強度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;body_size&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;])&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;abs()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;candle_range&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rel_body_strength&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;body_size&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt; (df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;candle_range&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1e-9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 6. 物理的ピボット (ブレイク判定用)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pivot_high&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;High&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mid_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pivot_low&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Low&amp;#39;&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rolling(window&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;mid_window)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;min()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; df
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;generate_signal&lt;/span&gt;(self, df):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        スコアリングに基づき、期待値の高いブレイクアウトを検知する。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; len(df) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;long_window:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        last &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        prev &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; df&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iloc[&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 1. 基本トリガー: 物理的ブレイクアウト ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 終値が前回のピボットレンジを更新したか&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        break_high &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pivot_high&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        break_low &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pivot_low&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; (break_high &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; break_low):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 2. スコアリング計算 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        score &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# A. 勾配の同期 (+2)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; break_high &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slope_short&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slope_mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            score &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;elif&lt;/span&gt; break_low &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slope_short&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;slope_mid&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            score &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# B. Z-scoreの適正範囲 (+1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;z_min &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; abs(last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;z_score&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;z_max:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            score &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# C. 出来高の裏付け (+1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rel_volume&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1.2&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            score &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# D. 効率性の高さ (+1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;efficiency&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.4&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            score &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# E. 実体強度の高さ (+1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rel_body_strength&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.6&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            score &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# --- 3. 最終判定 ---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# スコアが閾値を超え、かつ方向性が一致しているか&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; score &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;=&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;score_threshold:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; break_high &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 前足の終値より高いことを確認&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;BUY&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; break_low &lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#75715e&#34;&gt;# 前足の終値より低いことを確認&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; prev[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Close&amp;#39;&lt;/span&gt;]:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;SELL&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;オマケ反面教師としてmt5でも試したい物好きな方へ&#34;&gt;オマケ：反面教師としてMT5でも試したい物好きな方へ&lt;/h3&gt;
&lt;p&gt;「このゴミのようなロジックが、MT5の高速な執行環境なら化けるかもしれない」と信じる物好きな方のために、MQL5に移植してやった。どうぞ、ご自身のデモ口座でゆっくりと資金が溶ける様を観察してほしい。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
