Strategi mengikut arah aliran berdasarkan ATR dan indeks turun naik


Tarikh penciptaan: 2024-01-04 15:31:34 Akhirnya diubah suai: 2024-01-04 15:31:34
Salin: 1 Bilangan klik: 590
1
fokus pada
1621
Pengikut

Strategi mengikut arah aliran berdasarkan ATR dan indeks turun naik

Gambaran keseluruhan

Strategi ini menggunakan purata real-amplitude ((ATR) dan indeks turun naik ((CHOP) sebagai petunjuk teknikal utama untuk mengenal pasti dan mengesan trend. Apabila indeks menembusi ke bawah, gabungan arah trend berfungsi sebagai isyarat masuk; apabila indeks kembali ke kawasan pita, ambil kedudukan berhenti atau berhenti keluar.

Prinsip Strategi

  1. Menggunakan ATR untuk mengira saiz peti, membina saluran Ripple, dan menentukan arah trend harga.
  2. Menggunakan indikator CHOP untuk menentukan sama ada pasaran sesuai untuk diperdagangkan, indikator ini menggabungkan harga tertinggi, harga terendah dan ATR, yang menunjukkan turun naik pasaran yang perlahan apabila berada dalam julat 38.2-61.8; jika tidak, ia menunjukkan turun naik pasaran yang besar dan tidak sesuai untuk diperdagangkan.
  3. Apabila CHOP menembusi ke bawah dari 61.8, harga masuk ke dalam trend menurun, dan jika EMA jangka pendek yang cepat juga menunjukkan harga yang lebih tinggi, ia akan melakukan pengurangan; sebaliknya, apabila CHOP menembusi ke atas dari 38.2 dan harga EMA jangka pendek meningkat, ia akan melakukan pengurangan.
  4. Menggunakan strategi hentian hentian atau hentian apabila harga memasuki semula kawasan 38.2-61.8 CHOP.

Analisis kelebihan strategi

Strategi ini menggabungkan penilaian trend dan kawalan turun naik untuk menangkap trend harga dan mengawal risiko. Strategi ini merupakan strategi pengesanan trend yang agak stabil.

  1. Dengan menggunakan saluran Ripple yang dibina oleh ATR, ia dapat mengesan trend harga dengan berkesan.
  2. Indeks CHOP menilai kadar turun naik pasaran, mengelakkan perdagangan yang salah dalam turun naik yang teruk.
  3. Gabungan dengan EMA pantas untuk menentukan arah trend jangka pendek, mengelakkan operasi terbalik.
  4. Strategi Stop Loss untuk mengawal kerugian tunggal.

Analisis risiko

Risiko utama dalam strategi ini ialah:

  1. Dalam keadaan gegaran, saluran ATR dan petunjuk CHOP mungkin menghasilkan isyarat yang salah. Parameter boleh disesuaikan dengan betul untuk menghilangkan isyarat yang salah.
  2. Satu set penunjuk teknikal tidak dapat mengelakkan kerugian sepenuhnya dan memerlukan campur tangan manusia untuk menentukan trend besar.
  3. Penetapan stop loss terlalu longgar, dan kerugian tunggal mungkin terlalu besar. Stop loss harus dikurangkan dengan sewajarnya.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Menambah petunjuk lain untuk menilai isyarat, seperti bentuk K, jumlah lalu lintas, dan lain-lain, untuk meningkatkan ketepatan isyarat.
  2. Mengoptimumkan parameter ATR dan CHOP untuk menangkap pergerakan harga.
  3. Tetapkan kedudukan hentian hentian yang dinamik untuk memberi ruang hentian yang lebih besar dan hentian hentian lebih cepat.
  4. Selepas menilai trend pada tahap besar, anda perlu melonggarkan ruang stop loss yang sesuai untuk mendapatkan keuntungan yang lebih besar dalam trend.

ringkaskan

Strategi ini mengintegrasikan penunjuk teknikal yang biasa digunakan, mudah dan praktikal. Dengan penyesuaian parameter yang dioptimumkan, kesan pengesanan yang baik dapat diperoleh. Tetapi masih perlu menilai tren besar secara manual, tidak dapat sepenuhnya automatik.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © sharatgbhat

//@version=4
strategy("Weis Chop Strategy", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 10,max_lines_count = 500, max_labels_count = 500)
maxIdLossPcnt = input(1, "Max Intraday Loss(%)", type=input.float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method")
methodvalue = input(defval=14.0, type=input.float, minval=0, title="Value")
pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source")
useClose = pricesource == "Close"
useOpenClose = pricesource == "Open / Close" or useClose
useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume")
isOscillating = input(defval=false, type=input.bool, title="Oscillating")
normalize = input(defval=false, type=input.bool, title="Normalize")
vol = useTrueRange == "Always" or useTrueRange == "Auto" and na(volume) ? tr : volume
op = useClose ? close : open
hi = useOpenClose ? close >= op ? close : op : high
lo = useOpenClose ? close <= op ? close : op : low

if method == "ATR"
    methodvalue := atr(round(methodvalue))
if method == "Part of Price"
    methodvalue := close / methodvalue

currclose = float(na)
prevclose = nz(currclose[1])
prevhigh = prevclose + methodvalue
prevlow = prevclose - methodvalue
currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose

direction = int(na)
direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1])
directionHasChanged = change(direction) != 0
directionIsUp = direction > 0
directionIsDown = direction < 0

barcount = 1
barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount
vol := not directionHasChanged ? vol[1] + vol : vol
res = barcount > 1 ? vol / barcount : vol

plot(isOscillating and directionIsDown ? -res : res, style=plot.style_columns, color=directionIsUp ? color.green : color.red, transp=75, linewidth=3, title="Wave Volume")

length = input(14, minval=1)
ci = 100 * log10(sum(atr(1), length) / (highest(length) - lowest(length))) / log10(length)
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

MomentumBull = close>ema(close,8)
MomentumBear = close<ema(close,8)
Tradecon = crossunder(ci,61.8)

if (MomentumBull and directionIsUp and Tradecon)
	strategy.entry("Buy", strategy.long)
if (MomentumBear and directionIsDown and Tradecon )
    strategy.entry("Sell", strategy.short)
    strategy.exit("exit","Buy",when=directionIsDown,qty_percent=100,profit=20,loss=10)
    strategy.exit("exit","Sell",when=directionIsUp,qty_percent=100,profit=20,loss=10)