September 9, 2020
Beberapa Fungsi Pine Kini Menyokong Argumen Panjang Dinamik

Pengekod Pine kini boleh panjang yang dikira secara dinamik dalam fungsi-fungsi berikut:

alma()
change()
highest()
highestbars()
linreg()
lowest()
lowestbars()
mom()
sma()
sum()
vwma()
wma()

Panjang bersiri akan menjadikannya lebih mudah untuk mencipta penunjuk Pine boleh suai. Lihat contoh berikut, bagaimana kami menggunakan ketaktentuan untuk memendekkan atau memanjangkan tempoh ALMA di garis tebal dan bandingkannya dengan ALMA statik yang ditunjukkan dengan garis pendek:

//@version=4
study("Adaptive ALMA", "AALMA", true)
i_minLen    = input(10, minval = 1)
i_maxLen    = input(60, minval = 1)
i_adaptPct  = input(3., minval = 0, maxval = 100) / 100.0

startingLen = avg(i_minLen, i_maxLen)
var float dynamicLen = startingLen
highVolatility = atr(10) > atr(40)
if highVolatility
    dynamicLen := max(i_minLen, dynamicLen * (1 - i_adaptPct))
else
    dynamicLen := min(i_maxLen, dynamicLen * (1 + i_adaptPct))
dynamicAlma = alma(close, int(dynamicLen),  0.85, 6)
staticAlma  = alma(close, int(startingLen), 0.85, 6)

maColor(_ma) => close > _ma ? highVolatility ? #40FF00ff : #40FF0060 : highVolatility ? #FF0080ff : #FF008060
plot(dynamicAlma, "Dynamic Alma", maColor(dynamicAlma), 3)
plot(staticAlma,  "Static Alma",  maColor(staticAlma),  1)
// Follow the calculated Length in the Data Window.
plotchar(dynamicLen, "dynamicLength", "")

Walaupun mudah untuk menggunakan floats untuk mengira panjang secara dinamik, sila ingat untuk ‘cast’ mereka kepada “int” terlebih dahulu sebelum menggunakannya dalam panggilan fungsi. Juga perlu ingat, fungsi ini memerlukan penilaian di setiap bar, jadi ia seharusnya digunakan di luar lingkaran ‘for’ dan blok ‘if’ yang tidak dilaksanakan di setiap bar.

Kami berharap ciri ini berguna untuk anda. Kami sentiasa mengalu-alukan maklum balas anda.

Cara terpantas untuk mengikuti pasaran

Lancarkan Carta