Strategi terobosan tren sumbu pusat multi-periode yang dinamis

RSI PP R1 S1 EMA TF
Tanggal Pembuatan: 2025-03-31 17:27:39 Akhirnya memodifikasi: 2025-03-31 17:27:39
menyalin: 4 Jumlah klik: 332
2
fokus pada
319
Pengikut

Strategi terobosan tren sumbu pusat multi-periode yang dinamis Strategi terobosan tren sumbu pusat multi-periode yang dinamis

Ringkasan

Strategi ini adalah strategi perdagangan tren-breakout yang dinamis berdasarkan multi-siklus mid-axis dan indeks relatif kuat (RSI). Dengan menggabungkan level support dan tekanan harga pada tingkat garis lingkar dengan indikator RSI, strategi ini bertujuan untuk menangkap peluang tren di pasar keuangan, sambil memberikan manajemen posisi yang halus dan mekanisme kontrol risiko.

Prinsip Strategi

Prinsip-prinsip inti dari strategi ini mencakup langkah-langkah penting berikut:

  1. Perhitungan harga pusat multi-siklus:
  • Perhitungan titik-titik tekanan-dukung kritis pada harga penutupan, harga tertinggi, dan harga terendah pada garis K terdepan di tingkat garis lingkar
  • Perhitungan titik dukungan tipikal (S1, S2, S3) dan titik tekanan (R1, R2, R3)
  • Sensitivitas tekanan pendukung disesuaikan dengan faktor dinamis
  1. Optimalisasi dinamika RSI:
  • Perhitungan indikator RSI menggunakan siklus 21
  • Masukkan Indeks Moving Average (EMA) untuk RSI yang halus
  • Membangun indikator komposit yang menggabungkan RSI awal dan EMA smoothed
  1. Sinyal perdagangan dihasilkan:
  • Masuk ke dalam kelas: 0 di indeks komposit
  • Pertandingan ganda: Harga tertinggi melewati titik tekanan R3
  • Kemasukan kosong: harga terendah di bawah support S3
  • Berjalan dengan kepala kosong: memakai 0 di bawah indikator komposit

Keunggulan Strategis

  1. Perspektif multi-siklus: memfilter kebisingan pasar jangka pendek secara efektif dengan memasukkan data pada tingkat garis lingkar
  2. Manajemen posisi yang fleksibel: mekanisme stop-loss bertahap, mengurangi risiko transaksi tunggal
  3. Konstruksi indikator dinamis: menggabungkan RSI dan EMA untuk meningkatkan akurasi sinyal
  4. Logika perdagangan multispace simetris: memberikan strategi yang fleksibel untuk berbagai kondisi pasar
  5. Risiko terkendali: built-in stop-loss dan stop-start

Risiko Strategis

  1. RSI dan pusat harga mungkin memiliki masalah lag
  2. Sensitivitas parameter: kinerja kebijakan sangat bergantung pada pilihan parameter
  3. Dampak Biaya Transaksi: Transaksi yang sering dapat menyebabkan biaya yang tinggi
  4. Situasi pasar ekstrem: pergeseran tren dan fluktuasi yang kuat dapat menyebabkan strategi gagal

Arah optimasi strategi

  1. Memperkenalkan algoritma pembelajaran mesin untuk mengoptimalkan pemilihan parameter
  2. Mekanisme penyaringan untuk meningkatkan volume transaksi dan fluktuasi
  3. Verifikasi sinyal dengan lebih banyak indikator teknis
  4. Mengembangkan algoritma stop loss dan stop loss dinamis
  5. Memperkenalkan model manajemen skala posisi yang lebih kompleks

Meringkaskan

Strategi ini menggunakan analisis komprehensif multi-siklus, multi-indikator, untuk membangun metode perdagangan yang relatif stabil untuk memecahkan tren. Kelebihannya yang utama adalah menangkap tren pasar secara dinamis dan manajemen risiko yang lebih halus. Ruang optimasi di masa depan termasuk kecerdasan algoritma dan iterasi model kontrol risiko.

Kode Sumber Strategi
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © yuxishejiang

