Trend Pivot

Penulis:ChaoZhang, Tarikh: 2022-05-31 18:43:20
Tag:TrendPivot

Hello Pedagang,

Satu lagi idea yang asli adalah di sini dengan anda. sebenarnya saya boleh mengatakan bahawa ia adalah strategi breakout yang menggunakan pelbagai purata Pivot Point.

Bagaimana ia berfungsi?

  • ia mencari titik Pivot, anda boleh menetapkan panjang seperti yang anda mahu
  • ia mendapat purata Pivot Highs dan Pivot Lows, anda boleh menetapkan bilangan Pivot Points untuk dimasukkan
  • ia membandingkan harga penutupan semasa dengan purata Pivot Highs dan Pivot Lows
  • Jika kedua-duanya positif atau negatif maka trend berubah

Anda mempunyai dua pilihan:

  • Pivot Point Period => adalah panjang yang digunakan untuk mencari Pivot Points. bermakna ia memeriksa bar kiri/kanan jika ia adalah Pivot Point (4 secara lalai)
  • Bilangan PP untuk memeriksa => adalah bilangan Titik Pivot yang skrip mencari dan mengira purata (3 secara lalai)

Ujian belakang

img


/*backtest
start: 2022-04-30 00:00:00
end: 2022-05-29 23:59:00
period: 30m
basePeriod: 15m
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/
// © LonesomeTheBlue

//@version=4
study("Pivot Trend", precision = 2, explicit_plot_zorder = true)
prd = input(defval = 4, title="Pivot Point Period", minval = 1, maxval = 30)
pnum = input(defval = 3, title="number of PP to check", minval = 1, maxval = 30)
colup = input(defval = color.blue, title = "Colors", inline = "col")
coldn = input(defval = color.orange, title = "", inline = "col")

float ph = pivothigh(prd, prd)
float pl = pivotlow(prd, prd)
var ph_lev = array.new_float(pnum, na)
var pl_lev = array.new_float(pnum, na)

if ph
    array.unshift(ph_lev, ph)
    array.pop(ph_lev)
    
if pl
    array.unshift(pl_lev, pl)
    array.pop(pl_lev)
            
float lrate = 0.0
for i = 0 to array.size(pl_lev) - 1
    float rate = (close - array.get(pl_lev, i)) / array.get(pl_lev, i)
    lrate += (rate / pnum)

            
float hrate = 0.0
for i = 1 to array.size(ph_lev) - 1
    float rate = (close - array.get(ph_lev, i)) / array.get(ph_lev, i)
    hrate += (rate / pnum)

hline(0.)
hln = plot(hrate, color = color.red, linewidth = 2)
lln = plot(lrate, color = color.lime, linewidth = 2)

trend = 0
trend := hrate > 0 and lrate > 0 ? 1 : hrate < 0 and lrate < 0 ? -1 : nz(trend[1])
tcolor = trend == 1 ? color.new(colup, 40) : color.new(coldn, 40)
fill(hln, lln, color = tcolor)

mid = sma((hrate + lrate) / 2, 9)
plot(mid, color = mid >= 0 ? mid >= mid[1] ? color.blue : color.navy : mid <= mid[1] ? color.red : color.orange, linewidth = 2)

alertcondition(change(trend) > 0, title='Pivot Trend UP', message='Pivot Trend UP')
alertcondition(change(trend) < 0, title='Pivot Trend DOWN', message='Pivot Trend DOWN')

if change(trend) > 0
    strategy.entry("Enter Long", strategy.long)
else if change(trend) < 0
    strategy.entry("Enter Short", strategy.short)

Berkaitan

Lebih lanjut