Strategi indeks kekuatan relatif stokastik bingkai masa berbilang masa dan sistem penapis kemeruapan

RSI ATR SRSI MTF
Tarikh penciptaan: 2025-06-04 10:31:03 Akhirnya diubah suai: 2025-06-04 10:31:03
Salin: 0 Bilangan klik: 274
2
fokus pada
319
Pengikut

Strategi indeks kekuatan relatif stokastik bingkai masa berbilang masa dan sistem penapis kemeruapan Strategi indeks kekuatan relatif stokastik bingkai masa berbilang masa dan sistem penapis kemeruapan

Gambaran keseluruhan

Strategi penyenaraian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian rantaian r

Prinsip Strategi

Strategi ini beroperasi berdasarkan empat mekanisme teras: pemicu isyarat awal, pengesahan bingkai masa berbilang, penapisan kadar lonjakan dan sistem penyejukan isyarat.

  1. Pencetus isyarat awal

    • Pada carta 5 minit, apabila Stochastic RSI melintasi garis% D pada garis% K dan nilai% K pada masa itu berada di bawah paras oversold yang ditetapkan (default 30), sistem memasuki keadaan menunggu untuk melakukan banyak isyarat.
    • Apabila Stochastic RSI melintasi garis%D di bawah garis%K dan nilai%K pada masa itu lebih tinggi daripada tahap overbuy yang ditetapkan (default 70), sistem memasuki keadaan menunggu isyarat shorting.
  2. Mekanisme pengesahan pelbagai kerangka masa

    • Sebaik sahaja sistem berada dalam keadaan menunggu isyarat, ia akan mencari pengesahan tempoh masa 15 minit dalam tetingkap menunggu yang telah ditetapkan (default 5x5 minit K line).
    • Syarat pengesahan ganda: RSI Stochastic %K pada carta 15 minit lebih besar atau sama dengan %D, dan %K lebih rendah daripada had default ((default40))
    • Syarat pengesahan kosong: Nilai Stochastic RSI %K pada carta 15 minit adalah kurang daripada atau sama dengan nilai %D, dan nilai %K lebih tinggi daripada nilai tunjangan ((default60) )
  3. Penapis kadar turun naik ATR

    • Sistem mengira nilai ATR semasa dan menukarnya kepada jumlah titik lompatan minimum.
    • Isyarat dagangan akan dilaksanakan hanya apabila nilai ATR semasa melebihi had minimum yang ditetapkan oleh pengguna (default 10 titik lompatan).
    • Mekanisme ini memastikan perdagangan hanya dilakukan apabila pasaran mempunyai turun naik yang mencukupi dan mengelakkan isyarat palsu yang dihasilkan oleh turun naik harga yang kecil di pasaran yang tidak bergolak.
  4. Sistem penyejukan isyarat

    • Setelah menghasilkan isyarat perdagangan, sistem akan memaksa menunggu jumlah minimum K yang ditetapkan (default 18 K) sebelum membenarkan menghasilkan isyarat baru dalam arah yang sama.
    • Mekanisme ini berkesan mencegah sistem menghasilkan terlalu banyak isyarat arah dalam masa yang singkat, mengurangkan risiko perdagangan berlebihan.

Strategi ini menggunakan cara membalikkan kedudukan yang berlawanan, iaitu apabila terdapat banyak isyarat, ia akan menghapuskan mana-mana kedudukan kosong yang sedia ada dan membina lebih banyak kedudukan, dan apabila terdapat isyarat untuk menghapuskan sebarang kedudukan kosong yang sedia ada dan membina lebih banyak kedudukan kosong.

