Strategi Penapis RSI Tanpa Sisihan Awan Ichimoku


Tarikh penciptaan: 2023-11-07 15:31:06 Akhirnya diubah suai: 2023-11-07 15:31:06
Salin: 0 Bilangan klik: 797
1
fokus pada
1621
Pengikut

Strategi Penapis RSI Tanpa Sisihan Awan Ichimoku

Gambaran keseluruhan

Ini adalah strategi untuk mengesan trend menggunakan indikator awan keseimbangan untuk membuat penilaian trend, dan digabungkan dengan penapis RSI. Strategi ini mengabaikan penyimpangan yang diperhatikan, dapat menangkap perubahan trend tepat pada masanya, dan menapis pecah palsu melalui RSI untuk mengawal risiko perdagangan.

Prinsip Strategi

Strategi ini terutamanya berdasarkan awan keseimbangan pertama (Ichimoku Cloud) yang menentukan arah trend. Awan keseimbangan pertama terdiri daripada garis penukaran, garis rujukan, garis panduan 1, garis panduan 2 dan garis penangguhan. Strategi ini menggunakan awan keseimbangan pertama tanpa pengaliran, iaitu garis pengaliran, garis rujukan dan lain-lain menggunakan nilai masa depan, untuk mengelakkan ketinggalan dalam penilaian trend akibat pengaliran.

Strategi pertama menilai sama ada harga menembusi garis awan, jika garis kelewatan melintasi garis awan, ia dianggap sebagai permulaan tren naik; jika ia melintasi garis awan, ia dianggap sebagai permulaan tren menurun. Selepas trend bermula, strategi terus mengesan hubungan harga dengan garis awan, untuk menilai arah trend yang berterusan. Apabila garis kelewatan terus bertahan di atas garis awan, ia dianggap sebagai tren naik; sebaliknya, ia dianggap sebagai tren menurun.

Selain daripada penghakiman trend, strategi ini juga akan menghasilkan isyarat beli apabila garis peralihan dan garis asas bersilang dengan emas, dan menghasilkan isyarat jual apabila persilangan mati. Isyarat perdagangan ini hanya akan diambil apabila ia sesuai dengan arah trend.

Akhirnya, strategi ini juga memperkenalkan penapis RSI untuk isyarat. Hanya apabila RSI berada di bawah kawasan jual beli, isyarat pembelian akan diterima; Isyarat jual hanya apabila RSI berada di atas kawasan jual beli. Ini dapat menapis isyarat palsu yang disebabkan oleh penembusan palsu.

Analisis kelebihan

  • Menggunakan indikator awan keseimbangan tanpa bias, anda boleh menilai perubahan trend tepat pada masanya, tidak terlepas masa pembalikan
  • Penghakiman gabungan pelbagai syarat yang berkesan untuk menyaring isyarat silap yang dihasilkan oleh penembusan palsu
  • Pengenalan RSI dapat mengelakkan kemasukan yang tidak sesuai dalam keadaan overbought dan oversold
  • Strategi ini telah dioptimumkan untuk data masa depan, dan ia juga dapat menghasilkan hasil yang lebih baik dalam bentuk rakaman.

Analisis risiko

  • Mengambil kira data masa depan boleh menyebabkan kesilapan, kod perlu dioptimumkan untuk digunakan di cakera tetap
  • Penunjuk awan keseimbangan pertama adalah sensitif kepada parameter, dan parameter perlu disesuaikan dengan varieti yang berbeza untuk mencapai kesan terbaik
  • Lebih baik untuk berdagang dengan satu varieti, dan lebih baik untuk berdagang dengan pelbagai varieti
  • Terdapat lebih banyak peraturan untuk menilai trend, memerlukan pengesahan semula yang mencukupi

