JBravo Strategi Trend Kuantitatif

Penulis:ChaoZhang, Tarikh: 2023-12-27 14:53:07
Tag:

Ringkasan Strategi

JBravo Quantitative Trend Strategy adalah strategi trend mengikut trend berdasarkan purata bergerak. Ia menggunakan purata bergerak mudah 9 hari, purata bergerak eksponen 20 hari, dan purata bergerak mudah 180 hari untuk menentukan arah trend pasaran, serta isyarat beli dan jual akhir.

Nama strategi ini diilhamkan oleh watak kartun Johnny Bravo, yang mewakili keputusan perdagangan yang yakin dan tegas.

Prinsip Strategi

Isyarat beli dihasilkan apabila harga penutupan melintasi di atas purata bergerak mudah 9 hari; Isyarat jual dihasilkan apabila harga penutupan melintasi di bawah purata bergerak eksponensial 20 hari.

Sekiranya purata bergerak 9 hari, 20 hari dan 180 hari semuanya bergerak ke atas, dan purata bergerak 9 hari berada di atas purata bergerak 20 hari, purata bergerak 20 hari berada di atas purata bergerak 180 hari, isyarat beli yang kuat dihasilkan.

Sekiranya purata bergerak 9 hari, 20 hari dan 180 hari semuanya bergerak ke bawah, dan purata bergerak 9 hari berada di bawah purata bergerak 20 hari, purata bergerak 20 hari berada di bawah purata bergerak 180 hari, isyarat jual yang kuat dihasilkan.

Apabila garis Harga Purata Bertimbang Volume melintasi purata bergerak eksponensial 20 hari ke atas, isyarat GoGo Long dihasilkan; Apabila garis Harga Purata Bertimbang Volume melintasi purata bergerak eksponensial 20 hari ke bawah, isyarat GoGo Short dihasilkan.

Analisis Kelebihan

Strategi ini menggabungkan idea-idea trend berikut dan strategi breakout. purata bergerak dapat menentukan arah trend pasaran dengan jelas dan mengurangkan kebarangkalian perdagangan yang salah. Pada masa yang sama, ia menggunakan penunjuk VWAP dengan fleksibel untuk menentukan masa masuk, mengawal risiko sambil memihak kepada terobosan di pasaran.

Berbanding dengan menggunakan purata bergerak sahaja, strategi ini menambah mekanisme kemasukan agresif GoGo Juice, yang dapat memperoleh pulangan yang lebih tinggi dalam trend yang kuat.

Secara keseluruhan, strategi ini mempunyai pengeluaran yang kecil dan keuntungan yang stabil.

Analisis Risiko

Walaupun strategi ini meningkatkan kekuatan entri, titik stop loss sering boleh dicetuskan di pasaran sampingan. Di samping itu, purata bergerak sendiri mempunyai inersia yang tinggi dan tidak dapat mengikuti perubahan harga dalam masa.

Ini bermakna bahawa strategi ini boleh menghasilkan sejumlah perdagangan maya yang sebenarnya tidak mencerminkan pergerakan harga pasaran.

Untuk mengurangkan risiko, kita boleh menyesuaikan kitaran purata bergerak sesuai; atau menambah modul stop loss untuk menghentikan kerugian apabila kerugian mencapai tahap tertentu.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan ke arah berikut:

  1. Sesuaikan parameter purata bergerak dan mengoptimumkan parameter kitaran untuk mencari kombinasi parameter optimum

  2. Tambah penunjuk jumlah untuk mengelakkan isyarat palsu pada masa turun naik harga yang ganas

  3. Meningkatkan modul stop loss dan menetapkan peraturan keluar untuk mengawal setiap kerugian perdagangan

  4. Menggabungkan pilihan sektor panas pasaran untuk menjadikan strategi lebih disasarkan

  5. Mengoptimumkan nisbah kedudukan pembukaan, mengoptimumkan skala yang berbeza untuk parameter yang berbeza

Kesimpulan

