RSI Axial Moving Average Crossover Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-23 16:45:55
Tag:

img

Ringkasan

RSI Axial Moving Average Crossover Strategy menjana isyarat perdagangan dengan mengira penunjuk RSI dan garis purata bergerak mudahnya dan memerhatikan salib emas dan salib mati di antara keduanya. Strategi ini juga menggabungkan Bollinger Bands untuk menambah penilaian sokongan / rintangan untuk garis purata bergerak aksial RSI.

Logika Strategi

Strategi ini mula-mula mengira penunjuk RSI 14 hari, diikuti dengan garis purata bergerak mudah 8 hari penunjuk RSI. Isyarat beli dihasilkan apabila penunjuk RSI melintasi di atas garis purata bergerak, sementara isyarat jual dihasilkan apabila RSI melintasi di bawah garis purata bergerak.

Pada masa yang sama, strategi menambah Bollinger Bands untuk menentukan sama ada garis purata bergerak aksial RSI agak penuh dengan mengira penyimpangan standard, dengan itu mengelakkan membeli puncak dan menjual bahagian bawah.

Analisis Kelebihan

RSI Axial Moving Average Crossover Strategy menggabungkan penunjuk trend RSI dan garis purata bergerak penunjuk yang mengikuti kurva, yang dapat menentukan dengan berkesan trend pasaran dan rawak.

Band Bollinger yang ditambahkan dalam strategi ini menggunakan prinsip penyimpangan standard untuk menyesuaikan lebar trek atas dan bawah secara automatik, dengan berkesan mencegah isyarat perdagangan yang salah. Apabila Bollinger Bands sempit, ia menunjukkan bahawa perubahan secara beransur-ansur melambatkan, yang sesuai untuk mencari peluang pembalikan. Apabila Bollinger Bands meluas, ia menunjukkan tempoh turun naik pasaran yang ganas, yang sesuai untuk mengesan trend.

Analisis Risiko

Risiko terbesar dari RSI Axial Moving Average Crossover Strategy adalah ketinggalan penunjuk RSI dan garis purata bergerak itu sendiri. Apabila pergerakan pasaran yang cepat berlaku, pengiraan penunjuk dan penghakiman trend akan ketinggalan sejauh tertentu. Ini akan membawa kepada titik beli yang meningkat dan titik jual yang menurun.

Satu lagi risiko utama adalah salah arah penunjuk apabila trend pasaran berubah dari bull ke bear atau sebaliknya, sementara penunjuk RSI dan MA gagal bertindak balas tepat pada masanya, mengakibatkan perdagangan kehilangan.

Penyelesaian termasuk menyesuaikan parameter RSI dengan sewajarnya, memendekkan tempoh MA, menambah penunjuk trend untuk membantu penilaian, dan meluaskan julat stop loss dengan sewajarnya.

Arahan pengoptimuman

RSI Axial Moving Average Crossover Strategy boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter RSI: Sesuaikan panjang RSI untuk mengimbangi kepekaan dan kestabilan

  2. Mengoptimumkan parameter MA: Penyesuaian parameter jenis MA dan tempoh untuk mengoptimumkan trend-mengikuti

  3. Tambah mekanisme stop loss: Tetapkan pergerakan atau masa stop loss untuk mengawal kehilangan tunggal

  4. Menggabungkan penunjuk trend: Tambah MACD, KDJ dan lain-lain untuk mengelakkan pertimbangan pembalikan yang salah

  5. Pengesahan pelbagai jangka masa: Gunakan jangka masa yang lebih panjang untuk menentukan trend untuk mengelakkan terperangkap

Kesimpulan

RSI Axial Moving Average Crossover Strategy adalah strategi perdagangan kuantitatif yang matang secara keseluruhan. Ia menggabungkan kelebihan pelbagai penunjuk teknikal dan dapat menangkap pergerakan pasaran arus perdana melalui penyesuaian parameter dan pengoptimuman pelbagai dimensi. Risiko terbesar adalah ketinggalan penunjuk, yang perlu ditangani dengan menghentikan kerugian untuk mengawal kerugian. Apabila dilaksanakan dengan betul, strategi ini dapat menghasilkan pulangan pelaburan yang agak stabil.


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Copyright (c) 2020-present, Alex Orekhov (everget)
// Corrected Moving Average script may be freely distributed under the terms of the GPL-3.0 license.
strategy('rsisma', shorttitle='rsisma')

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

plot(rsi, "RSI", color=#7E57C2)
plot(rsiMA, "RSI-based MA", color=color.blue)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")


long = ta.crossover(rsi, rsiMA)
short = ta.crossunder(rsi, rsiMA)
if long
    strategy.entry("long", strategy.long)
if short
    strategy.close("long", comment = "long TP")

 
// long1 = close * 9
// long2 = long1 / 100
// long3 = long2 + close


//plot(long3,color=color.blue)
// if short
//     strategy.entry("short", strategy.short)
// if long
//     strategy.close("short", comment = "short TP")




Lebih lanjut