Anda boleh mencari kombinasi parameter yang terbaik dengan mengoptimumkan parameter. Anda boleh mempertimbangkan untuk berdagang hanya jenis tertentu atau mengurangkan bilangan pemain yang membuka kedudukan untuk mengawal risiko di pasaran. Anda juga boleh memperkenalkan strategi hentikan kerugian untuk mengehadkan kerugian tunggal.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Mengoptimumkan parameter awan yang seimbang untuk mencari kombinasi parameter terbaik untuk pelbagai jenis transaksi

  2. Menambah strategi hentikan kerugian yang boleh mengawal kerugian tunggal dalam julat yang boleh diterima

  3. Meningkatkan strategi pengurusan kedudukan untuk menguruskan risiko keseluruhan dengan menyesuaikan saiz kedudukan

  4. Memperkenalkan lebih banyak petunjuk untuk penilaian komprehensif, seperti indikator kadar turun naik, jumlah dagangan, dan lain-lain untuk meningkatkan ketepatan isyarat

  5. Optimumkan pilihan masa masuk, boleh menggunakan cara seperti penetapan atau panggilan balik masuk

  6. Mengoptimumkan perpindahan langkah, memilih parameter kitaran beludru terbaik mengikut ciri-ciri pelbagai jenis

ringkaskan

Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang lebih kukuh. Ia menggunakan arah arah trend yang ditentukan oleh indikator awan keseimbangan pada mulanya, kemudian menggabungkan persilangan garis penukaran dan garis asas untuk menghantar isyarat perdagangan, dan akhirnya melalui penembusan palsu melalui indikator RSI.

