
Strategi ini adalah sistem perdagangan pengesahan bertingkat berdasarkan William Alligator dan RSI yang relatif kuat, yang direka untuk kitaran masa 15 minit. Strategi ini menghasilkan isyarat perdagangan dengan menilai hubungan kedudukan harga dengan trigonometrik penyu dan nilai RSI. Isyarat pembelian perlu memenuhi empat syarat: harga penutupan lebih tinggi daripada garis bibir, garis bibir lebih tinggi daripada garis gigi, garis gigi lebih tinggi daripada garis penyu dan RSI lebih besar daripada 55.
Prinsip utama strategi ini adalah berdasarkan penggunaan komposit William Herschel dan RSI. Indeks William Herschel terdiri daripada tiga garis rata: garis Herschel ((biru, 13 kitaran SMA, 8 kitaran ketinggalan), garis gigi ((merah, 8 kitaran SMA, 5 kitaran ketinggalan) dan garis bibir ((hijau, 5 kitaran SMA, 3 kitaran ketinggalan). Urutan urutan tiga garis ini dan penembusan harga dapat menunjukkan arah dan kekuatan trend pasaran.
Apabila garis bibir terletak di atas garis gigi dan garis gigi terletak di atas garis titik, ia menunjukkan bahawa pasaran berada dalam trend menaik; sebaliknya, apabila garis bibir terletak di bawah garis gigi dan garis gigi terletak di bawah garis titik, ia menunjukkan bahawa pasaran berada dalam trend menurun. Pada masa yang sama, strategi ini juga digabungkan dengan indikator RSI untuk pengesahan, RSI lebih besar daripada 55 pada sokongan overdoing dan kurang daripada 45 pada sokongan shorting, yang memberikan isyarat pengesahan tambahan untuk keputusan perdagangan.
Semasa pelaksanaan strategi, sistem akan memantau beberapa keadaan berhenti: untuk kedudukan berbilang kepala, berhenti dipicu apabila RSI jatuh ke bawah 50, harga penutupan jatuh ke bawah garis gigi atau garis bibir jatuh ke bawah garis gigi; untuk kedudukan kepala kosong, berhenti dipicu apabila RSI pecah 50, harga penutupan pecah garis gigi atau garis bibir pecah garis gigi.
Mekanisme pengesahan bergandaStrategi ini memerlukan empat syarat untuk masuk secara serentak, yang berkesan mengurangkan isyarat palsu dan meningkatkan kualiti dagangan. Barisan tiga William Herschel mengukuhkan arah trend, dan nilai RSI mengukuhkan tenaga dinamik.
Peraturan masuk dan keluar yang jelasStrategi menyediakan isyarat masuk dan keluar yang jelas, mengurangkan penilaian subjektif, dan menjadikan proses perdagangan lebih teratur dan disiplin.
Kawalan risiko yang sempurnaStrategi ini menetapkan pelbagai keadaan berhenti, termasuk isyarat reversal berdasarkan RSI, perubahan hubungan harga dengan garis gigi, dan perubahan hubungan kedudukan garis bibir dengan garis gigi. Mekanisme kawalan risiko bertingkat ini membantu menghentikan kerugian tepat pada masanya, mengawal risiko maksimum perdagangan tunggal.
Maklum balas visualStrategi: Menandai tanda beli, tanda jual, titik berhenti dan titik keuntungan pada carta, dan menunjukkan keadaan pemenuhan syarat-syarat secara langsung melalui jadual, meningkatkan tahap penglihatan proses perdagangan.
Sangat boleh menyesuaikan diriWalaupun parameter strategi ditetapkan secara lalai, semua parameter utama boleh disesuaikan dengan input, yang membolehkan peniaga mengoptimumkannya mengikut keadaan pasaran yang berbeza atau keutamaan peribadi.
Perdagangan yang kerap berlaku di pasaran kecil yang bergolakHarga mungkin sering melintasi garis penyu dan RSI mungkin berayun berhampiran nilai kritikal, menyebabkan terlalu banyak isyarat perdagangan dan sering masuk dan keluar, meningkatkan kos perdagangan. Penyelesaian adalah dengan menambah syarat pengesahan atau memanjangkan masa pemerhatian.
Risiko Tergelincir Kepada Pergerakan KecilApabila berita besar yang mengejutkan di pasaran menyebabkan harga turun naik dengan cepat, harga transaksi sebenar mungkin jauh lebih jauh daripada harga semasa isyarat mencetuskan, meningkatkan risiko tergelincir. Ia disyorkan untuk menggunakan strategi ini dengan berhati-hati atau ditangguhkan sebelum data penting dikeluarkan.
Matlamat keuntungan konservatifStrategi akan menetapkan sasaran keuntungan menjadi 2 unit perubahan terkecil, yang mungkin terlalu konservatif dan tidak dapat memahami keadaan trend dalam pasaran yang lebih bergolak. Anda boleh mempertimbangkan untuk menyesuaikan sasaran keuntungan mengikut keadaan pasaran yang bergolak secara dinamik, atau menggunakan strategi penyelesaian setoran.
Penurunan dalam IndeksIa mungkin tidak dapat menangkap titik tikungan dalam masa yang tepat apabila pasaran berubah dengan cepat. Ia disyorkan untuk membuat penilaian tambahan dengan gabungan petunjuk utama lain atau analisis tingkah laku harga.
Kepekaan ParameterPrestasi strategi lebih sensitif terhadap parameter yang ditetapkan, terutamanya penetapan had RSI. Kombinasi parameter yang berbeza mungkin berlainan dalam keadaan pasaran yang berbeza, dan anda perlu mencari kombinasi parameter yang optimum melalui pengulangan.
Dinamika RSIStrategi semasa menggunakan had RSI tetap ((55 dan 45), anda boleh mempertimbangkan untuk menyesuaikan had ini mengikut pergerakan kadar turun naik pasaran. Guna had yang lebih longgar dalam pasaran yang bergelombang tinggi, gunakan had yang lebih ketat dalam pasaran yang bergelombang rendah, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Menambah penapis transaksiMemperkenalkan pengesahan jumlah dagangan, penapis kadar turun naik atau penunjuk kekuatan trend, menapis isyarat lemah di pasaran goyah, masuk hanya apabila trend jelas, meningkatkan kadar kemenangan.
Optimumkan strategi penangguhanStrategi penutupan 2 tick yang tetap terlalu mudah, anda boleh mempertimbangkan untuk melaksanakan strategi penutupan dinamik, seperti penutupan yang mengikuti atau penutupan berdasarkan ATR (Average True Rate) untuk mendapatkan lebih banyak keuntungan dalam keadaan trend yang kuat.
Penapisan masaMenambah ciri penapis masa untuk mengelakkan masa-masa yang kurang cair atau tidak stabil, seperti 15 minit sebelum dan selepas pembukaan atau semasa data penting diterbitkan, untuk mengurangkan risiko yang tidak perlu.
Pengurusan wang yang lebih baikStrategi semasa menggunakan peratusan dana tetap ((100%) untuk berdagang, anda boleh mempertimbangkan untuk menyesuaikan saiz kedudukan secara dinamik berdasarkan turun naik pasaran atau perubahan nilai bersih akaun, untuk pengurusan dana yang lebih saintifik.
Strategi perdagangan pengesahan pelbagai peringkat William Herschel yang digabungkan dengan RSI adalah sistem perdagangan yang tersusun dengan baik dan logik yang jelas, yang mewujudkan kerangka keputusan perdagangan bertingkat dengan mengintegrasikan keupayaan penilaian trend William Herschel dan fungsi pengesahan dinamik RSI. Kelebihan utama strategi ini adalah mekanisme pengesahan pelbagai dan kawalan risiko yang baik, tetapi juga menghadapi cabaran seperti terlalu banyak isyarat pasaran yang bergolak, risiko titik tergelincir, dan tujuan keuntungan yang konservatif.
Strategi ini dijangka meningkatkan lagi kestabilan dan keuntungan dengan cara menyesuaikan nilai terhad RSI secara dinamik, menambah penapis perdagangan, mengoptimumkan strategi penangguhan, menambah penapis masa, dan meningkatkan pengurusan wang. Secara keseluruhan, ini adalah strategi perdagangan kuantitatif yang bernilai praktikal, sesuai untuk digunakan oleh peniaga yang mempunyai pengetahuan tentang indikator teknikal dan ingin mendapatkan keuntungan yang stabil di pasaran niaga hadapan.
/*backtest
start: 2024-08-19 00:00:00
end: 2025-08-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT","balance":5000}]
*/
//@version=5
strategy("Natural Gas Alligator RSI Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// =====================================
// INPUTS
// =====================================
// Williams Alligator Settings (default)
jaw_length = input.int(13, title="Jaw Length", minval=1)
jaw_offset = input.int(8, title="Jaw Offset", minval=0)
teeth_length = input.int(8, title="Teeth Length", minval=1)
teeth_offset = input.int(5, title="Teeth Offset", minval=0)
lips_length = input.int(5, title="Lips Length", minval=1)
lips_offset = input.int(3, title="Lips Offset", minval=0)
// RSI Settings (default)
rsi_length = input.int(14, title="RSI Length", minval=1)
// Natural Gas tick size (typically 0.001)
tick_size = input.float(0.001, title="Tick Size", minval=0.0001, step=0.0001)
// =====================================
// INDICATORS
// =====================================
// Williams Alligator
jaw = ta.sma(hl2, jaw_length)[jaw_offset]
teeth = ta.sma(hl2, teeth_length)[teeth_offset]
lips = ta.sma(hl2, lips_length)[lips_offset]
// RSI
rsi = ta.rsi(close, rsi_length)
// =====================================
// PLOT INDICATORS
// =====================================
plot(jaw, "Alligator Jaw", color=color.blue, linewidth=2)
plot(teeth, "Alligator Teeth", color=color.red, linewidth=2)
plot(lips, "Alligator Lips", color=color.green, linewidth=2)
// RSI (plotted in separate pane)
hline(50, "RSI Mid Line", color=color.gray, linestyle=hline.style_dashed)
hline(55, "RSI Buy Level", color=color.green, linestyle=hline.style_dotted)
hline(45, "RSI Sell Level", color=color.red, linestyle=hline.style_dotted)
plot(rsi, "RSI", color=color.purple)
// =====================================
// STRATEGY CONDITIONS
// =====================================
// Buy Conditions
buy_condition_1 = close > lips
buy_condition_2 = lips > teeth
buy_condition_3 = teeth > jaw
buy_condition_4 = rsi > 55
buy_signal = buy_condition_1 and buy_condition_2 and buy_condition_3 and buy_condition_4
// Sell Conditions
sell_condition_1 = close < lips
sell_condition_2 = lips < teeth
sell_condition_3 = teeth < jaw
sell_condition_4 = rsi < 45
sell_signal = sell_condition_1 and sell_condition_2 and sell_condition_3 and sell_condition_4
// Stop Loss Conditions for Long Position
long_stop_condition_1 = rsi < 50
long_stop_condition_2 = ta.crossunder(close, teeth)
long_stop_condition_3 = lips < teeth
long_stop_loss = long_stop_condition_1 or long_stop_condition_2 or long_stop_condition_3
// Stop Loss Conditions for Short Position
short_stop_condition_1 = rsi > 50
short_stop_condition_2 = ta.crossover(close, teeth)
short_stop_condition_3 = lips > teeth
short_stop_loss = short_stop_condition_1 or short_stop_condition_2 or short_stop_condition_3
// =====================================
// STRATEGY EXECUTION
// =====================================
// Variables to track entry prices
var float long_entry_price = na
var float short_entry_price = na
// Long Entry
if buy_signal and strategy.position_size == 0
strategy.entry("Long", strategy.long)
long_entry_price := close
alert("Buy Signal Generated", alert.freq_once_per_bar)
// Short Entry
if sell_signal and strategy.position_size == 0
strategy.entry("Short", strategy.short)
short_entry_price := close
alert("Sell Signal Generated", alert.freq_once_per_bar)
// Long Exit Conditions
if strategy.position_size > 0
// Take Profit: 2 ticks above entry
long_take_profit = long_entry_price + (2 * tick_size)
if close >= long_take_profit
strategy.close("Long", comment="Take Profit")
alert("Take Profit - Long Position Closed", alert.freq_once_per_bar)
long_entry_price := na
// Stop Loss
if long_stop_loss
strategy.close("Long", comment="Stop Loss")
alert("Stop Loss - Long Position Closed", alert.freq_once_per_bar)
long_entry_price := na
// Short Exit Conditions
if strategy.position_size < 0
// Take Profit: 2 ticks below entry
short_take_profit = short_entry_price - (2 * tick_size)
if close <= short_take_profit
strategy.close("Short", comment="Take Profit")
alert("Take Profit - Short Position Closed", alert.freq_once_per_bar)
short_entry_price := na
// Stop Loss
if short_stop_loss
strategy.close("Short", comment="Stop Loss")
alert("Stop Loss - Short Position Closed", alert.freq_once_per_bar)
short_entry_price := na
// =====================================
// CHART LABELS AND ALERTS
// =====================================
// Buy Signal Label
if buy_signal and strategy.position_size == 0
label.new(bar_index, low - (high - low) * 0.1, "BUY\nSIGNAL",
color=color.green, style=label.style_label_up,
textcolor=color.white, size=size.small)
// Sell Signal Label
if sell_signal and strategy.position_size == 0
label.new(bar_index, high + (high - low) * 0.1, "SELL\nSIGNAL",
color=color.red, style=label.style_label_down,
textcolor=color.white, size=size.small)
// Stop Loss Labels
if strategy.position_size > 0 and long_stop_loss
label.new(bar_index, high + (high - low) * 0.1, "STOP\nLOSS",
color=color.orange, style=label.style_label_down,
textcolor=color.white, size=size.small)
if strategy.position_size < 0 and short_stop_loss
label.new(bar_index, low - (high - low) * 0.1, "STOP\nLOSS",
color=color.orange, style=label.style_label_up,
textcolor=color.white, size=size.small)
// Take Profit Labels
if strategy.position_size > 0 and not na(long_entry_price) and close >= (long_entry_price + (2 * tick_size))
label.new(bar_index, high + (high - low) * 0.1, "TAKE\nPROFIT",
color=color.blue, style=label.style_label_down,
textcolor=color.white, size=size.small)
if strategy.position_size < 0 and not na(short_entry_price) and close <= (short_entry_price - (2 * tick_size))
label.new(bar_index, low - (high - low) * 0.1, "TAKE\nPROFIT",
color=color.blue, style=label.style_label_up,
textcolor=color.white, size=size.small)
// =====================================
// TABLE FOR CURRENT CONDITIONS
// =====================================
var table info_table = table.new(position.top_right, 2, 8, bgcolor=color.white, border_width=1)
if barstate.islast
table.cell(info_table, 0, 0, "Condition", bgcolor=color.gray, text_color=color.white)
table.cell(info_table, 1, 0, "Status", bgcolor=color.gray, text_color=color.white)
table.cell(info_table, 0, 1, "Close > Lips", bgcolor=color.white)
table.cell(info_table, 1, 1, buy_condition_1 ? "✓" : "✗", text_color=buy_condition_1 ? color.green : color.red)
table.cell(info_table, 0, 2, "Lips > Teeth", bgcolor=color.white)
table.cell(info_table, 1, 2, buy_condition_2 ? "✓" : "✗", text_color=buy_condition_2 ? color.green : color.red)
table.cell(info_table, 0, 3, "Teeth > Jaw", bgcolor=color.white)
table.cell(info_table, 1, 3, buy_condition_3 ? "✓" : "✗", text_color=buy_condition_3 ? color.green : color.red)
table.cell(info_table, 0, 4, "RSI > 55", bgcolor=color.white)
table.cell(info_table, 1, 4, buy_condition_4 ? "✓" : "✗", text_color=buy_condition_4 ? color.green : color.red)
table.cell(info_table, 0, 5, "RSI < 45", bgcolor=color.white)
table.cell(info_table, 1, 5, sell_condition_4 ? "✓" : "✗", text_color=sell_condition_4 ? color.red : color.green)
table.cell(info_table, 0, 6, "Current RSI", bgcolor=color.white)
table.cell(info_table, 1, 6, str.tostring(math.round(rsi, 2)), text_color=color.black)
table.cell(info_table, 0, 7, "Position", bgcolor=color.white)
position_text = strategy.position_size > 0 ? "LONG" : strategy.position_size < 0 ? "SHORT" : "NONE"
position_color = strategy.position_size > 0 ? color.green : strategy.position_size < 0 ? color.red : color.gray
table.cell(info_table, 1, 7, position_text, text_color=position_color)