Strategi Pengesanan Momentum Berdasarkan Integrasi Penunjuk

Penulis:ChaoZhang, Tarikh: 2023-10-17 15:26:49
Tag:

img

Ringkasan

Strategi ini berdasarkan pengintegran penunjuk tersuai untuk menentukan arah trend harga dengan mengumpul jumlah jarak antara harga dan purata bergerak, dan dengan itu mengesan trend.

Logika Strategi

Strategi ini menggunakan penunjuk tersuai untuk mengintegrasikan jarak antara harga dan purata bergerak, dilaksanakan seperti berikut:

  1. Mengira jarak antara harga dan purata bergerak mudah 200-periode k=close-sma ((close,200)

  2. Menentukan tempoh integrasi s = 29, mengumpul jumlah k selama s terakhir tempoh: jumlah = 0, untuk i = 0 untuk s, jumlah := jumlah + k[i]

  3. Apabila jumlah>0, isyarat panjang dihasilkan. Apabila jumlah <0, isyarat pendek dihasilkan.

  4. Apabila kedudukan panjang dibuka, jika jumlah <0, tutup kedudukan panjang. Apabila kedudukan pendek dibuka, jika jumlah>0, tutup kedudukan pendek.

Strategi ini menilai arah trend keseluruhan dengan mengesan sama ada jumlah jarak yang terkumpul antara harga dan purata bergerak adalah positif atau negatif. Apabila integral positif, ia menunjukkan trend menaik dan kedudukan panjang harus dipegang. Apabila integral negatif, ia menunjukkan trend menurun dan kedudukan pendek harus dipegang.

Kelebihan

  1. Integrator penunjuk tersuai dapat menentukan arah trend harga dengan berkesan.

  2. Konsep integrasi mengumpul jarak antara harga dan MA, meningkatkan ketepatan penentuan trend.

  3. Logik yang agak mudah, mudah difahami dan dioptimumkan.

  4. Penyesuaian tempoh integrasi yang fleksibel untuk mengoptimumkan kepekaan.

  5. Hasil backtest yang baik, keuntungan yang stabil, boleh digunakan dalam perdagangan langsung.

Risiko

  1. Tetapan tempoh integrasi yang tidak betul boleh menyebabkan tindak balas yang tidak sensitif dan terlepas titik perubahan trend.

  2. Tetapan panjang MA yang tidak betul boleh menyebabkan penilaian yang salah terhadap trend.

  3. Kejadian besar tiba-tiba boleh menyebabkan isyarat yang salah.

  4. Pemilihan simbol yang tidak betul, simbol yang sangat mudah berubah boleh merosot keberkesanan.

Penyelesaian yang sepadan:

  1. Mengoptimumkan tempoh integrasi untuk kepekaan yang lebih baik.

  2. Uji panjang MA yang berbeza untuk mencari yang optimum untuk penentuan trend.

  3. Tutup strategi sebelum peristiwa besar untuk mengelakkan kesilapan dari perubahan harga yang besar.

  4. Pilih simbol volatiliti rendah untuk prestasi yang lebih baik.

Arahan Penambahbaikan

  1. Pertimbangkan untuk menambah penunjuk lain seperti RSI untuk penentuan komprehensif.

  2. Hasil integrasi penyelidikan menggunakan pelbagai jenis MA.

  3. Cuba mengoptimumkan tempoh integrasi automatik untuk simbol yang berbeza.

  4. Tambah penunjuk jumlah untuk mengelakkan kesilapan semasa turun naik harga yang besar.

  5. Gunakan pembelajaran mesin untuk mengoptimumkan parameter untuk ketahanan.

Kesimpulan

Strategi ini menilai arah trend menggunakan pengintegrat penunjuk tersuai dengan mengumpulkan jarak antara harga dan MA. Logiknya mudah dan jelas, dan hasil backtest baik. Ia boleh ditingkatkan dengan menyesuaikan parameter integrasi, menambah penunjuk tambahan, pengoptimuman automatik dll.


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Indicator Integrator Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)

l = input(defval=170,title="Length for indicator")
s = input(title="Length of summation",defval=29)
a= sma(close,l)
r=roc(close,l)
k=close-a
sum = 0
for i = 0 to s
    sum := sum + k[i]
plot(a,color=yellow,linewidth=2,transp=0)
//bc =  iff( sum > 0, white, teal)
//plot(sum,color=bc, transp=20, linewidth=3,style=columns)
//plot(sma(sum,3),color=white)
//hline(0)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = sum>0
exitlong = sum<0

shortCondition = sum<0
exitshort = sum>0

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Lebih lanjut