【TradingView】MTF SMA & ボリンジャーバンド + 3x3 DMA (MACD搭載) の無料Pineスクリプト公開

導入:ボリンジャーバンドによる動的フィルターの真髄 先日の「エンベロープ版」に引き続き、今回はエンベロープを**「ボリンジャーバンド (BB)」**に置き換えたTradingView専用インジケーターのPineスクリプト(v6)を無料公開します。 エンベロープが「固定のパーセンテージ」で乖離幅を測るのに対し、ボリンジャーバンドは「標準偏差(σ)」を用いて相場のボラティリティ(変動率)に合わせてバンド幅が動的に収縮・拡大します。これにより、ボラティリティの低い相場でのチャンスを逃さず、逆にボラティリティが爆発している時のダマシを回避しやすくなります。 🚀 このインジケーターの3つの強み MTF(マルチタイムフレーム)ボリンジャーバンド 上位足のSMAと標準偏差をベースにしたBBを表示。価格がBBの±2σ(設定で変更可能)の外側に達した時のみ、逆張りの極度の警戒(チャンス)ゾーンとして判定します。相場のボラティリティに追従するのが最大の特徴です。 3種のオシレーターとの強固な連携 BBの外側にいる時だけ、「RSIダイバージェンス」「ストキャスティクス・クロス」「MACD・クロス」のサインを点灯。バンドウォーク(BBに沿って一方向に進み続ける現象)に巻き込まれるリスクを、オシレーターの反転確認によって軽減します。 3x3 DMA(ずらし移動平均)による早期撤退センサー 前回同様、ディナポリの手法である「3x3 DMA」を搭載。エントリー後にこのラインを割り込んだら早期撤退するという明確なルール作りが可能です。 🔍 プロはどうやってダマシを回避しているのか? 今回のロジックも優秀ですが、長年ランキング上位に居続けるプロのロジックは、さらに複雑な環境認識や独自のボラティリティフィルターを何層も実装しています。 自作インジケーターの成績が行き詰まった時は、実際に長期間利益を出し続けている「本物の市販EAやロジック」の挙動(エントリーと決済のタイミング)を観察することが一番の勉強になります。 👉 プロのフィルターロジックが詰まった実績EA(一本勝ち)を参考にする 公開:Pineスクリプト (v6) コード全文 TradingViewの「Pineエディタ」を開き、以下のコードをコピペして「チャートに追加」をクリックするだけで、すぐにご利用いただけます。(※末尾のアラート条件はBB用に補完してあります) //@version=6 indicator("MTF SMA & ボリンジャーバンド + 3x3 DMA (MACD搭載)", overlay=true, max_labels_count=500) // --- 1. 設定グループ --- string GRP_MAIN = "基準となるSMA・BBの設定" mtf_res = input.timeframe("D", title="基準とする時間足 (変更可能)", group=GRP_MAIN) sma_len = input.int(20, title="SMAの期間", group=GRP_MAIN) // 🌟 今回の変更:エンベロープの幅を削除し、ボリンジャーバンドの標準偏差に変更 bb_mult = input.float(2.0, title="ボリンジャーバンドの標準偏差(σ)", step=0.1, group=GRP_MAIN) string GRP_MACRO = "長期トレンド設定" use_macro = input.bool(true, title="長期トレンドSMAを表示", group=GRP_MACRO) macro_len = input.int(75, title="長期トレンドSMAの期間", group=GRP_MACRO) string GRP_DMA = "早期撤退センサー" show_dma = input.bool(true, title="3x3 DMA を表示", group=GRP_DMA) // --- 2. オシレーターのパラメータ設定 --- string GRP_OSC = "反転補助シグナル設定(BB外限定)" use_rsi_div = input.bool(true, title="① RSIダイバージェンスを表示", group=GRP_OSC) rsi_len = input.int(14, title=" ▶ RSI 期間", group=GRP_OSC) use_stoch_cross = input.bool(true, title="② ストキャスティクスを表示", group=GRP_OSC) stoch_len = input.int(14, title=" ▶ ストキャス 期間", group=GRP_OSC) stoch_k_len = input.int(3, title=" ▶ ストキャス %K", group=GRP_OSC) stoch_d_len = input.int(3, title=" ▶ ストキャス %D", group=GRP_OSC) stoch_ob = input.int(80, title=" ▶ 買われすぎ水準", group=GRP_OSC) stoch_os = input.int(20, title=" ▶ 売られすぎ水準", group=GRP_OSC) use_macd_cross = input.bool(true, title="③ MACDクロスを表示", group=GRP_OSC) macd_fast = input.int(8, title=" ▶ MACD 短期", group=GRP_OSC) macd_slow = input.int(17, title=" ▶ MACD 長期", group=GRP_OSC) macd_sig = input.int(9, title=" ▶ MACD シグナル", group=GRP_OSC) // --- 3. 3x3 DMA の計算と描画 --- dma3 = ta.sma(close, 3) plot(show_dma ? dma3 : na, color=color.fuchsia, linewidth=2, offset=3, title="3x3 DMA") // --- 4. MTF移動平均線と標準偏差(BB用)の取得 --- sma_main_calc = ta.sma(close, sma_len) sma_macro_calc = ta.sma(close, macro_len) // 🌟 今回の変更:ボリンジャーバンド用の標準偏差を計算 stdev_calc = ta.stdev(close, sma_len) is_mtf = timeframe.in_seconds(mtf_res) > timeframe.in_seconds("") sma_main_mtf = is_mtf ? request.security(syminfo.tickerid, mtf_res, sma_main_calc, lookahead=barmerge.lookahead_off) : sma_main_calc sma_macro_mtf = is_mtf ? request.security(syminfo.tickerid, mtf_res, sma_macro_calc, lookahead=barmerge.lookahead_off) : sma_macro_calc stdev_mtf = is_mtf ? request.security(syminfo.tickerid, mtf_res, stdev_calc, lookahead=barmerge.lookahead_off) : stdev_calc // --- 5. 基準SMAの描画 --- plot(sma_main_mtf, color=color.aqua, linewidth=3, title="基準SMA") plot(use_macro ? sma_macro_mtf : na, color=color.orange, linewidth=2, title="長期トレンドSMA") // --- 6. 🌟 MTFボリンジャーバンドの計算と描画 --- bb_upper = sma_main_mtf + (bb_mult * stdev_mtf) bb_lower = sma_main_mtf - (bb_mult * stdev_mtf) plot(bb_upper, color=color.new(color.red, 50), title="BB(上限)") plot(bb_lower, color=color.new(color.green, 50), title="BB(下限)") // --- 7. ① RSIダイバージェンス --- rsi_val = ta.rsi(close, rsi_len) rsi_ph = ta.pivothigh(rsi_val, 2, 2) rsi_pl = ta.pivotlow(rsi_val, 2, 2) var float last_ph_rsi = na var float last_ph_price = na var float last_pl_rsi = na var float last_pl_price = na bearish_div = not na(rsi_ph) and high[2] > last_ph_price and rsi_val[2] < last_ph_rsi bullish_div = not na(rsi_pl) and low[2] < last_pl_price and rsi_val[2] > last_pl_rsi if not na(rsi_ph) last_ph_rsi := rsi_val[2] last_ph_price := high[2] if not na(rsi_pl) last_pl_rsi := rsi_val[2] last_pl_price := low[2] // 🌟 エンベロープからBBへの条件変更 final_bearish_div = bearish_div and high[2] >= bb_upper[2] final_bullish_div = bullish_div and low[2] <= bb_lower[2] gap = ta.atr(14) * 0.2 if use_rsi_div and final_bearish_div label.new(x=bar_index[2], y=high[2] + gap[2], text="RSI Div", color=color.new(color.red, 30), textcolor=color.white, style=label.style_label_down, size=size.small) if use_rsi_div and final_bullish_div label.new(x=bar_index[2], y=low[2] - gap[2], text="RSI Div", color=color.new(color.green, 30), textcolor=color.white, style=label.style_label_up, size=size.small) // --- 8. ② ストキャスティクス・クロス --- raw_stoch = ta.stoch(close, high, low, stoch_len) stoch_k_val = ta.sma(raw_stoch, stoch_k_len) stoch_d_val = ta.sma(stoch_k_val, stoch_d_len) stoch_cross_down = ta.crossunder(stoch_k_val, stoch_d_val) and (stoch_k_val >= stoch_ob or stoch_d_val >= stoch_ob) stoch_cross_up = ta.crossover(stoch_k_val, stoch_d_val) and (stoch_k_val <= stoch_os or stoch_d_val <= stoch_os) plotshape(use_stoch_cross and stoch_cross_down and high >= bb_upper, title="ストキャス売", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.normal) plotshape(use_stoch_cross and stoch_cross_up and low <= bb_lower, title="ストキャス買", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.normal) // --- 9. ③ MACD・クロス --- [macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_sig) macd_cross_down = ta.crossunder(macd_line, signal_line) macd_cross_up = ta.crossover(macd_line, signal_line) plotshape(use_macd_cross and macd_cross_down and high >= bb_upper, title="MACD売", style=shape.diamond, location=location.abovebar, color=color.orange, size=size.normal) plotshape(use_macd_cross and macd_cross_up and low <= bb_lower, title="MACD買", style=shape.diamond, location=location.belowbar, color=color.aqua, size=size.normal) // --- 10. アラート条件の設定 --- touch_upper = high >= bb_upper touch_lower = low <= bb_lower alertcondition(touch_upper, title="【売】BB上限タッチ", message="BB上限にタッチ!下位足で反転サインと3x3 DMA抜けを監視してください。") alertcondition(touch_lower, title="【買】BB下限タッチ", message="BB下限にタッチ!下位足で反転サインと3x3 DMA抜けを監視してください。") ご自身のトレードスタイルやボラティリティに合わせて、設定画面からBBの標準偏差(初期値は2.0)や、MTFの基準時間足を自由にカスタマイズ可能です!

