Strategi terobosan ganda jarak jauh dan pendek


Tanggal Pembuatan: 2023-11-03 17:16:02 Akhirnya memodifikasi: 2023-11-03 17:16:02
menyalin: 1 Jumlah klik: 623
1
fokus pada
1617
Pengikut

Strategi terobosan ganda jarak jauh dan pendek

Ringkasan

Strategi ini menggunakan indikator Bollinger Bands untuk mencari titik-titik penembusan yang lebih banyak, dan menggabungkan indikator ADX untuk memfilter aksi negatif dari fluktuasi yang lebih rendah, untuk melakukan pelacakan tren.

Prinsip Strategi

Strategi ini terutama didasarkan pada indikator Brin band untuk menilai arah kosong. Garis tengah Brin band adalah rata-rata bergerak dari harga penutupan N hari, bandwidth dihitung melalui perbedaan standar.

Untuk menghindari kesalahan perdagangan yang disebabkan oleh penembusan tidak efektif dari tren non-trend, strategi ini menggabungkan indikator ADX untuk memfilter pergerakan rendah. Sinyal beli dan jual akan dikeluarkan hanya ketika nilai ADX berada di bawah nilai set.

Strategi ini juga menetapkan stop loss retracement dan stop loss tracking ke atas. Secara khusus, setiap kali membuka posisi, harga terendah N hari sebelumnya akan dicatat sebagai stop loss retracement ke arah itu, dan harga tertinggi sebagai stop loss tracking ke atas. Ini dapat mengunci keuntungan sambil meminimalkan kerugian yang disebabkan oleh reversal.

Dari logika kode, strategi ini pertama-tama menghitung parameter indikator Bollinger Bands dan ADX. Kemudian menilai apakah harga telah menembus Bollinger Bands ke arah terbalik, dan apakah nilai ADX berada di bawah titik terendah, dan jika memenuhi, maka akan menghasilkan sinyal beli dan jual.

Analisis Keunggulan

  • Menggunakan Brines untuk menilai titik-titik terobosan yang jelas dapat menangkap peluang tren.
  • Filter indikator ADX komprehensif untuk menghindari aliran bergelombang ketika tidak ada tren yang jelas
  • Stop loss yang efektif dapat mengontrol kerugian tunggal
  • Tracking stop up dapat mengunci sebagian besar keuntungan

Analisis risiko

  • Penembusan sabuk Brin tidak mempertimbangkan hubungan energi kuantum, yang dapat menghasilkan penembusan palsu
  • Perhitungan yang salah dalam penyaringan ADX juga bisa melewatkan peluang tren
  • Stop loss terlalu dekat dapat dibalik
  • Parameter yang tidak tepat juga dapat mempengaruhi kinerja kebijakan

Dapat dipertimbangkan untuk menggabungkan dengan indikator lain untuk memastikan bahwa penilaian dapat mendukung penembusan VALID; mengoptimalkan kondisi penyaringan ADX, menggunakan kemiringan kurva ADX untuk menilai titik balik tren; meredakan batas stop loss yang tepat untuk mencegah penutupan yang terlalu dekat.

Arah optimasi

  • Optimalkan parameter panjang pita Brin untuk mencari efek terobosan yang optimal
  • Optimalkan kondisi penyaringan ADX, keseimbangan penilaian tren dan tingkat kesalahan penilaian
  • Menambahkan indikator lain untuk menilai dukungan, menghindari terobosan palsu
  • Optimalkan stop loss untuk mencegah stop loss yang terlalu sensitif
  • Mengoptimalkan tracking stop bandwidth, dengan jarak yang tepat

Meringkaskan

Strategi ini secara keseluruhan ide yang jelas dan ringkas, menggunakan Brin band untuk menilai sinyal clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear clear

Kode Sumber Strategi
/*backtest
start: 2023-10-26 00:00:00
end: 2023-11-02 00:00:00
period: 1m
basePeriod: 1m
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/
// © tweakerID

// This strategy uses Bollinger Bands to buy when the price 
// crosses over the lower band and sell when it crosses down
// the upper band. It only takes trades when the ADX is 
// below a certain level, and exits all trades when it's above it.

//@version=4
strategy("BB + ADX Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value = 0.04, initial_capital=100)

//Inputs
i_reverse=input(false, title="Reverse Trades")
i_ADXClose=input(true, title="ADX Close")
i_SL=input(false, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=0, step=.5, title="SL Expander")
i_TPExpander=input(defval=0, step=.5, title="TP Expander")

//ADX Calculations
adxlen = input(14, title="ADX Smoothing")
dilen = input(20, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
adxlevel=input(30, step=5)

//BB Calculations
BBCALC=input(false, title="-----------BB Inputs-----------")

length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
MAlen=input(defval=9)
source = close
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Entry Logic
BUY = crossover(source, lower) and sig < adxlevel
SELL = crossunder(source, upper) and sig < adxlevel

//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0))*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0))*i_SLExpander)
lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))+((valuewhen(bought, atr(14), 0))*i_TPExpander))
sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0)-strategy.position_avg_price)-((valuewhen(bought, atr(14), 0))*i_TPExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
SL= islong ? LSL : isshort ? SSL : na
TP= islong ? lTP : isshort ? sTP : na

//Entries
strategy.entry("long", long=i_reverse?false:true, when=BUY)
strategy.entry("short", long=i_reverse?true:false, when=SELL)

//EXITS
if i_ADXClose
    strategy.close_all(when=sig > adxlevel)
if i_SL
    strategy.exit("longexit", "long", stop=SL, limit=TP)
    strategy.exit("shortexit", "short", stop=SL, limit=TP)

//Plots	
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL")
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP")
plot(upper)
plot(lower)