Kelebihan Strategik

  1. Sistem penapisan bertingkatDengan menggabungkan pengesahan isyarat dan penapisan kadar turun naik ATR dalam pelbagai bingkai masa, sistem ini mengurangkan isyarat palsu dan meningkatkan kualiti perdagangan. Mekanisme pengesahan bertingkat memastikan kemasukan hanya dalam keadaan pasaran yang paling menguntungkan, mengurangkan frekuensi perdagangan yang tidak perlu.

  2. Kebolehan menyesuaikan diriParameter strategi yang sangat disesuaikan, termasuk kitaran RSI, nilai rataan penunjuk rawak, dan nilai rendah isyarat, membolehkan peniaga menyesuaikan diri secara optimum mengikut keadaan pasaran yang berbeza dan keutamaan risiko peribadi.

  3. Keupayaan untuk mengesan kadar turun naikMelalui penapis ATR, strategi dapat mengenal pasti keadaan turun naik pasaran dengan bijak dan hanya berdagang dalam keadaan yang cukup turun naik, mengelakkan isyarat tidak sah yang dihasilkan oleh turun naik kecil dalam pasaran yang disusun.

  4. Perlindungan daripada OvertradingMekanisme penyejukan isyarat adalah reka bentuk inovatif yang mengehadkan kekerapan transaksi dalam satu arah melalui tempoh menunggu yang wajib, yang berkesan menghalang sistem daripada menghasilkan terlalu banyak transaksi dalam masa yang singkat, mengurangkan kos komisen dan kehilangan titik slip.

  5. Logik yang jelas dan telusSetiap komponen strategi mempunyai fungsi dan tujuan yang jelas, tanpa algoritma kotak hitam yang rumit dan tidak dapat difahami, yang membolehkan peniaga memahami sepenuhnya bagaimana sistem berfungsi, meningkatkan keyakinan dalam operasi.

Risiko Strategik

  1. Lagging isyaratMekanisme pengesahan bertingkat, walaupun meningkatkan kualiti isyarat, juga pasti meningkatkan keterlambatan isyarat. Terutama dalam pasaran yang berubah dengan cepat, menunggu pengesahan dalam jangka masa 15 minit boleh menyebabkan kehilangan tempat masuk yang terbaik atau masuk dalam kedudukan yang tidak menguntungkan.

  2. Kepekaan ParameterKesan strategi ini sangat bergantung kepada parameter yang ditetapkan, seperti kitaran Stochastic RSI, overbought dan oversold, pengesahan menunggu tingkap, dan sebagainya. Tetapan parameter yang tidak sesuai boleh menyebabkan kehilangan isyarat yang sah atau menghasilkan terlalu banyak isyarat palsu.

  3. Kurangnya mekanisme penghentian kerugian yang jelasStrategi ini bergantung kepada isyarat terbalik untuk menguruskan risiko, tanpa strategi hentian kerugian yang jelas. Dalam keadaan pasaran yang melampau, seperti lompatan besar atau pergerakan pesat satu arah, ini boleh menyebabkan kerugian yang besar.

  4. Siklus saling mempengaruhiDalam strategi pelbagai bingkai masa, indikator setiap kitaran masa saling mempengaruhi, kadang-kadang membentuk hubungan yang rumit. Sebagai contoh, dalam keadaan pasaran tertentu, RSI Stochastic 5 minit dan 15 minit mungkin berada dalam arah yang konsisten untuk masa yang lama, menyebabkan sistem kehilangan isyarat pembalikan.

  5. Cabaran untuk menetapkan ATRTetapan nilai ambang penapis ATR mempunyai dua masalah: tetapan yang terlalu tinggi akan kehilangan peluang perdagangan yang berkesan, dan tetapan yang terlalu rendah tidak dapat menyaring isyarat palsu dalam persekitaran yang bergelombang rendah.