2026年7月20日 · 3 min · AIでEA開発入門

【TradingView】MTF SMA & エンベロープ + 3x3 DMA (MACD搭載) の無料Pineスクリプト公開

導入:トレンドと逆張りを極める複合インジケーター 今回は、TradingViewで使える非常に強力な複合インジケーターのPineスクリプト(v6)を無料公開します。 このインジケーターは、**「マルチタイムフレーム(MTF)のSMAとエンベロープ」**を軸に、相場の行き過ぎ(買われすぎ・売られすぎ)からの反発を精緻に捉える設計になっています。単なる逆張りではなく、複数のフィルターを組み合わせることでダマシを極限まで減らす工夫が施されています。 🚀 このインジケーターの3つの強み MTF(マルチタイムフレーム)エンベロープによる環境認識 上位足のSMAをベースにしたエンベロープ(乖離バンド)を表示。価格がエンベロープの外側に達した時のみ、逆張りの警戒ゾーンとして判定します。 3種の強力なオシレーターによる反転シグナル(エンベロープ外限定) エンベロープの外側にいる時だけ、「RSIのダイバージェンス」「ストキャスティクスのクロス」「MACDのクロス」のサインをチャート上に点灯させます。意味のない場所でのクロスを無視できるため、勝率が格段に上がります。 3x3 DMA(ずらし移動平均)による早期撤退センサー ジョー・ディナポリの手法で有名な「3x3 DMA」を搭載。エントリー後にこのラインを割り込んだら早期撤退(または利確)するという、決済の目安として非常に機能します。 🔍 プロはどうやってダマシを回避しているのか? 今回のロジックも優秀ですが、長年ランキング上位に居続けるプロのロジックは、さらに複雑な環境認識や独自のボラティリティフィルターを何層も実装しています。 自作インジケーターの成績が行き詰まった時は、実際に長期間利益を出し続けている「本物の市販EAやロジック」の挙動(エントリーと決済のタイミング)を観察することが一番の勉強になります。 👉 プロのフィルターロジックが詰まった実績EA(一本勝ち)を参考にする 公開:Pineスクリプト (v6) コード全文 TradingViewの「Pineエディタ」を開き、以下のコードをコピペして「チャートに追加」をクリックするだけで、すぐにご利用いただけます。 //@version=6 indicator("MTF SMA & エンベロープ + 3x3 DMA (MACD搭載)", overlay=true, max_labels_count=500) // --- 1. 設定グループ --- string GRP_MAIN = "基準となるSMAの設定" mtf_res = input.timeframe("D", title="基準とする時間足 (変更可能)", group=GRP_MAIN) sma_len = input.int(20, title="SMAの期間", group=GRP_MAIN) kairi_threshold = input.float(1.0, title="エンベロープの幅(%)", step=0.1, group=GRP_MAIN) string GRP_MACRO = "長期トレンド設定" use_macro = input.bool(true, title="長期トレンドSMAを表示", group=GRP_MACRO) macro_len = input.int(75, title="長期トレンドSMAの期間", group=GRP_MACRO) string GRP_DMA = "早期撤退センサー" show_dma = input.bool(true, title="3x3 DMA を表示", group=GRP_DMA) // --- 2. オシレーターのパラメータ設定 --- string GRP_OSC = "反転補助シグナル設定(エンベロープ外限定)" use_rsi_div = input.bool(true, title="① RSIダイバージェンスを表示", group=GRP_OSC) rsi_len = input.int(14, title=" ▶ RSI 期間", group=GRP_OSC) use_stoch_cross = input.bool(true, title="② ストキャスティクスを表示", group=GRP_OSC) stoch_len = input.int(14, title=" ▶ ストキャス 期間", group=GRP_OSC) stoch_k_len = input.int(3, title=" ▶ ストキャス %K", group=GRP_OSC) stoch_d_len = input.int(3, title=" ▶ ストキャス %D", group=GRP_OSC) stoch_ob = input.int(80, title=" ▶ 買われすぎ水準", group=GRP_OSC) stoch_os = input.int(20, title=" ▶ 売られすぎ水準", group=GRP_OSC) // 🌟 今回の追加:MACDの設定(初期値はディナポリ仕様) use_macd_cross = input.bool(true, title="③ MACDクロスを表示", group=GRP_OSC) macd_fast = input.int(8, title=" ▶ MACD 短期", group=GRP_OSC) macd_slow = input.int(17, title=" ▶ MACD 長期", group=GRP_OSC) macd_sig = input.int(9, title=" ▶ MACD シグナル", group=GRP_OSC) // --- 3. 3x3 DMA の計算と描画 --- dma3 = ta.sma(close, 3) plot(show_dma ? dma3 : na, color=color.fuchsia, linewidth=2, offset=3, title="3x3 DMA") // --- 4. MTF移動平均線の取得 --- sma_main_calc = ta.sma(close, sma_len) sma_macro_calc = ta.sma(close, macro_len) is_mtf = timeframe.in_seconds(mtf_res) > timeframe.in_seconds("") sma_main_mtf = is_mtf ? request.security(syminfo.tickerid, mtf_res, sma_main_calc, lookahead=barmerge.lookahead_off) : sma_main_calc sma_macro_mtf = is_mtf ? request.security(syminfo.tickerid, mtf_res, sma_macro_calc, lookahead=barmerge.lookahead_off) : sma_macro_calc // --- 5. 基準SMAの描画 --- plot(sma_main_mtf, color=color.aqua, linewidth=3, title="基準SMA") plot(use_macro ? sma_macro_mtf : na, color=color.orange, linewidth=2, title="長期トレンドSMA") // --- 6. MTFエンベロープの計算と描画 --- env_upper = sma_main_mtf * (1 + (kairi_threshold / 100)) env_lower = sma_main_mtf * (1 - (kairi_threshold / 100)) plot(env_upper, color=color.new(color.red, 50), title="エンベロープ(上限)") plot(env_lower, color=color.new(color.green, 50), title="エンベロープ(下限)") // --- 7. ① RSIダイバージェンス --- rsi_val = ta.rsi(close, rsi_len) rsi_ph = ta.pivothigh(rsi_val, 2, 2) rsi_pl = ta.pivotlow(rsi_val, 2, 2) var float last_ph_rsi = na var float last_ph_price = na var float last_pl_rsi = na var float last_pl_price = na bearish_div = not na(rsi_ph) and high[2] > last_ph_price and rsi_val[2] < last_ph_rsi bullish_div = not na(rsi_pl) and low[2] < last_pl_price and rsi_val[2] > last_pl_rsi if not na(rsi_ph) last_ph_rsi := rsi_val[2] last_ph_price := high[2] if not na(rsi_pl) last_pl_rsi := rsi_val[2] last_pl_price := low[2] final_bearish_div = bearish_div and high[2] >= env_upper[2] final_bullish_div = bullish_div and low[2] <= env_lower[2] gap = ta.atr(14) * 0.2 if use_rsi_div and final_bearish_div label.new(x=bar_index[2], y=high[2] + gap[2], text="RSI Div", color=color.new(color.red, 30), textcolor=color.white, style=label.style_label_down, size=size.small) if use_rsi_div and final_bullish_div label.new(x=bar_index[2], y=low[2] - gap[2], text="RSI Div", color=color.new(color.green, 30), textcolor=color.white, style=label.style_label_up, size=size.small) // --- 8. ② ストキャスティクス・クロス --- raw_stoch = ta.stoch(close, high, low, stoch_len) stoch_k_val = ta.sma(raw_stoch, stoch_k_len) stoch_d_val = ta.sma(stoch_k_val, stoch_d_len) stoch_cross_down = ta.crossunder(stoch_k_val, stoch_d_val) and (stoch_k_val >= stoch_ob or stoch_d_val >= stoch_ob) stoch_cross_up = ta.crossover(stoch_k_val, stoch_d_val) and (stoch_k_val <= stoch_os or stoch_d_val <= stoch_os) plotshape(use_stoch_cross and stoch_cross_down and high >= env_upper, title="ストキャス売", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.normal) plotshape(use_stoch_cross and stoch_cross_up and low <= env_lower, title="ストキャス買", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.normal) // --- 9. 🌟 ③ MACD・クロス(エンベロープ外限定) --- [macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_sig) macd_cross_down = ta.crossunder(macd_line, signal_line) macd_cross_up = ta.crossover(macd_line, signal_line) // クロスした瞬間の価格がエンベロープの外側にいる場合のみ表示 plotshape(use_macd_cross and macd_cross_down and high >= env_upper, title="MACD売", style=shape.diamond, location=location.abovebar, color=color.orange, size=size.normal) plotshape(use_macd_cross and macd_cross_up and low <= env_lower, title="MACD買", style=shape.diamond, location=location.belowbar, color=color.aqua, size=size.normal) // --- 10. アラート条件の設定 --- touch_upper = high >= env_upper touch_lower = low <= env_lower alertcondition(touch_upper, title="【売】エンベロープ上限タッチ", message="エンベロープ上限にタッチ!下位足で反転サインと3x3 DMA抜けを監視してください。") alertcondition(touch_lower, title="【買】エンベロープ下限タッチ", message="エンベロープ下限にタッチ!下位足で反転サインと3x3 DMA抜けを監視してください。") 設定画面から、監視する時間足やインジケーターの表示ON/OFFを自由にカスタマイズ可能です。ぜひご自身のトレードスタイルに合わせて調整してみてください!

