Strategi Beyond The Clouds

Penulis:ChaoZhang, Tanggal: 2023-11-03 16:10:33
Tag:

img

Gambaran umum

Strategi ini menggunakan indikator Super Trend untuk membantu dalam menempatkan order, dan filter oleh lapisan awan dan warna candlestick untuk menempatkan limit order untuk meningkatkan profitabilitas.

Logika Strategi

  1. Menghitung rata-rata harga tertinggi dan terendah dalam periode ATR sebagai garis dasar.

  2. Hitung band atas dan bawah berdasarkan faktor pengganda.

  3. Ketika dekat berada di atas band atas, tanda sebagai 1; di bawah band bawah, tanda sebagai -1. Jika tidak, mempertahankan keadaan sebelumnya.

  4. Secara dinamis menyesuaikan garis stop loss berdasarkan posisi harga penutupan relatif terhadap band atas/bawah.

  5. Menghitung rentang lapisan awan berdasarkan persentase interval band atas/bawah tertentu.

  6. Untuk panjang, perlu tutup < terbuka ketika Super Trend adalah 1.

  7. Tempatkan limit buy order pada harga penutupan bar sebelumnya untuk long.

  8. Filter dengan rentang waktu, tutup semua posisi yang tersedia.

Analisis Keuntungan

Strategi ini menggabungkan konsep Super Trend dan cloud, yang memungkinkan penangkapan tren cepat setelah tren dimulai. Stop loss Super Trend merespons lebih cepat daripada stop loss bergerak normal. Lapisan awan menghindari kerugian dari breakout palsu. Limit order mengurangi slippage dan meningkatkan profitabilitas. Keuntungan utama adalah:

  1. Super Trend sangat sensitif dan melacak tren dengan kuat.

  2. Filter lapisan awan mengurangi kerugian dari kebocoran palsu.

  3. Warna candlestick membantu menghindari pembalikan.

  4. Limit order mengurangi dampak slippage dan meningkatkan tingkat kemenangan.

  5. Jangka waktu dan manajemen posisi yang dapat disesuaikan sesuai dengan kebutuhan perdagangan yang berbeda.

Analisis Risiko

Ada juga beberapa risiko yang perlu dicatat:

  1. Parameter Super Trend yang tidak tepat dapat menyebabkan terlalu banyak sensitivitas dan whipsaws.

  2. Jangkauan awan yang berlebihan dapat menyaring sinyal breakout yang valid, yang berdampak pada profitabilitas.

  3. Orde batas mungkin tidak diisi selama volatilitas tinggi, kesempatan yang hilang.

  4. Tidak ada stop loss dapat sepenuhnya menghindari risiko sistemik dan kerugian besar.

  5. Ukuran posisi yang lebih besar juga memperkuat kerugian.

Arahan Optimasi

Strategi ini dapat ditingkatkan dalam hal berikut:

  1. Uji pasar dan instrumen yang berbeda untuk parameter Super Trend yang optimal.

  2. Mengatur secara dinamis tingkat stop loss berdasarkan volatilitas pasar.

  3. Optimalkan jangkauan awan untuk menyeimbangkan penyaringan kebisingan dan retensi sinyal.

  4. Tambahkan modul ukuran posisi ke posisi ukuran dinamis berdasarkan kondisi pasar.

  5. Menggunakan set parameter yang berbeda untuk sesi perdagangan yang berbeda untuk beradaptasi dengan ritme pasar.

  6. Efektivitas uji jika dikombinasikan dengan indikator lain.

Kesimpulan

Pada akhirnya, strategi ini memiliki logika yang jelas dan keuntungan yang jelas dalam menangkap tren. Tetapi tidak ada strategi yang dapat sepenuhnya menghindari risiko sistemik. Perlu mengendalikan ukuran posisi, terus mengoptimalkan untuk meminimalkan risiko dalam perdagangan langsung, dan memaksimalkan tepi. Strategi ini memiliki potensi besar untuk pengujian lebih lanjut dan peningkatan untuk beradaptasi dengan dinamika pasar yang berkembang.


/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's SuperTrend Strategy v2.0 Limit", shorttitle = "STL str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR")
Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100)
ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100)
centr = input(true, defval = true, title = "need center of ATR?")
border = input(false, defval = false, title = "need border?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Super Trend ATR 1
src = close
Up=hl2-(Factor*atr(ATR))
Dn=hl2+(Factor*atr(ATR))
TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up
TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn
Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1)
Tsl1 = Trend==1? TUp: TDown
Tsl2 = Trend==1? TDown: TUp
limit = (Tsl1 - Tsl2) / 100 * cloud
upcloud = Tsl1 - limit
dncloud = Tsl2 + limit

//Cloud
linecolor = Trend == 1 ? green : red
centercolor = centr == true ? blue : na
cloudcolor = Trend == 1 ? green : red
cline = (Tsl1 + Tsl2) / 2
P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1")
P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2")
P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center")
P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1")
P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1")
fill(P1, P4, color = linecolor == red ? red : lime, transp = 50)
fill(P2, P5, color = linecolor == red ? red : lime, transp = 50)

//Signals
up = 0.0
dn = 0.0
up := Trend != 1 ? 0 : Trend == 1 and close < open ? close : up[1]
dn := Trend != -1 ? close * 1000 : Trend == -1 and close > open ? close : dn[1]

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if true
    strategy.entry("Long", strategy.long, needlong ? lot : 0, limit = up, when = (Trend == 1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, needshort ? lot : 0, limit = dn, when = (Trend == -1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Lebih banyak