
ダイナミック・スライド・バイア・ムービング・エッジ・ナイト・バンド・ブレイク量化取引戦略は,オリバー・ヴェレズの教義に基づいた高級取引システムで,技術分析と動量取引の核心要素を組み合わせている.この戦略は,主に短期 (20周期) と長期 (200周期) のシンプル・ムービング・エッジ (SMA) の間の関係を利用し,価格動態,波動性,落の形状を組み合わせて,ナイト・バンド・エリアで高確率のブレイク取引の機会を探している.この戦略の核心的な特徴は,移動平均と密接に関連したナイト・バンド・エリア内で,強烈な方向性を持つ”大象柱”と色化信号を識別し,同時に,想定されたリスク報酬率の変化を利用して,ストップダウズとストップダウズレベルを管理している.
この戦略の核心となる原則は,以下のいくつかの重要な要素の協働に基づいています.
移動平均の二重システム戦略: 20周期SMAと200周期SMAを利用して取引の枠組みを作成する. この2つの平均線は比較的小さな距離にあるとき (狭い帯状の状態で,差は1.5%未満) システムでは潜在的な取引信号を探します.
平均線斜率検証策略: 20周期SMAの角度を計算して ((反正切数関数を使用して計算する)),市場が十分な動きを持っていることを確認し,角が30度以上の場合にのみ入場を検討する.
入口信号のタイプ:
リスク管理の枠組み:
市場状況を判断する戦略: 市場を判断する2つの均線間の距離を計算する.
多頭入場条件要求:狭帯状態 + 有効斜率 + 閉盘価格がSMA20以上 + SMA20がSMA200以上 + 大象柱形. 空頭入場条件要求:狭帯状態 + 有効斜率 + 閉盘価格SMA20以下 + SMA20以下 SMA200以下 + 大象柱形.
この戦略は,コードを深く分析した結果,以下の顕著な利点があります.
複数の認証メカニズム策略は,均線関係,均線斜率,価格位置,特殊な落形状などの複数の次元を組み合わせた確認要素を組み合わせ,劣質な信号を効果的にフィルターし,取引の質を向上させる.
市場の状況に適応する狭帯と広帯の状態を区別することで,戦略は市場条件に最も適した状況で機会を探し出し,すでに拡大しているトレンドの中で高殺低を追求することを避けることができます.
ダイナミックなリスク管理ATRを波動率の測定ツールとして使用し,固定ポイントではなく,現在の市場の波動的動態に合わせてストップ・ロズと利益の目標を調整できるようにします.
分級収益戦略利益の一部と最終利益の2段階の戦略を採用することで,有利な市場状況で利益の一部をロックし,早めにすべての市場を離脱して大きなトレンドを逃さないことを保証します.
スマート加仓メカニズム: 色の変化シグナルにより,ポジションを上げる機会を提供し,同じトレンドで最大2回のポジションを増やすことを許可し,資本利用の効率を最適化します.
モバイル・ストラスト・プロテクション: 価格が第1の利益目標に達すると,ストップロスは自動的に利益の平衡点に移され”,ゼロリスク”取引を実現し,既得利益を保護する.
ビジュアルアシスタント戦略は,明確な視覚的な指示と表盤を提供し,トレーダーが信号と市場の状態を直感的に認識し,意思決定プロセスを簡素化します.
価格行動と技術指標の統合オリバー・ヴェレツの価格行動理論と伝統的な技術指標を組み合わせ,より安定した取引システムを作り出しました.
この戦略は合理的に設計されていますが,以下の潜在的なリスクと課題があります.
パラメータ感度戦略の性能は,SMA周期,ATR長さ,リスク報酬率などの重要なパラメータの設定に大きく依存します.異なる市場と時間枠には,異なるパラメータの組み合わせが求められ,十分な歴史の追及と最適化が必要です.
偽の突破の危険性: 狭帯域でのブレークは,特に低波動の市場環境では,時には偽ブレークとなる. 戦略は”象柱”を使用することを要求しているが,偽ブレークを減らすことはできません.
スライドポイントと実行リスク: 固定取引では,特に波動が大きい場合,滑り点の問題が発生し,実際の入場価格と理想価格が一致せず,全体のリスク・リターン構造に影響を与える可能性があります.
資金管理の課題固定で10%の資金を使用し,2回の加減を許容し,連続的な損失や市場の激しい変動の場合,過度のリスクを引き起こす可能性があります.
平均線に過度依存している策略は主にSMAがトレンドの方向を判断することに依存するが,区間振動市場では,平均線が頻繁に交差し,偽信号を過剰に発生させる可能性がある.
市場環境のフィルタリングの欠如: 戦略は,異なるマクロマーケット環境 (例えば,高波動性または低波動性,牛市または熊市) に調整されていないため,特定の市場段階で不良なパフォーマンスを発揮することがあります.
資金の曲線を撤回する: 策略が加仓を許容しているため,トレンドが突然逆転すると,特に2回の加仓後に市場が逆転した場合には,大きなアカウントの撤収が起こり得る.
解決策は,追加市場環境フィルターを追加し,資金管理比率を調整し,異なる市場条件に応じてパラメータを動的に調整し,信号を確認するために他の技術指標を追加することを検討することです.
この戦略は,以下の方向で最適化できます.
動的狭帯の値: 現在の戦略は,固定1.5%と2%を狭帯と幅帯の判断値として使用している. 戦略が異なる市場環境により適したように,これらの値を歴史的な変動率の動向に応じて調整することを考えることができる. 最適化理由:異なる市場と時間枠は異なる変動特性を有しており,固定値は柔軟性がない可能性があります.
均線システム強化: 中期平均線 ((50周期SMAのような) を加え,3つの平均線システムを形成するか,またはインデックス移動平均線 ((EMA) をSMAに取って代わることで,価格変化に対する感受性を高めることを検討できる. 最適化理由: 中期参照点を加えることで,より包括的な市場視野を提供し,EMAは最新の価格変化に対してより敏感である.
斜率計算の改善:現在の斜率計算は比較的簡単で,線形回帰斜率または多周期斜率変化を使用してより安定した方向指示を得る事が考えられます. 最適化理由:単点斜率計算は短期的な変動の影響を受けやすいため,改善すると方向判断の安定性が向上します.
添付量確認: 入場信号に取引量条件を追加し,例えば”象柱”が平均取引量より高い突破を伴うように要求する. 最適化理由:取引量は価格変化の有効性の重要な確認要因であり,偽の突破を大幅に減らすことができる.
ダイナミックなリスク・リターン比率: 市場の変動性またはATR比率に応じて動的に調整するリスク・リターン比率,低変動の市場ではより高いRR比率を使用し,高変動の市場ではより保守的な設定を使用する.最適化理由:異なる変動環境下での収益可能性が異なるため,動的に調整することで,各取引の期待される収益を最適化できる.
ポジションの最適化優化理由:より厳格な加減条件は,追加ポジションの成功率を高め,全体的なリスクを低減する.
市場環境のフィルター: 変動率指標 (VIXなど) やトレンド強度指標などのマクロマーケット環境フィルターを追加し,不利な市場環境で取引を減らしたり停止したりする. 最適化理由: 異なる市場段階での戦略のパフォーマンスは大きく異なっており,環境フィルターは不利な条件で取引を回避する.
自動ストップ戦略: 市場構造に基づく自己適応ストップ戦略を開発し,前期の高低,変動率のパーセント,または価格構造を動的ストップ参照点として使用する. 最適化理由: 固定ATR倍数のストップは,時として市場構造にうまくマッチすることができない.自己適応方法は,実際の価格行動に適している.
動的傾斜双移動平均の狭帯突破量化取引戦略は,複数の技術分析の要素を組み合わせた総合的な取引システムであり,精密に定義された入場条件,多層の確認機構,完善したリスク管理フレームワークによって,トレーダーに構造化された市場参加の方法を提供している.この戦略は,SMA,ATR,価格行動などの基礎技術分析の概念に基づいているが,オリバー・ヴェレズの方法論によってこれらの要素を整合して,規則が明確な取引システムに統合している.
策略の核心的な優点は,移動平均の狭い帯域内の高確率の突破機会を識別し”,象柱”および”色変化”などの特定の価格パターンでシグナルの有効性を確認できることです.同時に,完善したリスク管理構造は,資金の安全性と利益保護を保証します.
しかし,この戦略は,パラメータの感受性,偽突破リスク,資金管理の課題などの問題にも直面しています. 狭帯の値の最適化,平均線システムの強化,斜率計算の改善,取引量確認の追加,ダイナミックリスクリターン比率の実施,ポジション加減条件の最適化,市場環境のフィルタリングの追加,自己適応の停止戦略の開発などの改善により,戦略の安定性と適応性をさらに向上させることができます.
全体として,これは合理的で論理的に明確な設計された量化取引戦略であり,取引経験のある投資家,特に技術的分析と体系化された取引方法を好むトレーダーに適しています.適切なパラメータ最適化とリスク管理により,この戦略は,様々な市場環境で安定した取引パフォーマンスを実現する可能性があります.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Oliver Velez Advanced Strategy v2", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, pyramiding=2, calc_on_order_fills=true, calc_on_every_tick=true)
// === INPUTS ===
smaLen1 = input.int(20, title="SMA Short")
smaLen2 = input.int(200, title="SMA Long")
atrLen = input.int(14, title="ATR Length")
rr1 = input.float(2.5, title="RR for Partial Profit", step=0.1)
rr2 = input.float(4.0, title="RR for Final Profit", step=0.1)
// === INDICATORS ===
sma20 = ta.sma(close, smaLen1)
sma200 = ta.sma(close, smaLen2)
atr = ta.atr(atrLen)
angle = math.atan(sma20 - sma20[1]) * 180 / math.pi
// === STATES ===
isNarrow = math.abs(sma20 - sma200) / sma200 < 0.015
isWide = math.abs(sma20 - sma200) / sma200 >= 0.02
validSlope = angle > 30
// === CANDLE PATTERNS ===
elephant_long = close > open and (close - open) > 1.5 * atr and high > high[1]
elephant_short = close < open and (open - close) > 1.5 * atr and low < low[1]
color_change_long = close > open and close[1] < open[1]
color_change_short = close < open and close[1] > open[1]
// === LONG ENTRY ===
long_primary = isNarrow and validSlope and close > sma20 and sma20 > sma200 and elephant_long
long_add = isNarrow and color_change_long and close > sma20
long_entry_price = close
long_stop = math.min(low, close - 2 * atr)
long_risk = long_entry_price - long_stop
long_tp1 = long_entry_price + rr1 * long_risk
long_tp2 = long_entry_price + rr2 * long_risk
// === SHORT ENTRY ===
short_primary = isNarrow and validSlope and close < sma20 and sma20 < sma200 and elephant_short
short_add = isNarrow and color_change_short and close < sma20
short_entry_price = close
short_stop = math.max(high, close + 2 * atr)
short_risk = short_stop - short_entry_price
short_tp1 = short_entry_price - rr1 * short_risk
short_tp2 = short_entry_price - rr2 * short_risk
// === LONG EXECUTION ===
if (long_primary)
strategy.entry("Long Entry", strategy.long, comment="Elephant Bar Long")
strategy.exit("Long TP1", from_entry="Long Entry", limit=long_tp1, stop=long_stop)
strategy.exit("Long TP2", from_entry="Long Entry", qty_percent=50, limit=long_tp2)
if (long_add)
strategy.entry("Long Add", strategy.long, comment="Color Change Long")
strategy.exit("Add TP1", from_entry="Long Add", limit=long_tp1, stop=long_stop)
strategy.exit("Add TP2", from_entry="Long Add", qty_percent=50, limit=long_tp2)
// === SHORT EXECUTION ===
if (short_primary)
strategy.entry("Short Entry", strategy.short, comment="Elephant Bar Short")
strategy.exit("Short TP1", from_entry="Short Entry", limit=short_tp1, stop=short_stop)
strategy.exit("Short TP2", from_entry="Short Entry", qty_percent=50, limit=short_tp2)
if (short_add)
strategy.entry("Short Add", strategy.short, comment="Color Change Short")
strategy.exit("Short TP1 Add", from_entry="Short Add", limit=short_tp1, stop=short_stop)
strategy.exit("Short TP2 Add", from_entry="Short Add", qty_percent=50, limit=short_tp2)
// === BREAKEVEN CHECK ===
var float breakeven_price = na
long_breakeven_trigger = high >= long_tp1
short_breakeven_trigger = low <= short_tp1
breakeven_price := long_breakeven_trigger or short_breakeven_trigger ? close : breakeven_price
// === ALERTS ===
alertcondition(long_primary, title="Long Elephant", message="Elephant Bar Long Entry Triggered!")
alertcondition(long_add, title="Color Change Long", message="Color Change Long Entry Triggered!")
alertcondition(long_breakeven_trigger, title="Long Breakeven", message="Move SL to Breakeven for Long")
alertcondition(short_primary, title="Short Elephant", message="Elephant Bar Short Entry Triggered!")
alertcondition(short_add, title="Color Change Short", message="Color Change Short Entry Triggered!")
alertcondition(short_breakeven_trigger, title="Short Breakeven", message="Move SL to Breakeven for Short")
// === PLOTTING ===
plot(sma20, color=color.orange, title="SMA 20")
plot(sma200, color=color.blue, title="SMA 200")
bgcolor(isNarrow ? color.new(color.green, 85) : na)
plotshape(long_primary, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="E")
plotshape(long_add, style=shape.circle, location=location.belowbar, color=color.lime, size=size.tiny, text="A")
plotshape(short_primary, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="E")
plotshape(short_add, style=shape.circle, location=location.abovebar, color=color.maroon, size=size.tiny, text="A")
// === DASHBOARD ===
var label dash = na
label.delete(dash)
dash := label.new(x=bar_index, y=high, text=
"Oliver Velez Strategy\n" +
"SMA 20 Slope: " + str.tostring(angle, "#.##") + "°\n" +
"State: " + (isNarrow ? "NARROW" : "WIDE") + "\n" +
"Last Entry: " + (long_primary ? "Long E-Bar" : long_add ? "Long Add" : short_primary ? "Short E-Bar" : short_add ? "Short Add" : "None") + "\n" +
"Breakeven: " + (breakeven_price != na ? str.tostring(breakeven_price, "#.##") : "No"), style=label.style_label_left, color=color.new(color.black, 85), textcolor=color.white)