Trend Mengikuti Strategi Beli dan Jual


Tarikh penciptaan: 2023-10-17 12:59:59 Akhirnya diubah suai: 2023-10-17 12:59:59
Salin: 0 Bilangan klik: 633
1
fokus pada
1621
Pengikut

Trend Mengikuti Strategi Beli dan Jual

Gambaran keseluruhan

Strategi membeli dan menjual trend adalah strategi perdagangan dalam masa sehari yang mengikuti trend. Gagasan asas strategi ini adalah untuk menentukan arah trend berdasarkan purata bergerak, membeli dan menjual dalam pergerakan trend.

Prinsip Strategi

Strategi ini menggunakan purata bergerak sederhana (SMA) untuk menentukan arah trend. Dalam trend menaik, apabila garis K muncul pada titik rendah, strategi ini akan melakukan lebih banyak apabila melanggar titik tertinggi garis K sebelumnya; dalam trend menurun, apabila garis K muncul pada titik tinggi, strategi ini akan melakukan kosong apabila melanggar titik terendah garis K sebelumnya.

Strategi ini juga menggunakan indikator Blanchflower %K dan %D untuk menilai trend. Ia melakukan perdagangan berlawanan arah ketika%K melintasi%D. Selain itu, strategi ini juga menggunakan MACD dan kurva isyarat sebagai syarat penapisan dan hanya melakukan perdagangan jika MACD dan isyarat sesuai dengan arah trend.

Strategi ini boleh dilakukan hanya dengan banyak, hanya dengan kosong atau dengan banyak kosong pada masa yang sama. Tarikh permulaan boleh ditetapkan pada bulan dan tahun permulaan pengukuran semula. Semua parameter seperti kitaran purata bergerak, kitaran K, kitaran D, parameter MACD dan sebagainya boleh disesuaikan.

Analisis kelebihan

  • Menggunakan purata bergerak untuk menentukan arah trend boleh menyaring goyah dan mengelakkan perdagangan yang salah
  • Penggunaan indikator Blanchflower dapat menentukan perubahan trend tepat pada masanya untuk mengawal risiko
  • Penapisan MACD dan isyarat mengurangkan perdagangan bunyi yang tidak sesuai dengan arah trend
  • Parameter yang boleh disesuaikan untuk menyesuaikan diri dengan tingkah laku harga yang berbeza
  • Hanya boleh melakukan lebih banyak, hanya boleh melakukan perdagangan kosong atau dua hala, boleh menyesuaikan diri dengan keadaan pasaran

Analisis risiko

Strategi ini mempunyai risiko utama:

  • Risiko kerugian besar yang disebabkan oleh penembusan besar rata-rata bergerak. Anda boleh meningkatkan jangka masa rata-rata bergerak dengan sewajarnya untuk mengurangkan risiko.
  • Perdagangan yang kerap dalam trend goyah menyebabkan overtrading. Anda boleh meningkatkan kitaran% K untuk mengurangkan frekuensi perdagangan.
  • Penetapan parameter MACD dan Signal yang tidak betul menyebabkan penapisan tidak berkesan. Parameter harus dioptimumkan mengikut jenis tertentu.
  • Kedudukan kosong berlebihan yang terkumpul menyebabkan kerugian besar semasa perdagangan dua hala. Saiz kedudukan harus dibatasi.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  • Mengoptimumkan kitaran purata bergerak, memfilterkan getaran sebaik mungkin sambil mengekalkan penghakiman trend
  • Optimumkan parameter% K,% D, mengurangkan whipsaw sambil mengekalkan pembalikan trend tangkapan
  • Mengoptimumkan parameter MACD untuk penapisan yang lebih baik dan mengurangkan transaksi bising
  • Menambah kawalan kedudukan, seperti jumlah tetap untuk membuka kedudukan, kedudukan terapung dan sebagainya
  • Menambah strategi penutupan kerugian, seperti penutupan bergerak, penutupan masa, penutupan ATR

ringkaskan

Strategi trend-tracking membeli-belah strategi keseluruhan idea yang jelas dan mudah, dengan bergerak rata-rata untuk menentukan arah trend, dan menggunakan penapis penunjuk untuk mengunci peluang perdagangan dalam trend. Strategi ini boleh mendapat kesan yang baik melalui parameter pengoptimuman, tetapi masih memerlukan gabungan kod kemasan untuk mengurangkan risiko pengoptimuman dan meningkatkan kestabilan.

Kod sumber strategi
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)

// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)

//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal

if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)//	if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
    if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
		strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
    if (k < k[1])
		strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")

if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
    if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
		strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
    if (k > k[1])
		strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)