Arah pengoptimuman strategi

  1. Mekanisme penangguhan kerosakan dinamik

    • Berdasarkan ATR atau lain-lain indikator turun naik, reka bentuk tahap stop loss dinamik membolehkan kawalan risiko menyesuaikan diri dengan turun naik pasaran.
    • Cara: boleh ditambahstrategy.exit()Perintah yang menetapkan stop loss berdasarkan ATR, sepertistrategy.exit("long_exit", "LE", stop=entry_price - current_atr_value * 2)
  2. Tambah penapis trend

    • Menggabungkan tempoh masa yang lebih lama (seperti 1 jam atau 4 jam) dengan penunjuk trend, seperti purata bergerak atau MACD, untuk memastikan arah perdagangan selaras dengan trend utama.
    • Bagaimana ia boleh dilaksanakan: Tambahkan kod untuk mendapatkan indikator trend pada tahap masa yang lebih tinggi, sepertitrend_direction = request.security(syminfo.tickerid, "240", ta.ema(close, 200) < ta.ema(close, 50) ? -1 : 1)Ia adalah syarat penapis untuk arah transaksi.
  3. Optimumkan parameter dinamik

    • Secara automatik menyesuaikan parameter strategi berdasarkan turun naik pasaran atau masa perdagangan, membolehkan sistem menyesuaikan diri dengan lebih baik dengan keadaan pasaran yang berbeza.
    • Cara pelaksanaan: Fungsi boleh ditulis untuk menyesuaikan nilai terhad overbought dan oversold mengikut nilai ATR semasa atau keadaan pasaran yang berubah-ubah, sepertidynamic_overbought = 70 + math.min(15, current_atr_value / 2)
  4. Mekanisme pengesahan isyarat yang dipertingkat

    • Selain Stochastic RSI, pengenalan petunjuk lain seperti Brinband, jumlah transaksi atau pola harga sebagai syarat pengesahan tambahan.
    • Bagaimana ia boleh dilaksanakan: menambah kod pengesanan deviasi jalur Brin, sepertibb_condition = (close - ta.sma(close, 20)) / (ta.stdev(close, 20) * 2)Untuk menilai perbezaan harga dan nilai purata.
  5. Pengurusan wang yang lebih baik

    • Mempunyai pengurusan kedudukan dinamik, menyesuaikan margin risiko setiap perdagangan mengikut kekuatan trend semasa, turun naik pasaran dan pergerakan kadar kemenangan sejarah.
    • Bagaimana ia boleh dilaksanakan: Tambah kod untuk mengira saiz kedudukan dinamik berdasarkan N kali kemenangan perdagangan terkini, sepertiposition_size = strategy.initial_capital * 0.01 * (recent_win_rate * 2)

ringkaskan

Strategi penunjuk yang agak kuat yang disahkan secara rawak dengan pelbagai kerangka masa adalah sistem perdagangan yang direka dengan baik yang meningkatkan kualiti perdagangan dengan mekanisme pengesahan dan penapisan isyarat bertingkat. Strategi ini sangat sesuai untuk persekitaran pasaran yang bergelombang, dengan penapis ATR untuk mengelakkan terlalu banyak isyarat tidak sah di pasaran yang bergelombang rendah, dan mekanisme penyejukan isyarat yang berkesan untuk mengawal masalah perdagangan berlebihan.

Kelebihan terbesar strategi ini adalah kejernihan logiknya, parameter yang boleh disesuaikan, dan kebolehlakuannya yang kuat, yang membolehkannya menyesuaikan diri dengan pelbagai jenis perdagangan dan persekitaran pasaran. Walau bagaimanapun, kerana kekurangan mekanisme penghentian kerugian yang jelas dan kemunduran isyarat yang mungkin ada, peniaga harus menambah langkah-langkah pengurusan risiko tambahan dalam aplikasi praktikal dan mengoptimumkan parameter mengikut jenis perdagangan tertentu dan pilihan risiko peribadi.

Dengan memperkenalkan langkah-langkah pengoptimuman yang dicadangkan, seperti mekanisme menghentikan kerugian dinamik, penapis trend, dan pengoptimuman pengurusan dana, strategi ini dijangka meningkatkan kestabilan dan keuntungan, menjadi sistem perdagangan yang lebih komprehensif dan boleh dipercayai.