2026年7月20日 · 3 min · AIでEA開発入門

【SMC完全対応】機関投資家の資金の流れを可視化する All-In-One インジケーター v6

SMC(スマートマネー・コンセプト)とは? SMC(Smart Money Concepts)は、銀行やヘッジファンドなど「相場を動かす巨大な資金(スマートマネー)」の足跡を読み解き、彼らと同じ方向にトレードを行うという海外で大流行しているプライスアクション分析の手法です。 しかし、SMCには「BOS」「CHoCH」「オーダーブロック」「FVG」など専門用語が多く、チャート上でそれらすべてを自力で見つけ出すのは非常に手間がかかります。 そこで今回、SMCの分析に必要なすべての要素を1つのチャートに全自動で描画する**「SMC_Ultimate_All_In_One_v6」**インジケーターを作成しました。 実装されている主要機能 1. BOS / CHoCH の自動検知 相場の構造破壊(BOS = Break of Structure)と、トレンド転換の初期シグナル(CHoCH = Change of Character)を自動で判定し、チャート上にテキストで描画します。これにより、目線の固定が機械的に行えます。 2. オーダーブロック(OB)の可視化 機関投資家が大口の注文を入れた痕跡である「オーダーブロック」をボックスで強調表示します。さらに、上位足(マルチタイムフレーム)のオーダーブロックも同時に重ねて表示できるため、環境認識の精度が劇的に向上します。 3. FVG(フェアバリューギャップ) 価格が急変動した際に生じる「価格の真空地帯(FVG)」を色付きで描画します。価格は磁石のようにFVGを埋めに戻る習性があるため、強力なエントリー/利確のターゲットになります。 4. P&D ゾーン(プレミアム&ディスカウント) 直近50期間の最高値と最安値の中央値(Equilibrium / 半値線)をリアルタイムで描画します。この線より上(プレミアムゾーン)で売り、下(ディスカウントゾーン)で買うのがSMCの鉄則です。 TradingViewへの追加方法 [SYSTEM NOTICE] 実行環境に関するお知らせ 本インジケーター(v6)は、TradingViewの最新バージョン(Pine Script v6)で動作するように最適化されています。 Pine Scriptを使った独自のインジケーター開発やバックテストには、TradingViewのアカウントが必須となります。 👉 TradingViewの公式アカウント作成・Proへのアップグレードはこちら(必須環境) 以下のソースコードをコピーし、TradingView下部の「Pineエディタ」に貼り付けて「チャートに追加」をクリックしてください。 ...

2026年7月6日 · 3 min · AIでEA開発入門
【法令遵守・免責事項】 当サイトに掲載されているソースコードおよび記事コンテンツはプログラミングおよび相場構造の研究・情報シェアを目的としており、証拠金取引等の投資勧誘や金融商品の売買助言・コンサルティング業を担うものではございません。また公開された過去の検証実績は将来の確かな利益や効果を何ら確約・保証するものではありません。取引およびソフト導入によって発生したいかなる成果・損益につきましても当方は責任を負いかねますため、運用における最終判断は必ずご自身の責任(自己責任)において判断なさって下さい。