Dagangan garis arah aliran masa nyata berdasarkan titik pangsi dan cerun

ATR ADX MA
Tarikh penciptaan: 2024-04-26 15:34:28 Akhirnya diubah suai: 2024-04-26 15:34:28
Salin: 2 Bilangan klik: 859
1
fokus pada
1617
Pengikut

Dagangan garis arah aliran masa nyata berdasarkan titik pangsi dan cerun

Gambaran keseluruhan

Strategi ini menggunakan titik-titik pendorong (PivotHigh dan PivotLow) untuk mengenal pasti ketinggian dan ketinggian harga yang berfluktuasi, dan berdasarkan itu untuk melukis garis trend ke atas dan ke bawah. Skilok garis trend dikira oleh kaedah seperti ATR (Rang sebenar rata-rata), perbezaan standard atau regresi linear, dan dikalikan dengan satu faktor regresi. Strategi ini akan menghasilkan isyarat beli atau jual apabila harga menembusi garis trend.

Prinsip Strategi

  1. Menggunakan fungsi ta.pivothigh ((() dan ta.pivotlow ((() untuk mengesan titik tinggi (((ph)) dan titik rendah (((pl)) turun naik dalam tempoh tertentu.
  2. Berdasarkan kaedah pengiraan yang dipilih ((ATR, perbezaan standard atau regresi linear) mengira kecenderungan garis trend, dan kalikan dengan faktor kecenderungan ((mult)) untuk menyesuaikan.
  3. Menggunakan slope dan harga titik penyokong untuk mengira nilai semasa garisan trend ke atas (upper) dan garisan trend ke bawah (lower).
  4. Menentukan sama ada harga penutupan semasa telah menembusi garis trend: jika harga penutupan lebih tinggi daripada garis trend ke atas, maka akan dihasilkan isyarat penembusan ke atas; jika harga penutupan lebih rendah daripada garis trend ke bawah, maka akan dihasilkan isyarat penembusan ke bawah.
  5. Garis trend boleh digambarkan pada carta dan boleh dipilih untuk memanjangkan garis trend.
  6. Berdagang mengikut isyarat terobosan: Terobosan ke atas membuka banyak pesanan, terobosan ke bawah membuka pesanan kosong.

Kelebihan Strategik

  1. Strategi ini menghasilkan isyarat dagangan berdasarkan fakta objektif mengenai tingkah laku harga (titik sokongan dan garisan trend) dan mempunyai kebolehpercayaan dan kestabilan tertentu.
  2. Skillet garis trend boleh disesuaikan secara dinamik mengikut turun naik pasaran, menyesuaikan diri dengan keadaan pasaran yang berbeza.
  3. Pengguna mempunyai fleksibiliti dalam memilih kaedah pengiraan kemiringan dan parameter untuk mengoptimumkan prestasi strategi.
  4. Strategi ini menyediakan dua mod isyarat masa nyata dan isyarat kelewatan, yang dapat memenuhi keperluan pengguna yang berbeza.
  5. Fungsi amaran terbina dalam membantu pengguna mendapatkan peluang dagangan tepat pada masanya.

Risiko Strategik

  1. Strategi ini boleh menghasilkan isyarat palsu yang kerap, yang menyebabkan penurunan keuntungan, apabila pasaran bergolak atau trend tidak jelas.
  2. Prestasi strategi bergantung pada parameter yang ditetapkan, parameter yang tidak sesuai boleh menyebabkan strategi gagal atau menghasilkan terlalu banyak perdagangan.
  3. Dalam mod isyarat tertangguh, hasil urus niaga sebenar mungkin berbeza dengan hasil ujian sejarah kerana terdapat pengulangan.

Arah pengoptimuman strategi

  1. Memperkenalkan lebih banyak petunjuk teknikal atau ciri-ciri tingkah laku harga, seperti jumlah perdagangan, kadar turun naik, dan lain-lain, untuk membantu pengesahan isyarat pemecahan garisan trend, meningkatkan kualiti isyarat.
  2. Menapis isyarat perdagangan, mempertimbangkan faktor-faktor seperti jangka masa penembusan garisan trend, ketara penembusan, dan sebagainya untuk mengurangkan isyarat palsu.
  3. Pengendalian kedudukan dan kawalan risiko yang dioptimumkan, seperti penyesuaian saiz kedudukan mengikut kekuatan trend pasaran atau kadar turun naik yang dinamik, menetapkan kedudukan berhenti dan berhenti yang wajar.
  4. Pengoptimuman parameter, seperti menggunakan pembelajaran mesin atau algoritma pengoptimuman, untuk mencari kombinasi parameter terbaik.

ringkaskan

Strategi ini menggunakan titik sokongan dan lereng garisan trend untuk membina sistem perdagangan garisan trend dalam masa nyata. Dengan menangkap peristiwa penembusan garisan trend, strategi ini dapat berdagang pada peringkat awal pembentukan trend. Walaupun strategi ini mempunyai kelebihan tertentu, masih perlu berhati-hati terhadap risikonya di pasaran yang bergolak, dan meningkatkan lagi kestabilan dan keuntungan strategi dengan memperkenalkan lebih banyak maklumat, penapisan isyarat yang dioptimumkan, dan pengurusan kedudukan.

Kod sumber strategi
/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(" only Ajay ", overlay=true)

//------------------------------------------------------------------------------
//Settings
//------------------------------------------------------------------------------{
length = input.int(14, 'Swing Detection Lookback')
mult = input.float(1., 'Slope', minval = 0, step = .1)
calcMethod = input.string('Atr', 'Slope Calculation Method', options = ['Atr','Stdev','Linreg'])
backpaint = input(true, tooltip = 'Backpainting offset displayed elements in the past. Disable backpainting to see real time information returned by the indicator.')

//Style
upCss = input.color(color.teal, 'Up Trendline Color', group = 'Style')
dnCss = input.color(color.red, 'Down Trendline Color', group = 'Style')
showExt = input(true, 'Show Extended Lines')

//------------------------------------------------------------------------------}
//Calculations
//------------------------------------------------------------------------------{
var upper = 0.
var lower = 0.
var slope_ph = 0.
var slope_pl = 0.

var offset = backpaint ? length : 0

n = bar_index
src = close

ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)

//Slope Calculation Method
slope = switch calcMethod
    'Atr'    => ta.atr(length) / length * mult
    'Stdev'  => ta.stdev(src,length) / length * mult
    'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult

//Get slopes and calculate trendlines
slope_ph := ph ? slope : slope_ph
slope_pl := pl ? slope : slope_pl

upper := ph ? ph : upper - slope_ph
lower := pl ? pl : lower + slope_pl

var upos = 0
var dnos = 0
upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos
dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos

//------------------------------------------------------------------------------}
//Extended Lines
//------------------------------------------------------------------------------{
// var uptl  = line.new(na,na,na,na, color = upCss, style = line.style_dashed, extend = extend.right)
// var dntl  = line.new(na,na,na,na, color = dnCss, style = line.style_dashed, extend = extend.right)

// if ph and showExt
//     uptl.set_xy1(n-offset, backpaint ? ph : upper - slope_ph * length)
//     uptl.set_xy2(n-offset+1, backpaint ? ph - slope : upper - slope_ph * (length+1))

// if pl and showExt
//     dntl.set_xy1(n-offset, backpaint ? pl : lower + slope_pl * length)
//     dntl.set_xy2(n-offset+1, backpaint ? pl + slope : lower + slope_pl * (length+1))

//------------------------------------------------------------------------------}
//Plots
//------------------------------------------------------------------------------{
plot(backpaint ? upper : upper - slope_ph * length, 'Upper', color = ph ? na : upCss, offset = -offset)
plot(backpaint ? lower : lower + slope_pl * length, 'Lower', color = pl ? na : dnCss, offset = -offset)

//Breakouts
upBreakout = upos > upos[1]
dnBreakout = dnos > dnos[1]

if (upBreakout)
    strategy.entry("Up Breakout", strategy.long)

if (dnBreakout)
    strategy.entry("Down Breakout", strategy.short)

//------------------------------------------------------------------------------}
//Alerts
//------------------------------------------------------------------------------{
alertcondition(upos > upos[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos > dnos[1], 'Downward Breakout', 'Price broke the up-trendline downward')

//------------------------------------------------------------------------------}