JBravo Quantitative Trend Strategy mengintegrasikan analisis purata bergerak dan penilaian trend VWAP. Ia mengejar keuntungan jangka panjang yang stabil sambil mempunyai beberapa mekanisme perdagangan yang agresif. Strategi ini sesuai untuk pegangan jangka menengah dan panjang, dengan risiko sederhana dan tinggi dan pulangan yang tinggi.

[/trans]


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 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/
// © bradvaughn

//@version=4
strategy("JBravo Swing", overlay = false)

var buy_in_progress = false


//Moving Averages
smaInput1 = input(title="Display SMA 9", type=input.bool, defval=true)
smaInput2 = input(title="Display EMA 20", type=input.bool, defval=true)
smaInput4 = input(title="Display SMA 180", type=input.bool, defval=true)
colored_180 = input(false, title="Color-code 180 trend direction")
vwapInput = input(title="Display VWAP", type=input.bool, defval=true)

sma9 = sma(close, 9)
ema20 = ema(close, 20)
sma180 = sma(close, 180)

//Plot Moving Averages
plot(smaInput1 ? sma9 : na, color= color.red, title="SMA 9")
plot(smaInput2 ? ema20 : na, color = color.yellow, title="EMA 20")

// Plot VWAP
vwap1 = vwap(hlc3)
plot(vwapInput ? vwap1 : na, color = color.blue, title="VWAP")
vwaplong = vwap1 > ema20
vwapshort = vwap1 < ema20

//Color SMA 180 trend direction if selected
sma180_uptrend = sma(close, 180) > sma(close[2], 180)
colr = sma180_uptrend == true or colored_180 == false ? color.white : colored_180 == true ? color.gray : na
plot(smaInput4 ? sma180 : na, color = colr, title="SMA 180")

//Get value of lower end of candle
buyLow = iff(lowest(open, 1) < lowest(close, 1), lowest(open, 1), lowest(close, 1))
sellLow = lowest(close, 1)

// Find the lower MA for crossover sell condition
sellma = iff((sma9<ema20), sma9, ema20)


//SMA 9 trend direction
sma9_uptrend = sma(close, 9) > sma(close[2], 9)
//EMA 20 trend direction
ema20_uptrend = ema(close, 20) > sma(close[2], 20)

//Buy or sell if conditions are met
// Buy when the candle low is above the SMA9
// Sell when the candle low is below the lower of SMA9 and EMA20
Buy = iff(buy_in_progress == false and buyLow > sma9 == true, true, false)
Sell = iff(buy_in_progress == true and sellLow < sellma == true, true, false)

// Determine stong buy and strong sell conditions.
// If moving averages are all up, then this will qualify a buy as a strong buy.
// If the moving averages are not up (ie. down) then this will qualify a sell as a strong sell
StrongBuy = iff (Buy and sma9_uptrend and sma180_uptrend and ema20_uptrend and (sma9 > ema20) and (ema20 > sma180), true, false)
StrongSell = iff (Sell and not sma9_uptrend and not sma180_uptrend and not ema20_uptrend and (sma9 < ema20) and (ema20 < sma180), true, false)

//Update Trading status if bought or sold
if Buy
    buy_in_progress := true
if Sell
    buy_in_progress := false
    
// Clear Buy and Sell conditions if StrongBuy or StrongSell conditions exist.  
// This disables plotting Buy and Sell conditions
if StrongBuy
    Buy := false
if StrongSell
    Sell := false
    

//Display BUY/SELL indicators

plotshape(Buy,title="Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Buy")
plotshape(StrongBuy,title="Strong Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Strong Buy")
plotshape(Sell,title="Sell", color=color.red, style=shape.arrowdown,text="Sell")
plotshape(StrongSell,title="Strong Sell", color=color.red, style=shape.arrowdown,text="Strong Sell")

strategy.entry("GoGo Long", strategy.long, 1, when=vwaplong and vwapInput)
strategy.entry("GoGo Short", strategy.short, 1, when=vwapshort and vwapInput)

strategy.close("GoGo Long", when = vwapshort and vwapInput)
strategy.close("GoGo Short", when = vwaplong and vwapInput)


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

Lebih lanjut