Strategi Hedging Trend Surfing Berdasarkan Indikator TSI dan HMACCI

Penulis:ChaoZhang, Tanggal: 2024-01-23 11:26:14
Tag:

img

Gambaran umum

Strategi ini menggabungkan sinyal perdagangan bilateral dari TSI dan indikator CCI yang ditingkatkan, dan mengadopsi pendekatan lindung nilai untuk posisi yang sering dibuka dan ditutup, bertujuan untuk mengejar keuntungan berkelanjutan yang lebih stabil. Logika utama adalah salib emas dan salib mati dari rata-rata bergerak cepat dan lambat dari indikator TSI, dikombinasikan dengan sinyal beli dan jual dari indikator HMACCI untuk menentukan arah pasar. Risiko dikendalikan dengan membatasi kondisi pembukaan, sementara logika stop loss dan take profit ditetapkan.

Prinsip Strategi

Strategi ini terutama didasarkan pada kombinasi indikator TSI dan HMACCI.

Indikator TSI berisi rata-rata bergerak cepat dan lambat untuk menentukan sinyal perdagangan. Ketika garis cepat menembus garis lambat ke atas, itu adalah sinyal beli, dan sebaliknya untuk sinyal jual. Ini dapat menangkap perubahan tren pasar dengan lebih sensitif.

Indikator HMACCI didasarkan pada indikator CCI tradisional yang menggunakan Hull Moving Average bukan harga itu sendiri, yang dapat menyaring beberapa kebisingan dan menilai zona overbought dan oversold.

Logika utama dari strategi ini adalah untuk menggabungkan penilaian dari kedua indikator ini dan menetapkan kondisi tambahan tertentu untuk menyaring sinyal palsu, seperti memeriksa harga penutupan bar sebelumnya dan harga maksimum dan minimum selama beberapa periode untuk mengontrol kualitas sinyal pembalikan.

Untuk posisi pembukaan, jika kondisi terpenuhi, pesanan pasar ditempatkan setiap kali bar ditutup, pergi baik panjang dan pendek.

Untuk mengambil keuntungan dan stop loss, stop loss yang mengambang dan menutup semua order saat mencapai target profit ditetapkan.

Keuntungan dari Strategi

Ini adalah strategi lindung nilai frekuensi tinggi yang relatif stabil dan dapat diandalkan.

  1. Kombinasi indikator ganda dapat secara efektif menghindari sinyal palsu
  2. Operasi lindung nilai sering setiap bar mengarah pada fluktuasi laba rugi yang lebih stabil
  3. Logika pembukaan yang ketat dan kondisi stop loss dapat mengendalikan risiko
  4. Menggabungkan penilaian tren dan pembalikan mengarah pada toleransi kesalahan yang lebih tinggi
  5. Tidak ada bias arah, cocok untuk berbagai kondisi pasar
  6. Ruang parameter yang dapat disesuaikan yang besar, dapat dioptimalkan untuk produk yang berbeda

Analisis Risiko

Risiko utama yang harus diperhatikan adalah:

  1. Lebih banyak kerugian biaya yang disebabkan oleh perdagangan frekuensi tinggi
  2. Kemungkinan untuk sepenuhnya menghindari terkunci di pagar
  3. Entry terlalu agresif jika parameter tidak diatur dengan benar
  4. Kesulitan untuk menahan kerugian besar satu arah dalam jangka pendek

Risiko dapat dikurangi dengan:

  1. Sesuaikan frekuensi pembukaan dengan tepat untuk mengurangi dampak biaya
  2. Mengoptimalkan parameter indikator untuk memastikan kualitas sinyal
  3. Meningkatkan amplitudo stop loss tetapi mengalami lebih banyak kerugian lindung nilai
  4. Parameter pengujian pada produk yang berbeda

Arahan Optimasi

Masih banyak ruang untuk mengoptimalkan strategi ini, terutama:

  1. Mengoptimalkan parameter seperti periode, panjang dll melalui pengujian
  2. Mencoba kombinasi indikator yang berbeda misalnya MACD, BOLL dll.
  3. Mengubah logika pembukaan, mengatur filter yang lebih ketat
  4. Mengoptimalkan strategi mengambil keuntungan dan stop loss misalnya, stop breakout
  5. Menggunakan metode pembelajaran mesin untuk menemukan rentang parameter yang lebih stabil
  6. Pengujian pada produk perdagangan yang berbeda dan kerangka waktu
  7. Menggabungkan deteksi tren untuk menghindari perdagangan yang terlalu agresif di pasar yang terikat rentang