//@version=6
//@version=5
strategy(title="BTC中轴策略优化-V2", overlay=true, pyramiding=1, initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.075)

// 核心参数
strat_dir_input = input.string(title="Strategy Direction", defval="long", options=["long", "short"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)

// 指标计算
higherTF = input.timeframe("W", "Higher Timeframe")
pc = request.security(syminfo.tickerid, higherTF, close[1], barmerge.gaps_off, barmerge.lookahead_on)
ph = request.security(syminfo.tickerid, higherTF, high[1], barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, higherTF, low[1], barmerge.gaps_off, barmerge.lookahead_on)

PP = (ph + pl + pc) / 3
R1 = PP + (PP - pl)
S1 = PP - (ph - PP)
R2 = PP + (ph - pl)
S2 = PP - (ph - pl)
factor = input.int(2, "Factor")
R3 = ph + factor * (PP - pl)
S3 = pl - 2 * (ph - PP)

length = input.int(21, "RSI Length")
p = close
vrsi = ta.rsi(p, length)
pp_ema = ta.ema(vrsi, length)
d = (vrsi - pp_ema) * 5
cc = (vrsi + d + pp_ema) / 2

// 仓位管理变量
var float entry_qty = na

// 交易执行逻辑
longEntry = ta.crossover(cc, 0)
longExit = ta.crossover(high, R3)  // 使用实时最高价判断

shortEntry = ta.crossunder(low, S3)  // 改为使用S3支撑位
shortExit = ta.crossunder(cc, 0)     // 同步修改为下穿

if (longEntry)
    strategy.entry("Long", strategy.long)
    entry_qty := strategy.position_size

if (strategy.position_size > 0 and longExit)
    strategy.close("Long", comment="5M背离离场")

if (shortEntry)
    strategy.entry("Short", strategy.short)
    entry_qty := strategy.position_size

if (strategy.position_size < 0 and shortExit)
    strategy.close("Short", comment="空头离场")

// 止盈止损模块
per(pcnt) =>
    strategy.position_size != 0 ? math.round(math.abs(pcnt/100 * strategy.position_avg_price / syminfo.mintick)) : na

stoploss = input.float(15, "Stop Loss (%)", minval=0.01)
tp1 = input.float(3, "Take Profit 1 (%)", minval=0.01)
tp2 = input.float(5, "Take Profit 2 (%)", minval=0.01)
tp3 = input.float(7, "Take Profit 3 (%)", minval=0.01)
tp4 = input.float(10, "Take Profit 4 (%)", minval=0.01)

// 分阶段平仓逻辑
if strategy.position_size != 0
    qty_total = math.abs(entry_qty)
    qty1 = math.floor(qty_total * 0.25)
    qty2 = math.floor(qty_total * 0.25)
    qty3 = math.floor(qty_total * 0.25)
    qty4 = qty_total - (qty1 + qty2 + qty3)
    
    if strategy.position_size > 0
        strategy.exit("x1", qty=qty1, profit=per(tp1), loss=per(stoploss))
        strategy.exit("x2", qty=qty2, profit=per(tp2), loss=per(stoploss))
        strategy.exit("x3", qty=qty3, profit=per(tp3), loss=per(stoploss))
        strategy.exit("x4", qty=qty4, profit=per(tp4), loss=per(stoploss))
    else
        strategy.exit("x1", qty=qty1, profit=per(tp1), loss=per(stoploss))
        strategy.exit("x2", qty=qty2, profit=per(tp2), loss=per(stoploss))
        strategy.exit("x3", qty=qty3, profit=per(tp3), loss=per(stoploss))
        strategy.exit("x4", qty=qty4, profit=per(tp4), loss=per(stoploss))

// 可视化部分保持不变
// 多头入场可视化
if (longEntry)
    label.new(bar_index, low, "多头入场", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)

// 多头离场可视化
if (strategy.position_size > 0 and longExit)
    label.new(bar_index, high, "多头离场", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

// 空头入场可视化
if (shortEntry)
    label.new(bar_index, high, "空头入场", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)

// 空头离场可视化
if (strategy.position_size < 0 and shortExit)
    label.new(bar_index, low, "空头离场", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)