Strategi mengikut arah aliran asal berdasarkan purata bergerak


Tarikh penciptaan: 2023-11-23 15:54:37 Akhirnya diubah suai: 2023-11-23 15:54:37
Salin: 0 Bilangan klik: 581
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran asal berdasarkan purata bergerak

Gambaran keseluruhan

Strategi ini berdasarkan pada bahagian entiti candle, digabungkan dengan indikator EMA untuk menentukan arah trend pasaran, untuk mencapai kesan ORIGINAL PRIMITIVE TREND TRACKING. Apabila terdapat banyak cahaya matahari, buat lebih banyak dan apabila terdapat banyak cahaya, buat kosong, untuk mengikuti trend pasaran.

Prinsip Strategi

  1. Mengira purata panjang badan lilin bagi 30 baris terakhir K
  2. Apabila garis K terkini adalah garis yang, panjang entiti lebih besar daripada sbody / 2, lakukan lebih banyak
  3. Apabila ia telah dilakukan, jika garis K terkini adalah garis hitam, panjang entiti lebih besar daripada sbody / 2, dan kedudukan semasa adalah keadaan keuntungan, maka ia adalah kedudukan yang lebih rata
  4. Apabila garis K terkini adalah garis hitam, kosongkan apabila panjang entiti lebih besar daripada sbody / 2
  5. Apabila telah kosong, kedudukan kosong kosong jika garis K terkini adalah garis yangar, panjang entiti lebih besar daripada sbody/2, dan kedudukan semasa adalah keadaan yang menguntungkan

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Asal mudah, mudah difahami dan dilaksanakan
  2. Berdasarkan struktur candle, terdapat kesan tertentu terhadap penembusan Trading Breakouts
  3. Mengikuti Trend, Menangkap Perkembangan Besar
  4. Posisi untung selepas terhenti dengan cepat, menguntungkan untuk mengunci keuntungan

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Kegagalan untuk menyaring penembusan palsu yang boleh menyebabkan kerugian yang tidak perlu
  2. Penghakiman berdasarkan candle sahaja terdedah kepada kesan slippoint dan night flying
  3. Tidak mengambil kira frekuensi transaksi yang terlalu tinggi

Risiko boleh dikurangkan dengan:

  1. Gabungan dengan petunjuk lain untuk menapis isyarat
  2. Tetapkan strategi henti rugi
  3. Parameter pengoptimuman untuk mengawal frekuensi transaksi

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Meningkatkan penembusan, menapis penembusan palsu
  2. Meningkatkan strategi penangguhan kerugian dan mengurangkan kerugian tunggal
  3. Menggabungkan indikator trend, memeriksa arah trend
  4. Pengoptimuman parameter, mencari kombinasi parameter yang optimum

ringkaskan

Strategi ini merupakan strategi pengesanan trend yang mudah dan asli. Ia boleh mengesan arah trend dengan cara menilai struktur lilin. Ia juga boleh menetapkan mekanisme hentian cepat dan mengunci keuntungan.

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