いくつかのPine関数で動的な期間引数がサポートされました

09 9, 2020

Pineコーダーの方は、動的に計算される期間を以下の関数でご利用頂けるようになりました:

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

系列の可変期間に基づく計算を使用して、状況に適応するPineインジケーターを作成する事がより簡単になりました。例えばこちらの例では、ボラティリティを使用してALMAの期間を短縮または延長しています。静的なALMAの細いラインと比較してみてください。

//@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", "")

float を使用して期間を動的に計算する事は便利かもしれませんが、関数の呼び出しで使用する前には、上記の例のように、それらを “int” にキャストする事をお忘れなく。またいつものように、これらの関数はすべてのバーで評価される必要がある為、`for` ループの外側で使用する必要があり、`if` ブロックはすべてのバーで実行されない事にご注意ください。

この新機能がお役に立てば幸いです。改善の為のフィードバックをお寄せください。私たちはあなたのためにTradingViewを構築しており、こうした非常に数多くリクエストされたアップデートについてのご意見を聞く事を楽しみにしています。

Look first Then leap

あなたのためのTradingView、その最高の機能を最大限にご活用ください
チャートを起動