資源の読み込みに... 荷物...

複数の指標のトレンドフォローと波動性ブレイク戦略

作者: リン・ハーンチャオチャン開催日:2024年12月12日 15:48:29
タグ:エイマADXATROBVRSI

img

概要

この戦略は,複数の技術指標を用いてトレンドフォローと波動性ブレイクアウトアプローチを組み合わせる包括的な取引戦略である.この戦略には,EMAシステム,トレンド強度のためのADX,波動性測定のためのATR,ボリューム分析のためのOBV,および市場トレンドとブレイクアウト機会を把握するためのIchimoku Cloudおよびストーキャスティックオシレーターなどの補完指標が統合されている.特定の取引時間のみで動作することによって取引効率を最適化するためにタイムフィルタが実装されている.

戦略原則

基本的な論理は 多層技術分析に基づいています

  1. 50期と200期 EMA を使った傾向を追求するシステム
  2. ADX によるトレンド強度確認
  3. Ichimoku Cloud を使った追加のトレンド検証
  4. ストカスティックオシレーターによる過剰購入/過剰売却の識別
  5. ATRを用いた動的ストップ損失と利益目標
  6. OBVによる量確認

購入シグナルは,次の場合生成されます.

  • 許可された取引時間内
  • 短期EMAを超える価格
  • 短期EMAは長期EMAより高い
  • ADX 値以上
  • イチモク・クラウドより高い価格
  • 過剰販売地域におけるストカスティック

戦略 の 利点

  1. 複数の指標のクロスバリデーションにより信号の信頼性が向上する
  2. トレンドフォローと波動性ブレイクの組み合わせにより適応性が向上します
  3. タイムフィルターは非効率な取引期間を回避します
  4. ダイナミックストップ・ロストと利益目標が市場の変動に適応する
  5. 集積型価格分析は,市場全体的な見方を提供します
  6. 体系的な入国/出入国規則は主観的な判断を減らす

戦略リスク

  1. 複数の指標が遅い信号を引き起こす可能性があります
  2. 変動市場における誤った信号
  3. 複合パラメータの最適化と過剰なフィットメントリスク
  4. 時間制限により重要な市場動向が見逃される可能性があります
  5. 大幅なストップは,より大きな個人損失をもたらす可能性があります.

リスク管理の提案:

  • 定期的なパラメータ最適化レビュー
  • 変動性フィルターを追加することを検討する
  • 資金管理の厳格な規則を導入する
  • 傾向確認の追加指標を追加する

戦略の最適化方向

  1. ダイナミック指標調整のための適応パラメータシステムを導入
  2. 異なる信号生成規則の市場体制分類を追加する
  3. 過去データ分析に基づいて時間フィルターを最適化
  4. トレーリングストップでストップ・ロスの戦略を改善する
  5. 信号品質の向上のために市場情勢指標を組み込む

概要

この戦略は,複数の技術指標の包括的な適用を通じて完全な取引システムを構築する.その強みは,パラメータ最適化と信号遅延の課題に直面しながら,多層指標クロス検証と厳格なリスク管理にあります.継続的な最適化と改善を通じて,この戦略は異なる市場条件で安定したパフォーマンスの可能性を示しています.


