JBravo Strategi Tren Kuantitatif

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

Tinjauan Strategi

JBravo Quantitative Trend Strategy adalah strategi trend-mengikuti berdasarkan moving average. Ini menggunakan rata-rata bergerak sederhana 9 hari, rata-rata bergerak eksponensial 20 hari, dan rata-rata bergerak sederhana 180 hari untuk menentukan arah tren pasar, serta sinyal beli dan jual akhir.

Nama strategi ini terinspirasi oleh karakter kartun Johnny Bravo, yang mewakili keputusan perdagangan yang percaya diri dan tegas.

Prinsip Strategi

Sinyal beli dihasilkan ketika harga penutupan melintasi di atas rata-rata bergerak sederhana 9 hari; Sinyal jual dihasilkan ketika harga penutupan melintasi di bawah rata-rata bergerak eksponensial 20 hari.

Jika rata-rata bergerak 9 hari, 20 hari dan 180 hari semuanya bergerak ke atas, dan rata-rata bergerak 9 hari berada di atas rata-rata bergerak 20 hari, rata-rata bergerak 20 hari berada di atas rata-rata bergerak 180 hari, sinyal beli yang kuat dihasilkan.

Jika rata-rata bergerak 9 hari, 20 hari dan 180 hari semuanya bergerak ke bawah, dan rata-rata bergerak 9 hari berada di bawah rata-rata bergerak 20 hari, rata-rata bergerak 20 hari berada di bawah rata-rata bergerak 180 hari, sinyal jual yang kuat dihasilkan.

Ketika garis Volume Weighted Average Price melintasi rata-rata bergerak eksponensial 20 hari ke atas, sinyal GoGo Long dihasilkan; Ketika garis Volume Weighted Average Price melintasi rata-rata bergerak eksponensial 20 hari ke bawah, sinyal GoGo Short dihasilkan.

Analisis Keuntungan

Strategi ini menggabungkan ide-ide strategi trend following dan breakout. moving average dapat dengan jelas menentukan arah tren pasar dan mengurangi probabilitas perdagangan yang salah. pada saat yang sama, secara fleksibel menggunakan indikator VWAP untuk menentukan waktu masuk, mengendalikan risiko sambil mendukung terobosan di pasar.

Dibandingkan dengan menggunakan rata-rata bergerak saja, strategi ini menambahkan mekanisme masuk agresif GoGo Juice, yang dapat memperoleh pengembalian yang lebih tinggi dalam tren yang kuat.

Secara keseluruhan, strategi ini memiliki pengeluaran kecil dan profitabilitas yang stabil.

Analisis Risiko

Meskipun strategi ini meningkatkan kekuatan entri, titik stop loss dapat sering dipicu di pasar sampingan. Selain itu, moving average sendiri memiliki inersia yang tinggi dan tidak dapat mengikuti perubahan harga dalam waktu.

Ini berarti bahwa strategi dapat menghasilkan sejumlah perdagangan virtual yang tidak benar-benar mencerminkan pergerakan harga pasar.

Untuk mengurangi risiko, kita dapat menyesuaikan siklus moving average sesuai; atau menambahkan modul stop loss untuk menghentikan kerugian ketika kerugian mencapai tingkat tertentu.

Arahan Optimasi

Strategi dapat dioptimalkan dalam arah berikut:

  1. Sesuaikan parameter rata-rata bergerak dan mengoptimalkan parameter siklus untuk menemukan kombinasi parameter optimal

  2. Tambahkan indikator volume untuk menghindari sinyal palsu pada saat fluktuasi harga yang keras

  3. Tingkatkan modul stop loss dan atur aturan keluar untuk mengendalikan kerugian per perdagangan

  4. Menggabungkan pilihan sektor panas pasar untuk membuat strategi lebih ditargetkan

  5. Optimalkan proporsi posisi pembukaan, optimalkan skala yang berbeda untuk parameter yang berbeda

Kesimpulan

JBravo Quantitative Trend Strategy mengintegrasikan analisis rata-rata bergerak dan penilaian tren VWAP. Strategi ini mengejar keuntungan jangka panjang yang stabil sambil memiliki beberapa mekanisme perdagangan yang agresif. Strategi ini cocok untuk kepemilikan jangka menengah-panjang, dengan risiko menengah-tinggi dan pengembalian 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 banyak