ORIGINAL PRIMITIVE TREND TRACKING STRATEGI berdasarkan purata bergerak

Penulis:ChaoZhang, Tarikh: 2023-11-23 15:54:37
Tag:

img

Ringkasan

Strategi ini adalah berdasarkan badan lilin, digabungkan dengan penunjuk EMA untuk menilai arah trend pasaran, untuk mencapai kesan TRACKING TREND PRIMITIVE ORIGINAL.

Prinsip Strategi

  1. Mengira purata panjang badan badan 30 terakhir lilin K-garis
  2. Apabila K-garis terbaru adalah garis yang dan panjang badan adalah lebih besar daripada sbody/2, pergi panjang
  3. Apabila sudah lama, jika K-garis terbaru adalah garis yin, panjang badan lebih besar daripada sbody/2, dan kedudukan semasa adalah menguntungkan, kemudian menutup kedudukan panjang
  4. Apabila K-garis terbaru adalah garis yin dan panjang badan adalah lebih besar daripada sbody/2, pergi pendek
  5. Apabila sudah pendek, jika K-garis terkini adalah garis yang, panjang badan lebih besar daripada sbody/2, dan kedudukan semasa adalah menguntungkan, kemudian menutup kedudukan pendek

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Asli dan mudah, mudah difahami dan dilaksanakan
  2. Berdasarkan penghakiman struktur lilin, mempunyai beberapa kesan pada menangkap breakouts
  3. Mengesan trend, boleh menangkap pergerakan yang lebih besar
  4. Hentikan kerugian dengan cepat apabila menguntungkan, membantu mengunci keuntungan

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Tidak dapat menyaring secara berkesan pecah palsu, boleh menyebabkan kerugian yang tidak perlu
  2. Menghakimi hanya dengan lilin adalah mudah terdedah kepada slippage dan jurang pengaruh
  3. Tidak mempertimbangkan masalah kekerapan dagangan yang berlebihan

Risiko boleh dikurangkan dengan:

  1. Gabungkan dengan penunjuk lain untuk menapis isyarat
  2. Tetapkan strategi stop loss
  3. Mengoptimumkan parameter untuk mengawal kekerapan perdagangan

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Tambah penunjuk pecah untuk menapis pecah palsu
  2. Tambah strategi stop loss untuk mengurangkan kerugian tunggal
  3. Menggabungkan penunjuk trend untuk mengesahkan arah trend
  4. Pengoptimuman parameter untuk mencari kombinasi parameter terbaik

Ringkasan

Strategi ini tergolong dalam strategi pengesanan trend asal yang mudah. Dengan menilai struktur lilin, ia dapat dengan berkesan mengesan arah trend. Pada masa yang sama, menetapkan mekanisme stop loss yang cepat dapat mengunci keuntungan. Strategi ini dapat melengkapkan portfolio pengesanan trend, tetapi masih perlu dioptimumkan untuk mengurangkan risiko. Adalah bernilai meneliti lebih lanjut kesan menggabungkan dengan penunjuk lain pada masa akan datang.


/*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 lanjut