Kod sumber strategi
/*backtest
start: 2025-05-04 00:00:00
end: 2025-06-03 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

//@version=6
strategy("System 0530 - Stoch RSI Strategy with ATR filter")
// --- 原始指标输入参数 ---
g_stoch = "Stochastic RSI 参数"
rsi_len = input.int(14, "RSI 周期", minval=1, group=g_stoch)
stoch_rsi_len = input.int(14, "Stochastic of RSI 周期 (K Period for Stoch)", minval=1, group=g_stoch)
stoch_k_smooth = input.int(3, "Stochastic %K 平滑 (D Period for Stoch)", minval=1, group=g_stoch)
stoch_d_smooth = input.int(3, "Stochastic %D 平滑 (Smoothing for final D)", minval=1, group=g_stoch)

g_signal = "信号触发与确认参数"
stoch_5min_k_long_trigger = input.float(30.0, "5分钟 Stoch K 做多触发水平 (K需 ≤ 此值)", minval=0, maxval=100, step=0.1, group=g_signal, tooltip="5分钟图上,K线向上交叉D线时,当时的K值必须小于或等于此设定值,才会启动做多信号等待。")
stoch_5min_k_short_trigger = input.float(70.0, "5分钟 Stoch K 做空触发水平 (K需 ≥ 此值)", minval=0, maxval=100, step=0.1, group=g_signal, tooltip="5分钟图上,K线向下交叉D线时,当时的K值必须大于或等于此设定值,才会启动做空信号等待。")
stoch_15min_long_entry_level = input.int(40, "15分钟 Stoch K 做多确认阈值 (K需低于此值)", minval=0, maxval=100, group=g_signal, tooltip="15分钟图上,最终确认做多时,15分钟K线值需低于此设定值。")
stoch_15min_short_entry_level = input.int(60, "15分钟 Stoch K 做空确认阈值 (K需高于此值)", minval=0, maxval=100, group=g_signal, tooltip="15分钟图上,最终确认做空时,15分钟K线值需高于此设定值。")
wait_window_5min_bars = input.int(5, "等待15分钟信号的K线数 (5分钟图)", minval=1, group=g_signal, tooltip="5分钟信号发出后,在接下来的N根5分钟K线内等待15分钟信号确认。")

g_repeat_filter = "重复信号过滤设置"
use_signal_cooldown_filter = input.bool(true, title="启用重复信号过滤器", group=g_repeat_filter, tooltip="过滤掉短时间内同向的重复信号。")
min_bars_between_signals = input.int(18, title="同向信号最小间隔K线数", minval=1, group=g_repeat_filter, tooltip="一个信号发出后,至少等待这么多根K线才会发出下一个同向信号。")

// --- 策略特定输入参数 ---
g_strategy = "策略参数"
leverage_multiplier = input.float(1.0, "杠杆倍数 (仅影响理论头寸大小)", minval=1.0, step=0.1, group=g_strategy, tooltip="注意:TradingView策略本身不直接模拟保证金账户的杠杆爆仓。此杠杆用于计算理论头寸大小。实际杠杆效果需在支持杠杆的经纪商处体现。")

// --- ATR波动率过滤器参数 --- (止盈止损参数组已删除)
g_volatility = "波动率过滤器参数 (ATR)"
use_atr_filter = input.bool(true, "启用ATR波动率过滤器", group=g_volatility, tooltip="勾选以启用ATR过滤器。")
atr_period = input.int(14, "ATR计算周期", minval=1, group=g_volatility)
min_atr_value_ticks = input.float(10, "ATR最小跳动点数阈值", minval=0, step=1, group=g_volatility, tooltip="ATR值(以合约最小跳动点数为单位)必须大于等于此阈值才允许开仓。例如,如果最小跳动点是0.1,这里填10,则要求ATR至少为1.0。0表示不基于此项过滤。")

// --- 函数: 计算 Stochastic RSI ---
getStochasticRSI(src, rsiLen, stochLen, kSmooth, dSmooth) =>
    rsi_val = ta.rsi(src, rsiLen)
    stoch_rsi_k_raw = ta.stoch(rsi_val, rsi_val, rsi_val, stochLen)
    stoch_rsi_k = ta.sma(stoch_rsi_k_raw, kSmooth)
    stoch_rsi_d = ta.sma(stoch_rsi_k, dSmooth)
    [stoch_rsi_k, stoch_rsi_d]

// --- 时间序列数据获取与Stochastic RSI计算 ---
[stoch_k_15min_val, stoch_d_15min_val] = request.security(syminfo.tickerid, "15", getStochasticRSI(close, rsi_len, stoch_rsi_len, stoch_k_smooth, stoch_d_smooth), lookahead=barmerge.lookahead_off)
[stoch_k_5min_val, stoch_d_5min_val] = getStochasticRSI(close, rsi_len, stoch_rsi_len, stoch_k_smooth, stoch_d_smooth)

// --- ATR 计算 ---
current_atr_value = ta.atr(atr_period)
atr_condition_met = not use_atr_filter or (min_atr_value_ticks == 0) or (current_atr_value / syminfo.mintick >= min_atr_value_ticks)

// --- 信号逻辑状态变量 ---
var bool waiting_for_15m_long_confirm = false
var bool waiting_for_15m_short_confirm = false
var int bars_elapsed_in_wait_state = 0
var int last_long_signal_bar_idx = -min_bars_between_signals
var int last_short_signal_bar_idx = -min_bars_between_signals

// --- 检测5分钟Stochastic RSI交叉事件 ---
bool stoch_5min_crossed_up_prev_bar = ta.crossover(stoch_k_5min_val[1], stoch_d_5min_val[1])
bool stoch_5min_crossed_down_prev_bar = ta.crossunder(stoch_k_5min_val[1], stoch_d_5min_val[1])
bool condition_5min_k_level_for_long_trigger = stoch_k_5min_val[1] <= stoch_5min_k_long_trigger
bool condition_5min_k_level_for_short_trigger = stoch_k_5min_val[1] >= stoch_5min_k_short_trigger

// --- 管理等待状态和容错期 ---
if (stoch_5min_crossed_up_prev_bar and condition_5min_k_level_for_long_trigger)
    can_trigger_new_long = not use_signal_cooldown_filter or (bar_index - last_long_signal_bar_idx >= min_bars_between_signals)
    if (can_trigger_new_long)
        waiting_for_15m_long_confirm := true
        waiting_for_15m_short_confirm := false
        bars_elapsed_in_wait_state := 1
    else 
        if (waiting_for_15m_long_confirm or waiting_for_15m_short_confirm) 
            bars_elapsed_in_wait_state := 1 
else if (stoch_5min_crossed_down_prev_bar and condition_5min_k_level_for_short_trigger)
    can_trigger_new_short = not use_signal_cooldown_filter or (bar_index - last_short_signal_bar_idx >= min_bars_between_signals)
    if (can_trigger_new_short)
        waiting_for_15m_short_confirm := true
        waiting_for_15m_long_confirm := false
        bars_elapsed_in_wait_state := 1
    else 
        if (waiting_for_15m_long_confirm or waiting_for_15m_short_confirm) 
            bars_elapsed_in_wait_state := 1
else if (waiting_for_15m_long_confirm or waiting_for_15m_short_confirm)
    bars_elapsed_in_wait_state += 1

if (bars_elapsed_in_wait_state > wait_window_5min_bars)
    waiting_for_15m_long_confirm := false
    waiting_for_15m_short_confirm := false
    // bars_elapsed_in_wait_state := 0 // Optional reset

// --- 15分钟Stochastic RSI确认条件 ---
bool confirm_15min_long_stoch_kd_cond = stoch_k_15min_val >= stoch_d_15min_val
bool confirm_15min_short_stoch_kd_cond = stoch_k_15min_val <= stoch_d_15min_val
bool filter_15min_stoch_level_long = stoch_k_15min_val < stoch_15min_long_entry_level
bool filter_15min_stoch_level_short = stoch_k_15min_val > stoch_15min_short_entry_level

// --- 主要信号判断 (用于策略逻辑) ---
entry_long_signal = false
entry_short_signal = false

if (waiting_for_15m_long_confirm and bars_elapsed_in_wait_state <= wait_window_5min_bars)
    if (confirm_15min_long_stoch_kd_cond and filter_15min_stoch_level_long)
        can_confirm_new_long = not use_signal_cooldown_filter or (bar_index - last_long_signal_bar_idx >= min_bars_between_signals)
        if (can_confirm_new_long)
            if (atr_condition_met) // ATR 过滤器检查
                entry_long_signal := true
                last_long_signal_bar_idx := bar_index
                waiting_for_15m_long_confirm := false
                bars_elapsed_in_wait_state := 0
        else 
            waiting_for_15m_long_confirm := false 
            bars_elapsed_in_wait_state := 0
if (waiting_for_15m_short_confirm and bars_elapsed_in_wait_state <= wait_window_5min_bars)
    if (confirm_15min_short_stoch_kd_cond and filter_15min_stoch_level_short)
        can_confirm_new_short = not use_signal_cooldown_filter or (bar_index - last_short_signal_bar_idx >= min_bars_between_signals)
        if (can_confirm_new_short)
            if (atr_condition_met) // ATR 过滤器检查
                entry_short_signal := true
                last_short_signal_bar_idx := bar_index
                waiting_for_15m_short_confirm := false
                bars_elapsed_in_wait_state := 0
        else 
            waiting_for_15m_short_confirm := false 
            bars_elapsed_in_wait_state := 0

// --- 策略执行逻辑 ---

if (entry_long_signal)
    strategy.entry("LE", strategy.long, comment="long entry")

if (entry_short_signal)
    strategy.entry("SE", strategy.short, comment="short entry")

// --- 绘图 ---
plotshape(entry_long_signal, title="做多信号点", location=location.belowbar, color=color.new(color.green,0), style=shape.triangleup, size=size.small)
plotshape(entry_short_signal, title="做空信号点", location=location.abovebar, color=color.new(color.red,0), style=shape.triangledown, size=size.small)