Kesimpulan

Secara keseluruhan, strategi ini adalah strategi lindung nilai yang stabil dan dapat diandalkan dengan toleransi kesalahan yang tinggi. Ini menggabungkan indikator tren dan pembalikan, memperoleh pengembalian yang stabil melalui perdagangan dua arah yang sering. Juga, strategi itu sendiri memiliki potensi yang kuat untuk optimasi, dan merupakan ide perdagangan frekuensi tinggi yang berharga untuk penelitian lebih lanjut.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the suns bipolarity
//©SeaSide420
//@version=4
strategy(title="TSI HMA CCI", default_qty_type=strategy.cash,default_qty_value=1000,commission_type=strategy.commission.percent,commission_value=0.001)
long = input(title="TSI Long Length", type=input.integer, defval=25)
short = input(title="TSI Short Length", type=input.integer, defval=25)
signal = input(title="TSI Signal Length", type=input.integer, defval=13)
length = input(33, minval=1, title="HMACCI Length")
src = input(open, title="Price Source")
ld = input(50, minval=1, title="Line Distance")
CandlesBack = input(8,minval=1,title="Candles Look Back")
StopLoss= input(3000,minval=1, title="Stop Loss")
TargetProfitAll= input(3000,minval=1, title="Target Profit Close All")
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2020)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
ul = (ld)
ll = (ld-ld*2)
ma = hma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)*10
tsi_value2=ema(tsi_value/10, signal)*10
cc = color.white
ct = color.new(color.gray, 90)
if cci<ll or cci[1]<ll
    cc:=color.red
if cci>ul or cci[1]>ul
    cc:=color.green
if cci<ul and cci>ll
    cc:=color.new(color.yellow, 90)
ccc = color.white
if cci>ul
    ccc:=color.green
if cci<cci[1] and cci<ul and cci>ll
    ccc:=color.red
if cci<ll
    ccc:=color.red
if cci>cci[1] and cci>ll and cci<ul
    ccc:=color.green
tsiplot= plot(tsi_value, color=color.lime)
tsiplot2=plot(tsi_value2, color=color.red)    
colorchange2 =tsi_value>tsi_value2?color.lime:color.orange
fill(tsiplot, tsiplot2, color=colorchange2, title="TSIBackground", transp=50)
band1 = hline(ul, "Upper Band 1", color=ct, linestyle=hline.style_dashed)
band0 = hline(ll, "Lower Band 1", color=ct, linestyle=hline.style_dashed)
fill(band1, band0, color=cc, title="MidBandBackground", transp=0)
band2 = hline(ul, "Upper Band 2", color=ct, linestyle=hline.style_dashed)
band3 = hline(ll, "Lower Band 2", color=ct, linestyle=hline.style_dashed)
cciplot2 = plot(cci, "CCIvHMA 2", color=color.black, transp=0, linewidth=5)
cciplot = plot(cci, "CCIvHMA", color=ccc, transp=0, linewidth=3)
hline(0, title="Zero")
hline(420, title="420")
hline(-420, title="-420")
fill(cciplot, cciplot2, color=ccc, title="CCIBackground", transp=0)
LongCondition=cci>cci[1] and cci>ll and src>src[CandlesBack] and tsi_value>tsi_value2
ShortCondition=cci<cci[1] and cci<ul and src<src[CandlesBack] and tsi_value<tsi_value2
plotshape(LongCondition, title="BUY", style=shape.circle, location=location.top, color=color.green)
plotshape(ShortCondition, title="SELL", style=shape.circle, location=location.top, color=color.red)
if  strategy.openprofit>TargetProfitAll
    strategy.close_all(when=window(),comment="close all profit target")
if LongCondition and strategy.openprofit>-1
    strategy.order("BUY", strategy.long,when=window())
if ShortCondition and strategy.openprofit>-1
    strategy.order("SELL", strategy.short,when=window())
strategy.exit("SL exit a sell", "SELL", loss = StopLoss,when=window())     
strategy.exit("SL exit a buy", "BUY", loss = StopLoss,when=window()) 

Lebih banyak