Penjejakan Penembusan Harga Strategi Tinggi dan Rendah


Tarikh penciptaan: 2023-12-22 12:59:43 Akhirnya diubah suai: 2023-12-22 12:59:43
Salin: 1 Bilangan klik: 606
1
fokus pada
1623
Pengikut

Penjejakan Penembusan Harga Strategi Tinggi dan Rendah

Gambaran keseluruhan

Strategi penembusan tinggi rendah adalah strategi pengesanan trend yang menjejaki kenaikan atau penurunan harga sebelum melintasi garis K. Ia menggabungkan purata bergerak untuk menentukan arah trend, masuk ke dalam titik penembusan, dan kemudian menetapkan hentian kerugian atau mengesan hentian kerugian untuk mengunci keuntungan.

Prinsip Strategi

Strategi ini mengambil kira syarat-syarat berikut untuk membuat keputusan untuk membuka dan melonggarkan kedudukan:

  1. Usahakan garis K merah atau hijau untuk menentukan apakah garis K naik atau turun
  2. Menentukan sama ada garis K semasa menembusi titik tinggi atau rendah garis K sebelumnya
  3. Menggunakan purata bergerak cepat dan purata bergerak perlahan untuk menentukan arah trend
  4. Apabila garis K naik menembusi titik tertinggi garis K turun sebelumnya, buat lebih banyak; apabila garis K turun menembusi titik rendah garis K naik sebelumnya, buat kosong
  5. Syarat pegangan sejajar adalah hentikan kerugian atau mengesan pemicu hentikan kerugian; juga boleh ditetapkan untuk menghentikan kerugian dengan serta-merta jika terdapat garis K terbalik

Strategi ini digabungkan dengan penilaian baris K terbalik kedua untuk menyaring penembusan palsu dan memastikan kebolehpercayaan isyarat penembusan.

Analisis kelebihan

  • Strategi yang jelas dan mudah difahami
  • Gabungan purata bergerak berganda untuk memastikan trend besar yang betul
  • Membolehkan pelacak untuk mengunci lebih banyak keuntungan
  • Mekanisme K-Line Terbalik Membantu Mengelakkan Pergi Berjaya

Analisis risiko

  • Kegagalan menerobos boleh menyebabkan kerugian operasi ultra-pendek
  • Beranda “ Berita Semasa ” Terjadinya gegaran bumi
  • Rata-rata Bergerak Ganda Mungkin Terlewat, Membawa Kesilapan Pertimbangan

Langkah kawalan risiko:

  1. Memilih indeks atau indeks utama, mengelakkan risiko tinggi dalam saham
  2. Mengoptimumkan parameter purata bergerak untuk meningkatkan ketepatan penilaian
  3. Peningkatan markah stop loss yang sesuai untuk memastikan kawalan kerugian tunggal

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji kombinasi parameter purata bergerak yang berbeza
  2. Ujian penambahan penunjuk lain untuk penghakiman gabungan
  3. Parameter untuk mengoptimumkan kedudukan terbuka dan titik henti
  4. Meningkatkan peraturan penyaringan kuantitatif untuk memilih yang berkualiti
  5. Optimasi penyesuaian parameter yang digabungkan dengan algoritma pembelajaran mesin

ringkaskan

Breakout High Low Strategy adalah strategi pengesanan trend yang lebih matang secara keseluruhan, dengan penghakiman pembantu purata bergerak, anda boleh menangkap beberapa tahap trend, dan mekanisme hentian dan pengesanan hentian juga membantu mengunci keuntungan. Dengan ujian dan pengoptimuman yang berterusan, anda boleh membuat parameter dan kesan strategi ini lebih baik.

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

//@version=5
strategy("Broken High/Low Strategy", overlay=true, initial_capital = 5000, default_qty_value = 25, pyramiding = 10, default_qty_type= strategy.percent_of_equity)

useEMAForStop = input.bool(false, 'Use trail stop EMA', group = 'Exit strategy')
trailStopMALength = input(8, 'Trail stop EMA length', group = 'Exit strategy')

fastMALength = input(5 , 'Fast MA length', group = 'Trend strength')
fastEMAEnabled = input.bool(false, 'Fast EMA enabled (default is SMA)', group = 'Trend strength')