/*backtest
start: 2024-11-11 00:00:00
end: 2024-12-10 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Khaleq Strategy Pro - Fixed Version", overlay=true)

// === Input Settings ===
ema_short = input.int(50, "EMA Short", minval=1)
ema_long = input.int(200, "EMA Long", minval=1)
adx_threshold = input.int(25, "ADX Threshold", minval=1)
atr_multiplier = input.float(2.0, "ATR Multiplier", minval=0.1)
time_filter_start = input(timestamp("0000-01-01 09:00:00"), "Trading Start Time", group="Time Filter")
time_filter_end = input(timestamp("0000-01-01 17:00:00"), "Trading End Time", group="Time Filter")

// === Ichimoku Settings ===
tenkan_len = 9
kijun_len = 26
senkou_span_b_len = 52
displacement = 26

// === Calculations ===
// Ichimoku Components
tenkan_sen = (ta.highest(high, tenkan_len) + ta.lowest(low, tenkan_len)) / 2
kijun_sen = (ta.highest(high, kijun_len) + ta.lowest(low, kijun_len)) / 2
senkou_span_a = (tenkan_sen + kijun_sen) / 2
senkou_span_b = (ta.highest(high, senkou_span_b_len) + ta.lowest(low, senkou_span_b_len)) / 2

// EMA Calculations
ema_short_val = ta.ema(close, ema_short)
ema_long_val = ta.ema(close, ema_long)

// Manual ADX Calculation
length = 14
dm_plus = math.max(ta.change(high), 0)
dm_minus = math.max(-ta.change(low), 0)
tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1])))
tr14 = ta.sma(tr, length)
dm_plus14 = ta.sma(dm_plus, length)
dm_minus14 = ta.sma(dm_minus, length)
di_plus = (dm_plus14 / tr14) * 100
di_minus = (dm_minus14 / tr14) * 100
dx = math.abs(di_plus - di_minus) / (di_plus + di_minus) * 100
adx_val = ta.sma(dx, length)

// ATR Calculation
atr_val = ta.atr(14)

// Stochastic RSI Calculation
k = ta.stoch(close, high, low, 14)
d = ta.sma(k, 3)

// Time Filter
is_within_time = true

// Support and Resistance (High and Low Levels)
resistance_level = ta.highest(high, 20)
support_level = ta.lowest(low, 20)

// Volume Analysis (On-Balance Volume)
vol_change = ta.change(close)
obv = ta.cum(vol_change > 0 ? volume : vol_change < 0 ? -volume : 0)

// === Signal Conditions ===
buy_signal = is_within_time and
             (close > ema_short_val) and
             (ema_short_val > ema_long_val) and
             (adx_val > adx_threshold) and
             (close > senkou_span_a) and
             (k < 20)  // Stochastic oversold

sell_signal = is_within_time and
              (close < ema_short_val) and
              (ema_short_val < ema_long_val) and
              (adx_val > adx_threshold) and
              (close < senkou_span_b) and
              (k > 80)  // Stochastic overbought

// === Plotting ===
// Plot Buy and Sell Signals
plotshape(buy_signal, color=color.green, style=shape.labelup, title="Buy Signal", location=location.belowbar, text="BUY")
plotshape(sell_signal, color=color.red, style=shape.labeldown, title="Sell Signal", location=location.abovebar, text="SELL")

// Plot EMAs
plot(ema_short_val, color=color.blue, title="EMA Short")
plot(ema_long_val, color=color.orange, title="EMA Long")

// Plot Ichimoku Components
plot(senkou_span_a, color=color.green, title="Senkou Span A", offset=displacement)
plot(senkou_span_b, color=color.red, title="Senkou Span B", offset=displacement)

// // Plot Support and Resistance using lines
// var line resistance_line = na
// var line support_line = na
// if bar_index > 1
//     line.delete(resistance_line)
//     line.delete(support_line)
// resistance_line := line.new(x1=bar_index - 1, y1=resistance_level, x2=bar_index, y2=resistance_level, color=color.red, width=1, style=line.style_dotted)
// support_line := line.new(x1=bar_index - 1, y1=support_level, x2=bar_index, y2=support_level, color=color.green, width=1, style=line.style_dotted)

// Plot OBV
plot(obv, color=color.purple, title="OBV")

// Plot Background for Trend (Bullish/Bearish)
bgcolor(close > ema_long_val ? color.new(color.green, 90) : color.new(color.red, 90), title="Trend Background")

// === Alerts ===
alertcondition(buy_signal, title="Buy Alert", message="Buy Signal Triggered")
alertcondition(sell_signal, title="Sell Alert", message="Sell Signal Triggered")

// === Strategy Execution ===
if buy_signal
    strategy.entry("Buy", strategy.long)

if sell_signal
    strategy.close("Buy")
    strategy.exit("Sell", "Buy", stop=close - atr_multiplier * atr_val, limit=close + atr_multiplier * atr_val)


関連性

もっと