Berbilang penunjuk teknikal strategi dagangan ayunan dinamik

EMA MACD RSI ADX ATR
Tarikh penciptaan: 2025-02-18 17:13:58 Akhirnya diubah suai: 2025-02-18 17:13:58
Salin: 1 Bilangan klik: 405
1
fokus pada
1617
Pengikut

Berbilang penunjuk teknikal strategi dagangan ayunan dinamik

Gambaran keseluruhan

Ini adalah strategi perdagangan gelombang dinamik berdasarkan pelbagai petunjuk teknikal, yang menggabungkan ciri-ciri trend dan operasi gelombang. Strategi ini mencari peluang perdagangan yang tinggi di pasaran melalui kerjasama kerjasama dengan beberapa petunjuk teknikal seperti EMA, ADX, RSI dan MACD. Sistem ini menggunakan hentian kehilangan dan hentian hentian secara dinamik untuk menguruskan risiko dan keuntungan.

Prinsip Strategi

Logik utama strategi ini adalah berdasarkan kepada beberapa elemen utama:

  1. Penghakiman Trend: Menggunakan hubungan silang EMA55 dan EMA144 untuk menentukan arah trend pasaran, dan digabungkan dengan kekuatan indikator ADX ((terendah 30) untuk pengesahan trend.
  2. Waktu masuk: Mengenali kawasan overbought dan oversold melalui indikator RSI ((Oversold 45, Oversold 55), digunakan untuk menilai peluang untuk membeli dan melakukan rebound.
  3. Mekanisme Hentian Kerosakan: Menggunakan Hentian Dinamis Berasaskan ATR, jarak Hentian Kerosakan adalah 1.5 kali ATR, boleh disesuaikan mengikut turun naik pasaran.
  4. Strategi keuntungan: menggunakan harga tertinggi / terendah 50 kitaran sebagai sasaran hentian, menggunakan hentian 50% dalam bentuk hentian beratur.

Kelebihan Strategik

  1. Pemverifikasi pelbagai penunjuk: meningkatkan kebolehpercayaan isyarat dagangan dengan penggunaan gabungan pelbagai penunjuk seperti EMA, ADX, RSI.
  2. Pengurusan risiko dinamik: Hentian dinamik berasaskan ATR dapat disesuaikan dengan keadaan pasaran yang berbeza, memberikan kawalan risiko yang lebih baik.
  3. Pendapatan beransur-ansur: Menggunakan cara berhenti saham secara berturut-turut, anda boleh mengunci sebahagian daripada keuntungan anda dan tidak keluar dari pasaran yang kuat terlalu awal.
  4. Pengesahan trend: Menambah penapis ADX untuk mengelakkan perdagangan yang kerap di pasaran yang bergolak.

Risiko Strategik

  1. Risiko terobosan palsu: Kesalahan penghakiman mungkin berlaku apabila turun naik pasaran meningkat, disyorkan untuk meningkatkan pengesahan jumlah transaksi.
  2. Kehilangan titik slippage: Apabila pasaran berubah dengan cepat, stop loss dinamik mungkin menghadapi titik slippage yang lebih besar.
  3. Hilang di atas meja: Walaupun terdapat penapis ADX, kerugian kecil berturut-turut mungkin berlaku di pasaran yang bergolak.
  4. Tanda kelewatan: Kombinasi pelbagai petunjuk mungkin menyebabkan tanda kelewatan masuk, kehilangan masa terbaik untuk meletakkan kedudukan.

Arah pengoptimuman strategi

  1. Optimasi parameter penunjuk: disyorkan untuk mengoptimumkan parameter seperti kitaran EMA, nilai RSI.
  2. Pengoptimuman Hentikan Kerosakan: Anda boleh mempertimbangkan untuk meningkatkan Hentikan Bergerak untuk melindungi keuntungan dengan lebih baik.
  3. Pengurusan kedudukan: disyorkan untuk memperkenalkan sistem pengurusan kedudukan yang menyesuaikan diri dengan kadar turun naik.
  4. Kebolehsuaian pasaran: boleh menambah klasifikasi persekitaran pasaran, menggunakan kombinasi parameter yang berbeza dalam keadaan pasaran yang berbeza.

ringkaskan

Strategi ini membina satu sistem perdagangan yang lengkap dengan kerjasama kerjasama pelbagai petunjuk teknikal. Strategi ini memberi tumpuan kepada trend dan mengawal risiko, menyeimbangkan risiko dan keuntungan dengan cara berhenti kehilangan dan berhenti beratur secara dinamik. Walaupun terdapat ruang untuk pengoptimuman, secara keseluruhan adalah strategi perdagangan yang logik dan praktikal.

Kod sumber strategi
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("专业级交易系统", overlay=true, max_labels_count=500)
// ===== 参数设置 =====
x1 = input.float(1.5,"atr倍数",step=0.1)
x2 = input.int(50,"k线数量",step=1)
// EMA参数
ema55_len = input.int(55, "EMA55长度")
ema144_len = input.int(144, "EMA144长度")
// ADX参数
adx_len = input.int(14, "ADX长度")
adx_threshold = input.float(30.0, "ADX趋势过滤")
// RSI参数
rsi_len = input.int(14, "RSI长度")
rsi_oversold = input.float(45.0, "RSI超卖阈值")
rsi_overbuy = input.float(55.0, "RSI超买阈值")
// MACD参数
macd_fast = input.int(12, "MACD快线")
macd_slow = input.int(26, "MACD慢线")
macd_signal = input.int(9, "MACD信号线")
// ===== 指标计算 =====
// EMA计算
ema55 = ta.ema(close, ema55_len)
ema144 = ta.ema(close, ema144_len)
// ADX计算(使用标准函数)
[di_plus, di_minus, adx] = ta.dmi(adx_len, adx_len)
// RSI计算
rsi = ta.rsi(close, rsi_len)
// MACD计算(修正参数顺序)
[macdLine, signalLine, histLine] = ta.macd(close, macd_fast, macd_slow, macd_signal)
// ===== 信号逻辑 =====
// 趋势条件:EMA55 > EMA144 且 ADX > 30
trendCondition = ema55 > ema144 and adx > adx_threshold
trendConditions = ema55 < ema144 and adx > adx_threshold
// 回调条件:RSI < 45 且 MACD柱状线 > -0.002
pullbackCondition = rsi < rsi_oversold 
pullbackConditions = rsi > rsi_overbuy 
// 综合信号
entrySignal = trendCondition and pullbackCondition
entrySignals = trendConditions and pullbackConditions

// ===== 可视化 =====
// 绘制EMA
plot(ema55, "EMA55", color=color.new(#FFA500, 0))
plot(ema144, "EMA144", color=color.new(#008000, 0))
//plotshape(series=entrySignal,title="买入信号",location=location.belowbar,color=color.new(color.green, 0),style=shape.labelup,text="BUY",textcolor=color.new(color.white, 0))
s = strategy.position_avg_price ,s1 = strategy.position_size
le = false
le := low < ema144 and low[1] > ema144 and ema55 > ema144 ? true : s1 > 0 ? false : le[1] 
se = false
se := high > ema144 and high[1] < ema144 and ema55 < ema144 ? true : s1 < 0 ? false : se[1]
if entrySignal and low < ema144 and close > ema144
    strategy.entry("l",strategy.long)
strategy.exit("止盈一半","l",limit= ta.highest(x2),qty_percent = 50)
if s1 > 0 and low < (close - x1*ta.atr(12))[1]
    strategy.close_all("动态止损")

if entrySignals and high > ema144 and close < ema144
    strategy.entry("s",strategy.short)   
strategy.exit("止盈一半","s",limit = ta.lowest(x2),qty_percent = 50)
if s1 < 0 and high > (close + x1*ta.atr(12))[1]
    strategy.close_all("动态止损")

//plotshape(series=entrySignal,title="买入信号",location=location.belowbar,color=color.new(color.green, 0),style=shape.labelup,text="BUY",textcolor=color.new(color.white, 0))
//plot(close+x1*ta.atr(12))
//plot(close-x1*ta.atr(12))
//bgcolor(le ? color.red:na)