slowMALength = input(10, 'Slow MA length', group = 'Trend strength')
slowEMAEnabled = input.bool(false, 'Slow EMA enabled (default is SMA)', group = 'Trend strength')

ignoreSlowMA = input.bool(false, 'Use fast MA for trend ignoring slow MA', group = 'Trend strength')

useOpposingBarAsExit = input.bool(false, 'Using opposing bar as exit', group = 'Exit strategy')
secondEntryEnabled = input.bool(false, 'Second bar that eliminates opposing bar for entry', group = 'Trend strength')

longsEnabled = input.bool(true, 'Enable longs', group = 'Trade settings')
shortsEnabled = input.bool(true, 'Enable shorts', group = 'Trade settings')

fastMA = fastEMAEnabled ? ta.ema(close, fastMALength) : ta.sma(close, fastMALength)
slowMA = slowEMAEnabled ? ta.ema(close, slowMALength) : ta.sma(close, slowMALength)

FromMonth=input.int(defval=1,title="FromMonth",minval=1,maxval=12, group = 'Time filters')
FromDay=input.int(defval=1,title="FromDay",minval=1,maxval=31, group = 'Time filters')
FromYear=input.int(defval=1990,title="FromYear",minval=1900, group = 'Time filters')
ToMonth=input.int(defval=1,title="ToMonth",minval=1,maxval=12, group = 'Time filters')
ToDay=input.int(defval=1,title="ToDay",minval=1,maxval=31, group = 'Time filters')
ToYear=input.int(defval=9999,title="ToYear",minval=2017, group = 'Time filters')
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>time>=start and time<=finish?true:false
afterStartDate = time >= start and time<=finish?true:false
closeTradesEOD = input.bool(false, 'Close trades end of day', group = 'Time filters')

trailStopMA = ta.ema(close, trailStopMALength)

isGreenCandle = close > open
isRedCandle = close < open
isBrokenHigh = close > open[1]
isPriorCandleRed = close[1] < open[1]
isPriorPriorCandleRed = close[2] < open[2]
isPriorPriorCandleGreen = close[2] > open[2]
isPriorCandleGreen = close[1] > open[1]
isBrokenLow = close < open[1]

isPriorRedCandleBroken = isGreenCandle and isPriorCandleRed and isBrokenHigh
isPriorGreenCandleBroken = isRedCandle and isPriorCandleGreen and isBrokenLow

isPriorPriorRedCandleBroken = secondEntryEnabled and not isPriorRedCandleBroken and isGreenCandle and isPriorPriorCandleRed ? close > open[2] : false
isPriorPriorGreenCandleBroken = secondEntryEnabled and not isPriorGreenCandleBroken and isRedCandle and isPriorPriorCandleGreen ? close < open[2] : false

longOpenCondition = (isPriorRedCandleBroken or isPriorPriorRedCandleBroken) and afterStartDate and (ignoreSlowMA ? close > fastMA : fastMA > slowMA) and longsEnabled
longCloseCondition = useOpposingBarAsExit ? isRedCandle : ta.crossunder(close, fastMA)
longCloseCondition := useEMAForStop ? ta.crossunder(close, trailStopMA) : longCloseCondition

shortOpenCondition = (isPriorGreenCandleBroken or isPriorPriorGreenCandleBroken) and afterStartDate and (ignoreSlowMA ? close < fastMA : fastMA < slowMA) and shortsEnabled
shortCloseCondition = useOpposingBarAsExit ? isGreenCandle : ta.crossover(close, fastMA)
shortCloseCondition := useEMAForStop ? ta.crossover(close, trailStopMA) : shortCloseCondition

if (longOpenCondition)
    strategy.entry("Long Entry", strategy.long)

if (longCloseCondition)
    strategy.close('Long Entry', 'Long Exit')

if (shortOpenCondition)
    strategy.entry("Short Entry", strategy.long)

if (shortCloseCondition)
    strategy.close('Short Entry', 'Short Exit')

if (closeTradesEOD and hour >= 14 and minute >= 30)
    strategy.close_all("EOD")

plot(useEMAForStop ? trailStopMA : na, linewidth = 2, color = color.red)
plot(fastMA)
plot(ignoreSlowMA ? na : slowMA, linewidth = 4)