0 beğenilme 0 beğenilmeme
1,082 kez görüntülendi
MERHABA. TRADİNGVİEW  DE ÇOKCA KULLANDIĞIM VE YARARINI GÖRDÜĞÜM BİR İNDİKATÖR VAR. BUNU PRİME'A UYGULAMANIZ MÜMKÜN MÜ?

//@version=5

indicator(title="Volume Weighted Average Price", shorttitle="VWAP", overlay=true, timeframe="", timeframe_gaps=true)

 

var cumVol = 0.

cumVol += nz(volume)

if barstate.islast and cumVol == 0

    runtime.error("No volume is provided by the data vendor.")

    

computeVWAP(src, isNewPeriod, stDevMultiplier) =>

var float sumSrcVol = na

var float sumVol = na

    var float sumSrcSrcVol = na

 

sumSrcVol := isNewPeriod ? src * volume : src * volume + sumSrcVol[1]

sumVol := isNewPeriod ? volume : volume + sumVol[1]

// sumSrcSrcVol calculates the dividend of the equation that is later used to calculate the standard deviation

sumSrcSrcVol := isNewPeriod ? volume * math.pow(src, 2) : volume * math.pow(src, 2) + sumSrcSrcVol[1]

 

_vwap = sumSrcVol / sumVol

variance = sumSrcSrcVol / sumVol - math.pow(_vwap, 2)

variance := variance < 0 ? 0 : variance

stDev = math.sqrt(variance)

 

lowerBand = _vwap - stDev * stDevMultiplier

upperBand = _vwap + stDev * stDevMultiplier

 

[_vwap, lowerBand, upperBand]

 

hideonDWM = input(false, title="Hide VWAP on 1D or Above", group="VWAP Settings")

var anchor = input.string(defval = "Session", title="Anchor Period",

 options=["Session", "Week", "Month", "Quarter", "Year", "Decade", "Century", "Earnings", "Dividends", "Splits"], group="VWAP Settings")

src = input(title = "Source", defval = hlc3, group="VWAP Settings")

offset = input(0, title="Offset", group="VWAP Settings")

 

showBands = input(true, title="Calculate Bands", group="Standard Deviation Bands Settings")

stdevMult = input(1.0, title="Bands Multiplier", group="Standard Deviation Bands Settings")

 

timeChange(period) =>

ta.change(time(period))

 

new_earnings = request.earnings(syminfo.tickerid, earnings.actual, barmerge.gaps_on, barmerge.lookahead_on, ignore_invalid_symbol=true)

new_dividends = request.dividends(syminfo.tickerid, dividends.gross, barmerge.gaps_on, barmerge.lookahead_on, ignore_invalid_symbol=true)

new_split = request.splits(syminfo.tickerid, splits.denominator, barmerge.gaps_on, barmerge.lookahead_on, ignore_invalid_symbol=true)

 

isNewPeriod = switch anchor

"Earnings" => not na(new_earnings)

"Dividends" => not na(new_dividends)

"Splits" => not na(new_split)

"Session" => timeChange("D")

"Week" => timeChange("W")

"Month" => timeChange("M")

"Quarter" => timeChange("3M")

"Year" => timeChange("12M")

"Decade" => timeChange("12M") and year % 10 == 0

"Century" => timeChange("12M") and year % 100 == 0

=> false

 

isEsdAnchor = anchor == "Earnings" or anchor == "Dividends" or anchor == "Splits"

if na(src[1]) and not isEsdAnchor

isNewPeriod := true

 

float vwapValue = na

float std = na

float upperBandValue = na

float lowerBandValue = na

 

if not (hideonDWM and timeframe.isdwm)

    [_vwap, bottom, top] = computeVWAP(src, isNewPeriod, stdevMult)

    vwapValue := _vwap

    upperBandValue := showBands ? top : na

    lowerBandValue := showBands ? bottom : na

 

plot(vwapValue, title="VWAP", color=#2962FF, offset=offset)

 

upperBand = plot(upperBandValue, title="Upper Band", color=color.green, offset=offset)

lowerBand = plot(lowerBandValue, title="Lower Band", color=color.green, offset=offset)

 

fill(upperBand, lowerBand, title="Bands Fill", color= showBands ? color.new(color.green, 95) : na)
Grafik kategorisinde (186 puan) tarafından | 1,082 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
En İyi Cevap
merhaba,

çogu zaman diğer dillerde matrikse formül cevirimi mümkün olmamaktadır,

formül içerisinde bulunan fonksiyonlar matriksde bulunmuyor veya diğer dillerde ne yapılmak isteniyor,

bilmek mümkün olmuyor,

martrikse çevrili vwap indikatörü aşağıdadır(formül anladığımız kadarıyla bunun üzerine kurulu)

bir bakar incelersiniz

bilgilerinize

 

d:= valuewhen(1.,DAYOFMONTH()<>REF(DAYOFMONTH(),-1),REF(CUM(V*W),-1));

f:= valuewhen(1.,DAYOFMONTH()<>REF(DAYOFMONTH(),-1),REF(CUM(V),-1));

(cum(w*v)-d)/(Cum(v)-f)
(40,149 puan) tarafından
tarafından seçilmiş
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



8,636 soru
8,590 cevap
4,821 yorum
19,800 kullanıcı