Mengikuti Aliran Berbilang Penunjuk dan Strategi Pecahan Kemeruapan

EMA ADX ATR OBV RSI
Tarikh penciptaan: 2024-12-12 15:48:29 Akhirnya diubah suai: 2024-12-12 15:48:29
Salin: 2 Bilangan klik: 431
1
fokus pada
1617
Pengikut

Mengikuti Aliran Berbilang Penunjuk dan Strategi Pecahan Kemeruapan

Gambaran keseluruhan

Ini adalah strategi yang menggabungkan beberapa indikator teknikal untuk mengesan trend dan memecahkan pergerakan. Strategi ini menangkap trend dan peluang untuk memecahkan pasaran dengan mengintegrasikan sistem garis rata (EMA), indikator kekuatan trend (ADX), indikator pergerakan pasaran (ATR), analisis kuantitatif harga (OBV) dan beberapa indikator tambahan seperti grafik awan Ichimoku dan indikator rawak (Stochastic).

Prinsip Strategi

Logik utama strategi ini adalah berdasarkan penilaian komprehensif mengenai pelbagai peringkat teknik:

  1. Membina sistem pengesanan trend menggunakan 50 kitaran dan 200 kitaran EMA
  2. Kekuatan trend disahkan melalui penunjuk ADX
  3. Menggunakan Imej Awan Ichimoku untuk memberikan pengesahan trend tambahan
  4. Penunjuk Stochastic untuk mengenalpasti kawasan yang terlalu banyak dibeli dan dijual
  5. Tetapkan sasaran stop loss dan profit secara dinamik menggunakan ATR
  6. Tahap sokongan yang disahkan oleh OBV

Strategi memberi isyarat beli apabila syarat-syarat berikut dipenuhi:

  • Dalam tempoh yang dibenarkan untuk berdagang
  • Harga berada di atas EMA jangka pendek
  • EMA jangka pendek di atas EMA jangka panjang
  • ADX lebih tinggi daripada nilai set
  • Harga di atas carta awan
  • Stochastic berada di kawasan oversold

Kelebihan Strategik

  1. Penyelidikan berbilang peringkat untuk meningkatkan kebolehpercayaan isyarat
  2. Menggabungkan trend-following dan volatility breakout untuk meningkatkan fleksibiliti strategi
  3. Mengelakkan tempoh perdagangan yang tidak cekap melalui penapis masa
  4. Tetapan sasaran berhenti dan keuntungan yang dinamik, menyesuaikan diri dengan turun naik pasaran
  5. Analisis kuantiti dan harga untuk memberikan pandangan pasaran yang lebih menyeluruh
  6. Peraturan masuk dan keluar yang sistematik, mengurangkan penilaian subjektif

Risiko Strategik

  1. Sistem pelbagai petunjuk mungkin menyebabkan lag isyarat
  2. Mungkin terlalu banyak isyarat palsu di pasaran Forex
  3. Lebih sukar untuk mengoptimumkan parameter, risiko terlalu banyak pengoptimuman
  4. Pembatasan waktu perdagangan mungkin terlepas peluang penting
  5. Tetapan Stop Loss yang terlalu tinggi boleh menyebabkan kerugian tunggal yang tinggi

Cadangan kawalan risiko:

  • Semak dan mengoptimumkan tetapan parameter
  • Pertimbangkan penapis kadar turun naik
  • Menerapkan peraturan pengurusan wang yang lebih ketat
  • Meningkatkan penunjuk sokongan untuk pengesahan trend

Arah pengoptimuman strategi

  1. Memperkenalkan sistem parameter yang menyesuaikan diri, menyesuaikan parameter penunjuk secara dinamik mengikut keadaan pasaran
  2. Menambah mekanisme klasifikasi keadaan pasaran, menggunakan peraturan penjanaan isyarat yang berbeza dalam persekitaran pasaran yang berbeza
  3. Tetapan penapis masa yang dioptimumkan untuk menganalisis masa perdagangan terbaik berdasarkan data sejarah
  4. Meningkatkan strategi penutupan kerugian, pertimbangkan untuk menggunakan penutupan kerugian yang dijejaki
  5. Menambah kualiti isyarat dengan penambahan sentiment di pasaran

ringkaskan

Strategi ini membina satu sistem perdagangan yang lengkap dengan menggunakan pelbagai petunjuk teknikal secara bersepadu. Keunggulan strategi ini adalah dengan pengesahan silang pelbagai petunjuk dan kawalan risiko yang ketat, tetapi juga menghadapi cabaran seperti pengoptimuman parameter dan ketinggalan isyarat. Dengan pengoptimuman dan penambahbaikan yang berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.

Kod sumber strategi
/*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)