Strategi trading multi time frame berdasarkan RSI dan rata-rata


Tanggal pembuatan: 2024-01-22 11:00:20 Terakhir diubah: 2024-01-22 11:00:20
Keterangan: 0 Jumlah klik: 304
1
Perhatian
1105
Pengamat

基于RSI和平均线的多时间框架交易策略

Pengamatan

Strategi ini menggabungkan indikator acak RSI, SMA bergerak dan WMA bergerak yang ditimbang untuk mencari sinyal beli dan jual. Strategi ini juga menentukan arah tren dalam jangka waktu 5 menit dan 1 jam. Dalam tren stabil, sinyal perdagangan dihasilkan ketika RSI cepat melintasi atau melintasi garis lambat.

Prinsip Strategi

Strategi ini pertama-tama menghitung 144 siklus ditambah WMA dan 5 siklus SMA pada dua frame waktu masing-masing 1 jam dan 5 menit. Hanya ketika SMA 5 menit berada di atas WMA, maka pasar dianggap multi-headed. Kemudian strategi ini menghitung indikator RSI multi-space, serta garis K dan D yang sesuai.

Analisis Keunggulan

Ini adalah strategi pelacakan tren yang sangat efektif. Ini menggabungkan dua penilaian tren pada waktu yang sama dan sangat efektif mengurangi sinyal yang salah. Selain itu, ini menggabungkan berbagai indikator untuk menyaring sinyal, termasuk RSI, SMA, dan WMA, sehingga sinyalnya lebih dapat diandalkan. Dengan membiarkan RSI mendorong KDJ, ini juga memodifikasi masalah sinyal palsu yang mudah terjadi dalam strategi KDJ biasa. Selain itu, strategi ini juga memiliki pengaturan stop loss dan stop loss untuk mengunci keuntungan dan dapat mengendalikan risiko secara efektif.

Analisis Risiko

Risiko terbesar dari strategi ini adalah kesalahan penilaian tren. Pada titik balik pasar, rata-rata jangka pendek dan jangka panjang dapat naik atau turun secara bersamaan, sehingga menghasilkan sinyal yang salah. Selain itu, pada saat pasar goyah, RSI juga dapat menghasilkan sinyal perdagangan yang lebih tidak jelas. Namun, risiko ini dapat dikurangi dengan menyesuaikan siklus SMA dan WMA dan parameter RSI dengan tepat.

Optimasi arah

Strategi ini dapat dioptimalkan dari beberapa aspek berikut: 1) Uji SMA, WMA, dan RSI dengan panjang yang berbeda untuk menemukan kombinasi parameter terbaik 2) Menambahkan penilaian indikator lain, seperti MACD, garis Brin, dll untuk memverifikasi keandalan sinyal 3) Mengoptimalkan strategi penghentian kerugian, menguji metode penghentian kerugian proporsional tetap, penghentian titik slip saldo, penghentian kerugian pelacakan, dll. 4) Bergabung dengan modul manajemen dana untuk mengontrol ukuran investasi tunggal dan kerangka risiko keseluruhan 5) Menambah algoritma pembelajaran mesin untuk menemukan parameter yang paling baik dengan melakukan banyak retesting

Pengamatan

Strategi ini memanfaatkan keunggulan dari moving average dan indikator acak untuk membangun sistem pelacakan tren yang lebih dapat diandalkan. Melalui beberapa kerangka waktu dan verifikasi indikator, ia dapat dengan lancar menangkap arah tren garis menengah dan panjang. Sementara itu, pengaturan stop loss stop bracket juga membuatnya tahan terhadap beberapa gejolak pasar. Namun, masih ada ruang untuk perbaikan, seperti menguji lebih banyak indikator dalam kombinasi, memperkenalkan metode pembelajaran mesin untuk mencari parameter optimal, dll. Secara keseluruhan, ini adalah strategi perdagangan yang sangat menjanjikan.

Kode Sumber Strategi
                
                    /*backtest
start: 2023-12-22 00:00:00
end: 2024-01-21 00:00:00
period: 1h
basePeriod: 15m
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/
// © bufirolas

// Works well with a wide stop with 20 bars lookback
// for the SL level and a 2:1 reward ratio Take Profit .
// These parameters can be modified in the Inputs section of the strategy panel.

// "an entry signal it's a cross down or up on
// the stochastics. if you're in a downtrend
// on the hourly time frame you
// must also be in a downtrend on the five
// minute so the five period has to be below the 144
// as long as the five period is still trading below
// the 144 period on both the hourly and the five minutes
// we are looking for these short signals crosses down
// in the overbought region of the stochastic. Viceversa for longs"

//@version=4
strategy("Stoch + WMA + SMA strat", overlay=true)

//SL & TP Inputs
i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=10, step=1, title="SL Expander")
i_TPExpander=input(defval=30, step=1, title="TP Expander")
i_reverse=input(false, title="Reverse Trades")
i_TStop =input(false, title="Use Trailing Stop")

//Strategy Inputs
src4 = input(close, title="RSI Source")
stochOS=input(defval=20, step=5, title="Stochastics Oversold Level")
stochOB=input(defval=80, step=5, title="Stochastics Overbought Level")

//Stoch rsi Calculations
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
rsi1 = rsi(src4, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
h0 = hline(80, linestyle=hline.style_dotted)
h1 = hline(20, linestyle=hline.style_dotted)

//MA
wmalen=input(defval=144, title="WMA Length")
WMA = security(syminfo.tickerid, "60", wma(close, wmalen))
SMA = security(syminfo.tickerid, "60", sma(close, 5))
minWMA = wma(close, wmalen)
minSMA = sma(close, 5)

//Entry Logic
stobuy = crossover(k, d) and k < stochOS
stosell = crossunder(k, d) and k > stochOB
mabuy = minSMA > minWMA
daymabuy = SMA > WMA

//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0)/5)*i_SLExpander)
lTP=(strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0)))+((valuewhen(bought, atr(14), 0)/5)*i_TPExpander))
sTP=(strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0) - strategy.position_avg_price))-((valuewhen(bought, atr(14), 0)/5)*i_TPExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0

//TrailingStop
dif=(valuewhen(strategy.position_size>0 and strategy.position_size[1]<=0, high,0))
 -strategy.position_avg_price
trailOffset     = strategy.position_avg_price - LSL
var tstop = float(na)
if strategy.position_size > 0
    tstop := high- trailOffset - dif
    if tstop<tstop[1]
        tstop:=tstop[1]
else
    tstop := na
StrailOffset     = SSL - strategy.position_avg_price
var Ststop = float(na)
Sdif=strategy.position_avg_price-(valuewhen(strategy.position_size<0 
 and strategy.position_size[1]>=0, low,0))
if strategy.position_size < 0
    Ststop := low+ StrailOffset + Sdif
    if Ststop>Ststop[1]
        Ststop:=Ststop[1]
else
    Ststop := na
    
//Stop Selector
SL= islong ? LSL : isshort ? SSL : na
if i_TStop 
    SL:= islong ? tstop : isshort ? Ststop : na
TP= islong ? lTP : isshort ? sTP : na


//Entries
if stobuy and mabuy and daymabuy
    strategy.entry("long", long=not i_reverse?true:false)
if stosell and not mabuy and not daymabuy
    strategy.entry("short", long=not i_reverse?false:true)


//Exit
if i_SL
    strategy.exit("longexit", "long", stop=SL, limit=TP)
    strategy.exit("shortexit", "short", stop=SL, limit=TP)

//Plots
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross)
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross)
plot(minWMA)
plot(minSMA, color=color.green)



                
            
Informasi lebih lanjut