Strategi penembusan arah aliran paksi pusat berbilang tempoh dinamik

RSI PP R1 S1 EMA TF
Tarikh penciptaan: 2025-03-31 17:27:39 Akhirnya diubah suai: 2025-03-31 17:27:39
Salin: 4 Bilangan klik: 332
2
fokus pada
319
Pengikut

Strategi penembusan arah aliran paksi pusat berbilang tempoh dinamik Strategi penembusan arah aliran paksi pusat berbilang tempoh dinamik

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan pemecahan trend yang dinamik berdasarkan multi-axis dalam kitaran dan indeks yang agak kuat ((RSI)). Dengan menggabungkan tahap sokongan dan tekanan harga pada tahap garis pusingan dengan penunjuk RSI, strategi ini bertujuan untuk menangkap peluang trend di pasaran kewangan sambil menyediakan pengurusan kedudukan dan kawalan risiko yang halus.

Prinsip Strategi

Prinsip-prinsip utama strategi ini merangkumi langkah-langkah penting berikut:

  1. Pengiraan pusat harga pelbagai kitaran:
  • Menggunakan harga penutupan, harga tertinggi dan harga terendah pada garisan K terdahulu di peringkat garis pusingan untuk mengira tekanan sokongan kritikal
  • Hitung kedudukan sokongan tipikal (S1, S2, S3) dan kedudukan tekanan (R1, R2, R3)
  • Sensitiviti tekanan sokongan disesuaikan dengan faktor dinamik
  1. Dinamika RSI dioptimumkan
  • Pengiraan RSI menggunakan 21 kitaran
  • Memperkenalkan purata bergerak indeks (EMA) RSI yang lancar
  • Membina indikator komposit yang menggabungkan nilai RSI awal dan nilai EMA yang lancar
  1. Sinyal dagangan dihasilkan:
  • Kemasukan berbilang kepala: memakai 0 pada indeks komposit
  • Perlawanan beramai-ramai: Harga tertinggi melepasi tekanan R3
  • Kemasukan kosong: harga terendah jatuh di bawah sokongan S3
  • Bermula dengan kepala kosong: memakai 0 di bawah indeks komposit

Kelebihan Strategik

  1. Perspektif pelbagai kitaran: menyaring kebisingan pasaran jangka pendek dengan berkesan dengan memperkenalkan data peringkat garis pusingan
  2. Pengurusan kedudukan yang fleksibel: mekanisme penutupan beransur-ansur, mengurangkan risiko transaksi tunggal
  3. Pembinaan penunjuk dinamik: menggabungkan RSI dan EMA untuk meningkatkan ketepatan isyarat
  4. Logik perdagangan multispace simetrik: menyediakan strategi fleksibel untuk keadaan pasaran yang berbeza
  5. Risiko terkawal: Pendaftaran terbina dalam dan penghentian fasa

Risiko Strategik

  1. Penurunan indikator: RSI dan pusat harga mungkin mengalami masalah ketinggalan
  2. Sensitiviti parameter: prestasi strategi sangat bergantung pada pilihan parameter
  3. Kesan kos urus niaga: urus niaga yang kerap boleh menyebabkan yuran yang tinggi
  4. Keadaan pasaran yang melampau: Trend berbalik dan turun naik yang kuat boleh menyebabkan strategi gagal

Arah pengoptimuman strategi

  1. Memperkenalkan algoritma pembelajaran mesin untuk mengoptimumkan pemilihan parameter
  2. Mekanisme penapisan untuk meningkatkan jumlah dan kadar pertukaran
  3. Semakan isyarat dengan lebih banyak petunjuk teknikal
  4. Pembangunan algoritma hentian dan hentian dinamik
  5. Memperkenalkan model pengurusan skala kedudukan yang lebih kompleks

ringkaskan

Strategi ini menggunakan analisis komprehensif pelbagai kitaran, pelbagai petunjuk, untuk membina kaedah perdagangan yang agak stabil untuk memecahkan trend. Kelebihan utamanya adalah menangkap trend pasaran yang dinamik dan pengurusan risiko yang halus.

Kod 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)