Perdagangan garis tren waktu nyata berdasarkan titik pivot dan kemiringan

ATR ADX MA
Tanggal Pembuatan: 2024-04-26 15:34:28 Akhirnya memodifikasi: 2024-04-26 15:34:28
menyalin: 2 Jumlah klik: 859
1
fokus pada
1617
Pengikut

Perdagangan garis tren waktu nyata berdasarkan titik pivot dan kemiringan

Ringkasan

Strategi ini menggunakan pivot point (PivotHigh dan PivotLow) untuk mengidentifikasi titik-titik tinggi dan rendah dari harga dan menggambar garis tren ke atas dan ke bawah berdasarkan pada itu. Slip of the trend line dihitung dengan metode seperti ATR (Average True Range), standard deviation, atau linear regression, dan dikalikan dengan faktor slippage. Strategi ini akan menghasilkan sinyal beli atau jual ketika harga melewati garis tren.

Prinsip Strategi

  1. Fungsi ta.pivothigh (p) dan ta.pivotlow (p) digunakan untuk mendeteksi titik tinggi (p) dan titik rendah (p) pada periode tertentu.
  2. Sesuai dengan metode perhitungan yang dipilih ((ATR, standard deviation atau linear regression) perhitungkan kemiringan garis tren dan kalikan dengan faktor kemiringan ((mult)) untuk melakukan penyesuaian.
  3. Menggunakan slope dan harga pivot, perhitungkan nilai saat ini dari garis tren atas (upper) dan garis tren bawah (lower).
  4. Untuk menentukan apakah harga penutupan saat ini telah menembus garis tren: Jika harga penutupan lebih tinggi dari garis tren ke atas, maka akan ada sinyal penutupan ke atas; Jika harga penutupan lebih rendah dari garis tren ke bawah, maka akan ada sinyal penutupan ke bawah.
  5. Garis tren dapat digambar pada grafik dan dapat dipilih untuk memperpanjang garis tren.
  6. Perdagangan berdasarkan sinyal terobosan: terobosan ke atas membuka lebih banyak opsi, terobosan ke bawah membuka opsi kosong.

Keunggulan Strategis

  1. Strategi ini menghasilkan sinyal perdagangan berdasarkan fakta-fakta obyektif dari perilaku harga (titik pivot dan garis tren) dengan tingkat keandalan dan stabilitas tertentu.
  2. Slope garis tren dapat secara dinamis disesuaikan dengan fluktuasi pasar untuk menyesuaikan dengan kondisi pasar yang berbeda.
  3. Pengguna dapat secara fleksibel memilih metode perhitungan slope dan pengaturan parameter untuk mengoptimalkan kinerja strategi.
  4. Strategi ini menawarkan dua mode sinyal real-time dan sinyal delay, yang dapat memenuhi kebutuhan pengguna yang berbeda.
  5. Fitur peringatan bawaan membantu pengguna untuk mendapatkan kesempatan perdagangan tepat waktu.

Risiko Strategis

  1. Strategi ini dapat menghasilkan sinyal palsu yang sering terjadi pada pasar yang bergoyang atau saat tren tidak jelas, yang menyebabkan penurunan profitabilitas.
  2. Kinerja strategi tergantung pada pengaturan parameter, parameter yang tidak tepat dapat menyebabkan strategi gagal atau menghasilkan terlalu banyak transaksi.
  3. Dalam mode sinyal tertunda, hasil transaksi sebenarnya mungkin berbeda dengan hasil tes historis karena ada pengetesan.

Arah optimasi strategi

  1. Memperkenalkan lebih banyak indikator teknis atau karakteristik perilaku harga, seperti volume perdagangan, volatilitas, dan lain-lain, untuk membantu mengkonfirmasi sinyal tren garis pecah, meningkatkan kualitas sinyal.
  2. Menyaring sinyal perdagangan, seperti mempertimbangkan faktor-faktor seperti durasi dan intensitas pemecahan garis tren, untuk mengurangi sinyal palsu.
  3. Mengoptimalkan manajemen posisi dan pengendalian risiko, seperti menyesuaikan ukuran posisi sesuai dengan kekuatan tren pasar atau dinamika volatilitas, dan mengatur posisi stop loss dan stop loss yang masuk akal.
  4. Mengoptimalkan parameter, seperti menggunakan pembelajaran mesin atau algoritma optimasi, untuk menemukan kombinasi parameter yang optimal.

Meringkaskan

Strategi ini memanfaatkan pivot point dan slippage garis tren untuk membangun sistem perdagangan garis tren real-time. Dengan menangkap peristiwa pemecahan garis tren, strategi ini dapat melakukan perdagangan pada tahap awal pembentukan tren. Meskipun strategi ini memiliki beberapa keuntungan, tetap perlu memperhatikan risikonya di pasar yang bergoyang, dan meningkatkan lebih lanjut kehandalan dan profitabilitas strategi dengan memperkenalkan lebih banyak informasi, memaksimalkan penyaringan sinyal, dan manajemen posisi.

Kode 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')

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