Kod sumber strategi
/*backtest
start: 2022-10-31 00:00:00
end: 2023-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KryptoNight

//@version=4
// comment/uncomment Study/Strategy to easily switch modes
// study("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - alerts", shorttitle="IchiCloud + RSI - alerts", overlay=true)
// ============================================================================== Strategy mode - uncomment to activate
strategy("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - strategy", shorttitle="IchiCloud + RSI - Strategy Tester Mode", overlay=true, pyramiding = 0,
  currency = currency.USD, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100,
  calc_on_every_tick = true, calc_on_order_fills = true, commission_type = strategy.commission.percent, commission_value = 0.075)
// ==============================================================================

// ------------------------------------------------------------------------------

ichiCloud_offset   = input(false, title="Standard Ichimoku Cloud")                  // with the visual offset
ichiCloud_noOffset = input(true,  title="Ichimoku Cloud - no offset - no repaint")  // without the visual offset

conversion_prd = input(9, minval=1, title="Conversion Line Period - Tenkan-Sen")
baseline_prd   = input(26, minval=1, title="Base Line Period - Kijun-Sen")
baselineA_prd  = input(52, minval=1, title="Base Line Period - Kijun-Sen (auxiliary)")
leadingSpan_2prd = input(52, minval=1, title="Lagging Span 2 Periods - Senkou Span B")
displacement = input(26, minval=0, title="Displacement: (-) Chikou Span; (+) Senkou Span A")
extra_bars = input(1, minval=0, title="Displacement: additional bars")
laggingSpan_src = input(close, title="Lagging Span price source - Chikou-Span")

donchian(len) => avg(lowest(len), highest(len))
displ = displacement-extra_bars
// ------------------------------------------------------------------------------
// OFFSET:
conversion = donchian(conversion_prd)   // Conversion Line - Tenkan-Sen (9 Period)
baseline  = donchian(baseline_prd)      // Base Line - Kijun-Sen (26 Period)
baselineA = donchian(baselineA_prd)     // Base Line Period - Kijun-Sen (auxiliary)
leadingSpanA = avg(conversion, baseline)
leadingSpanB = donchian(leadingSpan_2prd)
laggingSpan = laggingSpan_src

// Color - bullish, bearish
col_cloud = leadingSpanA>=leadingSpanB ? color.green : color.red

// Cloud Lines
spanA = plot(ichiCloud_offset? leadingSpanA : na, offset=displ, title="Offset: Lead Line 1 - Senkou Span A cloud", color=color.green)
spanB = plot(ichiCloud_offset? leadingSpanB : na, offset=displ, title="Offset: Lead Line 2 - Senkou Span B cloud", color=color.red)
fill(spanA, spanB, color=col_cloud, transp=80, title="Offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring")

// Other Lines
conversion_p = plot(ichiCloud_offset? conversion : na, title="Offset: Conversion Line - Tenkan-Sen", color=#0496ff)
standard_p = plot(ichiCloud_offset? baseline : na, title="Offset: Base Line - Kijun-Sen", color=#991515)
standardA_p = plot(ichiCloud_offset? baselineA : na, title="Offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal)
lagging_Span_p = plot(ichiCloud_offset? laggingSpan : na, offset=-displ, title="Offset: Chikou Span (Lagging Span)", color=#459915)

// ------------------------------------------------------------------------------
// NO OFFSET:
conversion_noOffset = conversion[displ] // Conversion Line - Tenkan-Sen (9 Period)
baseline_noOffset  = baseline[displ]    // Base Line - Kijun-Sen (26 Period)
baselineA_noOffset = baselineA[displ]   // Base Line Period - Kijun-Sen (auxiliary)
leadingSpanA_noOffset = leadingSpanA[displ*2]
leadingSpanB_noOffset = leadingSpanB[displ*2]
laggingSpan_noOffset = laggingSpan[0]

// Color - bullish, bearish
col_cloud_noOffset = leadingSpanA_noOffset>=leadingSpanB_noOffset ? color.green : color.red

// Cloud Lines
spanA_noOffset = plot(ichiCloud_noOffset? leadingSpanA_noOffset : na, title="No offset: Lead Line 1 - Senkou Span A cloud", color=color.green, transp=0)
spanB_noOffset = plot(ichiCloud_noOffset? leadingSpanB_noOffset : na, title="No offset: Lead Line 2 - Senkou Span B cloud", color=color.red, transp=0)
fill(spanA_noOffset, spanB_noOffset, color=col_cloud_noOffset, transp=80, title="No offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring")

// Other Lines
conversion_p_noOffset = plot(ichiCloud_noOffset? conversion_noOffset : na, title="No offset: Conversion Line - Tenkan-Sen", color=#0496ff, transp=0)
baseline_p_noOffset = plot(ichiCloud_noOffset? baseline_noOffset : na, title="No offset: Base Line - Kijun-Sen", color=#991515, transp=0)
baselineA_p_noOffset = plot(ichiCloud_noOffset? baselineA_noOffset : na, title="No offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal, transp=0)
laggingSpan_p_noOffset = plot(ichiCloud_noOffset? laggingSpan_noOffset : na, title="No offset: Chikou Span (Lagging Span)", color=#459915, transp=0)

// ==============================================================================
// Conditions & Alerts (based on the lines without offset)

maxC = max(leadingSpanA_noOffset,leadingSpanB_noOffset)
minC = min(leadingSpanA_noOffset,leadingSpanB_noOffset)

// Trend start signals: crosses between Chikou Span (Lagging Span) and the Cloud (Senkou Span A, Senkou Span B)
uptrend_start   = crossover(laggingSpan_noOffset,maxC)
downtrend_start = crossunder(laggingSpan_noOffset,minC)

// Trends
uptrend   = laggingSpan_noOffset>maxC // Above Cloud
downtrend = laggingSpan_noOffset<minC // Below Cloud

// No trend: choppy trading - the price is in transition
notrend = maxC>=laggingSpan_noOffset and laggingSpan_noOffset>=minC

// Confirmations
uptrend_confirm   = crossover(leadingSpanA_noOffset,leadingSpanB_noOffset)
downtrend_confirm = crossunder(leadingSpanA_noOffset,leadingSpanB_noOffset)

// Signals - crosses between Conversion Line (Tenkan-Sen) and Base Line (Kijun-Sen)
bullish_signal = crossover(conversion_noOffset,baseline_noOffset)
bearish_signal = crossunder(conversion_noOffset,baseline_noOffset)

// Various alerts
alertcondition(uptrend_start,   title="Uptrend Started",   message="Uptrend Started")
alertcondition(downtrend_start, title="Downtrend Started", message="Downtrend Started")

alertcondition(uptrend_confirm,   title="Uptrend Confirmed",   message="Uptrend Confirmed")
alertcondition(downtrend_confirm, title="Downtrend Confirmed", message="Downtrend Confirmed")

alertcondition(bullish_signal, title="Buy Signal",  message="Buy Signal")
alertcondition(bearish_signal, title="Sell Signal", message="Sell Signal")

rsi_OBlevel = input(50, title="RSI Filter: Overbought level (0 = off)")
rsi_OSlevel = input(100,title="RSI Filter: Oversold level (100 = off)")
rsi_len = input(14,title="RSI Length")
rsi_src = input(close,title="RSI Price source")
rsi = rsi(rsi_src,rsi_len)

// Strategy -------------------------------
long_signal  = bullish_signal and uptrend   and rsi<=rsi_OSlevel // breakout filtered by the rsi
exit_long    = bearish_signal and uptrend
short_signal = bearish_signal and downtrend and rsi>=rsi_OBlevel // breakout filtered by the rsi
exit_short   = bullish_signal and downtrend

// Strategy alerts
alertcondition(long_signal, title="Long Signal - Uptrend",      message="Long Signal - Uptrend")
alertcondition(exit_long,   title="Long Exit Signal - Uptrend", message="Long Exit Signal - Uptrend")

alertcondition(short_signal, title="Long Signal - Downtrend",       message="Long Signal - Downtrend")
alertcondition(exit_short,   title="Short Exit Signal - Downtrend", message="Short Exit Signal - Downtrend")

// Plot areas for trend and transition
color_trend = uptrend? #00FF00 : downtrend? #FF0000 : notrend? color.new(#FFFFFF, 50) : na
fill(spanA_noOffset, spanB_noOffset, color=color_trend, transp=90, title="No offset: Ichimoku Cloud - Lagging Span & Cloud based coloring")

plotshape(ichiCloud_noOffset?uptrend_start:na, title="No offset: Uptrend Started", color=color.green, style=shape.circle, location=location.belowbar, size=size.tiny, text="Up")
plotshape(ichiCloud_noOffset?downtrend_start:na, title="No offset: Downtrend Started", color=color.red, style=shape.circle,location=location.abovebar, size=size.tiny, text="Down")

plotshape(ichiCloud_noOffset?uptrend_confirm:na, title="No offset: Uptrend Confirmed", color=color.green, style=shape.circle, location=location.belowbar, size=size.small, text="Confirm Up")
plotshape(ichiCloud_noOffset?downtrend_confirm:na, title="No offset: Downtrend Confirmed", color=color.red, style=shape.circle, location=location.abovebar, size=size.small, text="Confirm Down")

plotshape(ichiCloud_noOffset?long_signal:na, title="No offset: Long Signal", color=#00FF00, style=shape.triangleup, location=location.belowbar, size=size.small, text="Long")
plotshape(ichiCloud_noOffset?exit_long:na, title="No offset: Exit Long Signal", color=color.fuchsia, style=shape.triangledown, location=location.abovebar, size=size.small, text="Exit long")

plotshape(ichiCloud_noOffset?short_signal:na, title="No offset: Short Signal", color=#FF0000, style=shape.triangledown, location=location.abovebar, size=size.small, text="Short")
plotshape(ichiCloud_noOffset?exit_short:na, title="No offset: Exit Short Signal", color=color.fuchsia, style=shape.triangleup, location=location.belowbar, size=size.small, text="Exit short")

// ============================================================================== Strategy Component - uncomment to activate
if (long_signal)
    strategy.entry("Long",strategy.long)
if (exit_long)
    strategy.close("Long")
if (short_signal)
    strategy.entry("Short",strategy.short)
if (exit_short)
    strategy.close("Short")
// ==============================================================================