Strategi Perdagangan Kuantiti yang cekap menggabungkan

Penulis:ChaoZhang, Tarikh: 2024-02-01 15:09:06
Tag:

img

Ringkasan

Strategi ini terutamanya menggabungkan penunjuk RSI 5 hari dan purata bergerak 200 hari untuk membentuk isyarat keputusan perdagangan, yang tergolong dalam strategi gabungan penunjuk teknikal. Prinsip dagangan utamanya adalah: apabila harga berjalan ke kawasan overbought / oversold, ia isyarat untuk menjual; apabila harga jatuh ke kawasan oversold, ia isyarat untuk membeli. Kelebihan terbesar strategi ini adalah bahawa isyarat strategi agak jelas dan risiko retracement agak kecil. Tetapi terdapat juga batasan dalam membentuk keputusan perdagangan berdasarkan hanya satu kombinasi penunjuk teknikal, yang boleh dioptimumkan melalui model pelbagai faktor dan algoritma pembelajaran mesin.

Prinsip Strategi

Strategi ini terutamanya menggabungkan penunjuk RSI 5 hari dan purata bergerak 200 hari untuk menilai kawasan overbought / oversold di mana harga berjalan dan membentuk keputusan perdagangan:

  1. Indikator RSI 5 hari menilai kawasan overbought / oversold di mana harga berjalan. Garis overbought ditetapkan pada 72 dan kawasan oversold adalah 30. Apabila penunjuk RSI memecahkan 30 dari bawah ke atas, isyarat beli dihasilkan; apabila penunjuk RSI jatuh dari atas ke bawah di bawah 72, isyarat jual dihasilkan.

  2. Purata bergerak 200 hari menentukan arah trend jangka sederhana hingga panjang. Apabila harga di bawah purata bergerak 200 hari, ia adalah fasa penurunan harga; apabila harga di atas purata bergerak 200 hari, ia adalah fasa kenaikan harga.

  3. Menggabungkan pertimbangan 1 dan 2, strategi ini menjual apabila penunjuk RSI 5 hari terlalu banyak dibeli dan pecah di bawah 72, dan membeli apabila RSI 5 hari pecah di bawah 30 dan harga di bawah purata bergerak 200 hari.

Kelebihan Strategi

  1. Isyarat strategi agak jelas, menggunakan penunjuk RSI untuk menentukan isyarat overbought / oversold oleh kawasan penilaian.

  2. Purata bergerak 200 hari menentukan arah trend utama untuk mengelakkan operasi yang bertentangan.

  3. Jumlah maksimum kedudukan boleh ditetapkan untuk membantu mengawal risiko.

  4. Strategi ini mempunyai ruang yang besar untuk pengoptimuman parameter, parameter RSI yang boleh disesuaikan dan parameter purata bergerak.

  5. Risiko retracement yang agak kecil dapat mengawal retracement maksimum strategi dengan berkesan.

Risiko Strategi

  1. Menggunakan hanya penunjuk RSI dan purata bergerak, isyarat strategi mungkin tidak stabil, dengan risiko kerugian goyah panjang dan pendek di pasaran yang tidak menentu.

  2. Perlu mengoptimumkan dan menguji parameter RSI dan parameter purata bergerak untuk hasil strategi yang lebih baik.

  3. Indikator atau model lain boleh diperkenalkan untuk mengoptimumkan isyarat strategi.

Arahan untuk Pengoptimuman Strategi

  1. Gunakan lebih banyak kombinasi penunjuk untuk menilai. seperti MACD, KD, penunjuk turun naik, dll.

  2. Meningkatkan penilaian model pembelajaran mesin seperti LSTM untuk menilai kestabilan isyarat perdagangan.

  3. Meningkatkan faktor kuantitatif seperti perubahan dalam jumlah dagangan, arah aliran modal dan penilaian lain mengenai faktor modal.

  4. Mengoptimumkan parameter strategi, seperti parameter RSI, parameter purata bergerak, dan lain-lain.

  5. Mengoptimumkan mekanisme stop loss, seperti pergerakan stop loss, stop loss masa, dan lain-lain.

Ringkasan

Strategi ini terutamanya menggunakan gabungan penunjuk RSI 5 hari dan penunjuk purata bergerak 200 hari untuk menilai kawasan overbought / oversold harga dan membentuk isyarat perdagangan. Ia tergolong dalam strategi gabungan penunjuk teknikal. Isyarat strategi agak jelas dan risiko retracement maksimum agak kecil. Tetapi ia boleh dioptimumkan lagi melalui kombinasi pelbagai penunjuk dan penilaian pembelajaran mesin untuk meningkatkan keputusan strategi.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 3m
basePeriod: 1m
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/
// ©chewyScripts.

//@version=5
strategy("96er RSI+200EMA Strategy + Alerts", overlay=true)
// This works best on a small account $100, with 50% of equity and up to 10 max open trades. 
// 96% Profitable, turns $100 into $350 in 1 month. very few losses. super happy with it.
// So far it triples the account on a 1m chart in 1 month back testing on the SEI-USD pair.
// I did not test on FX pairs or other instruments.
// had some issues with the inputs not working so had to hard code some, also the lastClose var sometimes breaks and starts following every candle, not sure why.

in_r1 = input.int(5,"5 day input or RSI1")
in_openOrders = input.int(3,"max open orders")

in_lowerRSI = input.int(30,"RSI Lower")
in_upperRSI = input.int(72,"RSI Upper ")

in_emaperiod = input.int(200,"EMA Period")

in_buybreakout = input.int(50,"Buy breakout range")

in_buyTP = input.float(1.05,"Buy TP: 1+TP %, .05 seems to work well.")
in_sellTP = input.float(0.9850, "Sell TP: 1-TP%. .025 seems to work well. ")

simple int rsi5 = in_r1

// 3 rsi strategy , when all of them are overbought we sell, and vice versa
rsi7 = ta.rsi(close,rsi5)
lastClose = request.security(syminfo.tickerid, "D", close, lookahead = barmerge.lookahead_on)
rsi3 = ta.rsi(close[5],rsi5)

ma = ta.ema(close,in_emaperiod)

plot(rsi7,"5 Day RSI",color.red)
plot(lastClose,"Yesterdays Close",color.green)
plot(rsi3,"Previous 5th candles RSI",color.purple)


// sell condition
//sell = ta.crossunder(rsi7,70) and ta.crossunder(rsi14,70) and ta.crossunder(rsi21,70)

//buy condition
//buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and rsi3 <= in_upperRSI and strategy.opentrades < in_openOrders
//sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and rsi3 >= in_lowerRSI3 and strategy.opentrades < in_openOrders

buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and close < lastClose and strategy.opentrades < in_openOrders
sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and close > lastClose and strategy.opentrades < in_openOrders


var lastBuy = close 
var lastSell = close 

if (buy)
    strategy.entry("BUY", strategy.long)
    lastBuy := close 
    alert("Buy")

if ((close >= lastBuy*in_buyTP ) or rsi7 > in_buybreakout and close >= lastClose and (close >= lastClose*in_buyTP or close >= lastBuy*in_buyTP ) )
    strategy.close("BUY", "BUY Exit")
    alert("Buy Exit")
    
if (sell)
    strategy.entry("SELL", strategy.short)
    lastSell := close 
    alert("Sell")

if ( close < ma and (close <= lastSell*in_sellTP ) or (close < lastClose*in_sellTP) )
    strategy.close("SELL", "Sell Exit")
    alert("Sell Exit")


Lebih lanjut