Strategi timbang tara dua hala berdasarkan petunjuk TSI dan HMACCI


Tarikh penciptaan: 2024-01-23 11:26:14 Akhirnya diubah suai: 2024-01-23 11:26:14
Salin: 0 Bilangan klik: 575
1
fokus pada
1617
Pengikut

Strategi timbang tara dua hala berdasarkan petunjuk TSI dan HMACCI

Gambaran keseluruhan

Strategi ini menggabungkan isyarat perdagangan dua hala dari TSI dan CCI yang diperbaharui, dengan menggunakan cara leasing untuk membuka kedudukan yang lebih kerap, dengan tujuan untuk mendapatkan keuntungan yang lebih stabil. Logik utama adalah garpu emas dan garpu mati garis rata-rata yang cepat dan perlahan dari TSI, yang digabungkan dengan garis isyarat kosong dari HMACCI untuk menentukan arah jual beli pasaran.

Prinsip Strategi

Strategi ini berdasarkan kepada gabungan dua penunjuk TSI dan HMACCI.

Tanda TSI mengandungi satu garis rata-rata cepat dan satu garis rata-rata perlahan untuk menentukan isyarat beli dan jual. Apabila garis cepat menembusi garis perlahan dari bawah ke atas, ia adalah isyarat beli, sebaliknya isyarat jual. Ini dapat menangkap perubahan trend pasaran dengan lebih sensitif.

Indikator HMACCI menggunakan purata bergerak Hull sebagai pengganti harga sendiri, berdasarkan indikator CCI tradisional, yang dapat memadamkan sebahagian daripada kebisingan, untuk menilai kawasan overbought dan oversold. Kawasan overbought dan oversold dapat mengesahkan semula arah isyarat TSI.

Logik utama strategi adalah menggabungkan keputusan kedua-dua indikator ini dan menetapkan syarat tambahan untuk menyaring isyarat yang salah, seperti harga penutupan garis K dan harga tertinggi dan terendah sebelum beberapa kitaran, untuk mengawal kualiti isyarat pembalikan.

Dalam pembukaan kedudukan, jika syarat-syarat dipenuhi, setiap kali garis K ditutup, kedudukan dibuka pada harga pasaran, dan dibuat lebih banyak kosong. Dengan cara ini, anda boleh mendapatkan keuntungan yang lebih stabil, tetapi anda perlu menanggung risiko lebihan.

Di bahagian stop loss, terdapat floating stop loss dan profit placement sepenuhnya. Ini dapat mengawal risiko perdagangan unilateral dengan baik.

Kelebihan Strategik

Ini adalah strategi arbitraj frekuensi tinggi yang lebih stabil dan boleh dipercayai.

  1. Kombinasi dua indikator yang berkesan untuk mengelakkan isyarat salah
  2. Setiap baris K membuka kedudukan, sering melakukan operasi penarikan, keuntungan dan kerugian lebih lancar
  3. Logik pembukaan dan syarat hentian yang ketat untuk mengawal risiko
  4. Perbezaan antara kecenderungan dan pertimbangan yang terbalik menyebabkan kesalahan yang lebih tinggi.
  5. Keutamaan tanpa arah, sesuai untuk pelbagai keadaan pasaran
  6. Parameter boleh disesuaikan dengan saiz ruang dan boleh dioptimumkan untuk pelbagai jenis

Analisis risiko

Risiko utama yang perlu diperhatikan ialah:

  1. Lebih banyak perbelanjaan yang dikenakan untuk transaksi frekuensi tinggi
  2. Kemungkinan untuk mengelakkan diri daripada terjerumus dalam penipuan
  3. Tetapan parameter yang tidak betul boleh menyebabkan terlalu masuk ke dalam bidang
  4. Kemungkinan kerugian unilateral yang besar dalam jangka pendek

Anda boleh mengurangkan risiko dengan:

  1. Sesuai menyesuaikan frekuensi pembukaan gudang untuk mengurangkan kesan caj.
  2. Optimumkan parameter penunjuk untuk memastikan kualiti isyarat
  3. Meningkatkan margin stop loss, tetapi menanggung lebih banyak kerugian
  4. Uji tetapan parameter pelbagai varieti

Arah pengoptimuman

Strategi ini masih mempunyai ruang untuk pengoptimuman yang besar, dan ia bertumpu kepada:

  1. Optimumkan dan uji parameter seperti kitaran, panjang dan sebagainya
  2. Cuba kombinasi yang berbeza seperti MACD, BOLL dan sebagainya
  3. Ubah logik pembukaan untuk menetapkan syarat penapisan yang lebih ketat
  4. Mengoptimumkan strategi hentian hentian, mencapai hentian dinamik dan terobosan
  5. Cuba kaedah pembelajaran mesin untuk mencari parameter yang lebih stabil
  6. Ujian untuk varieti dan tempoh perdagangan
  7. Meneroka trend, mengelakkan pergerakan yang terlalu radikal

ringkaskan

Strategi ini secara keseluruhan adalah strategi arbitraj dua hala yang stabil, boleh dipercayai, dan mempunyai kadar kesilapan yang tinggi. Ia menggabungkan penilaian trend dan penunjuk pembalikan, memperoleh keuntungan yang stabil melalui pembukaan kedudukan dua hala yang kerap.

Kod sumber strategi
/*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())