ORIGINAL PRIMITIVE TREND TRACKING STRATEGY DIDASARKAN pada rata-rata bergerak

Penulis:ChaoZhang, Tanggal: 2023-11-23
Tag:

img

Gambaran umum

Strategi ini didasarkan pada tubuh lilin, dikombinasikan dengan indikator EMA untuk menilai arah tren pasar, untuk mencapai efek TRACKING TREND PRIMITIVE ORIGINAL.

Prinsip Strategi

  1. Hitung rata-rata panjang tubuh sbody dari 30 terakhir K-line lilin
  2. Ketika garis K terbaru adalah garis yang dan panjang tubuh lebih besar dari sbody/2, pergi panjang
  3. Ketika sudah panjang, jika garis K terbaru adalah garis yin, panjang tubuh lebih besar dari sbody/2, dan posisi saat ini menguntungkan, maka tutup posisi panjang
  4. Ketika garis K terbaru adalah garis yin dan panjang tubuh lebih besar dari sbody/2, pergi pendek
  5. Ketika sudah pendek, jika garis K terbaru adalah garis yang, panjang tubuh lebih besar dari sbody/2, dan posisi saat ini menguntungkan, maka tutup posisi pendek

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Asli dan sederhana, mudah dimengerti dan diterapkan
  2. Berdasarkan penilaian struktur lilin, memiliki beberapa efek pada menangkap breakouts
  3. Pelacakan tren, dapat menangkap gerakan yang lebih besar
  4. Cepat menghentikan kerugian ketika menguntungkan, membantu mengunci keuntungan

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Tidak dapat menyaring secara efektif kebocoran palsu, dapat menyebabkan kerugian yang tidak perlu
  2. Menghakimi hanya dengan lilin rentan terhadap slippage dan pengaruh celah
  3. Tidak mempertimbangkan masalah frekuensi perdagangan yang berlebihan

Risiko dapat dikurangi dengan:

  1. Gabungkan dengan indikator lain untuk menyaring sinyal
  2. Tetapkan strategi stop loss
  3. Mengoptimalkan parameter untuk mengontrol frekuensi perdagangan

Arahan Optimasi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Tambahkan indikator breakout untuk menyaring breakout palsu
  2. Tambahkan strategi stop loss untuk mengurangi kerugian tunggal
  3. Menggabungkan indikator tren untuk memverifikasi arah tren
  4. Optimasi parameter untuk menemukan kombinasi parameter terbaik

Ringkasan

Strategi ini termasuk dalam strategi pelacakan tren sederhana asli. Dengan menilai struktur lilin, ia dapat secara efektif melacak arah tren. Pada saat yang sama, pengaturan mekanisme stop loss cepat dapat mengunci keuntungan. Strategi ini dapat melengkapi portofolio pelacakan tren, tetapi masih perlu dioptimalkan untuk mengurangi risiko. Perlu diteliti lebih lanjut efek dari kombinasi dengan indikator lain di masa depan.


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

//@version=3
strategy(title = "Noro's Primitive Strategy v1.0", shorttitle = "Primitive str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usebody = input(true, defval = true, title = "Use body")
useus = input(true, defval = true, title = "Use UUP")
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(01, defval = 01, 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")

//Logic
body = abs(close - open)
sbody = ema(body, 30) / 2
bar = close > open ? 1 : close < open ? -1 : 0

//Signals
up = bar == -1 and (body > sbody or usebody == false) and (close < strategy.position_avg_price or strategy.position_size <= 0 or useus == false)
dn = bar == 1 and (body > sbody or usebody == false) and (close > strategy.position_avg_price or strategy.position_size >= 0 or useus == false)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00)
    strategy.close_all()

Lebih banyak