Traduzione codice TW Dvd
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Traduzione codice TW Dvd
- This topic has 1 reply, 2 voices, and was last updated 1 month ago by
Iván.
-
-
07/07/2025 at 9:35 AM #248702
Buongiorno,
chiedo cortese traduzione codice in oggetto che vorrei testare.
Grazie per l’aiuto.
https://it.tradingview.com/script/2e7GfTx8-Dual-Volume-Divergence-Line/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Dual Volume Divergence Index [DW] oscillator is utilized and get inspired by.
// Original concept by DonovanWall
// Modified by © keremertem
//@version=6
indicator(‘Dual Volume Divergence Line’, shorttitle = ‘DVD/Line’, overlay = true)
import TradingView/ta/9//—————————————————————————–\\
// — Ayarlar
//—————————————————————————–//
zaman = input.int(17, ‘Dvd Sampling Period’, 2, 100)
genislik = input.int(12, ‘Band Width’, 2, 50)
takip = input.int(3, ‘Trailing Length’, 2, 20)
kaynak = input.source(hlc3, ‘Source’)
carpan = input.float(1, ‘Multiplier’, 0.5, 10, 0.5)
//— SON —//—————————————————————————–\\
// — DVD Gostergesi
//—————————————————————————–//
hacim = volume// Pozitif Hacim Endeksi (PVI) Hesaplama
var float pvi = 0.0
pvi := kaynak > kaynak[1] ? pvi + (kaynak – kaynak[1]) : pvi// PVI Sinyali ve Iraksama
pvi_sinyal = ta.wma(pvi, zaman) // EMA fonksiyonu yerine WMA geldi
pvi_iraksama = (pvi – pvi_sinyal)// Negatif Hacim Endeksi (NVI) Hesaplama
var float nvi = 0.0
nvi := kaynak < kaynak[1] ? nvi – (kaynak – kaynak[1]) : nvi// NVI Sinyali ve Iraksama
nvi_sinyal = ta.wma(nvi, zaman) // EMA fonksiyonu yerine WMA geldi
nvi_iraksama = (nvi – nvi_sinyal)// DVD Hesaplama
Dvdi = (pvi_iraksama – nvi_iraksama) * carpan
Dvd = ta.wma(Dvdi + kaynak, genislik) // EMA fonksiyonu yerine WMA geldi
Dvd2 = ta.linreg(Dvd, takip, 1) // Takip cizgisi
Max = ta.highest(Dvd, genislik)
Min = ta.lowest(Dvd, genislik)
Ust = ta.rms(Max, genislik)
Alt = ta.rms(Min, genislik)
Orta = (Alt + Ust)/2
Ust := 2 * Ust – Orta
Alt := 2 * Alt – Orta// Cizim
rnk = Dvd > Dvd2 ? #00e6de : #fb00ff
ciz1 = plot(Dvd, ‘DVD Line’, rnk, 3)
gosterBand = input.bool(false, ‘Show Bands’)
ciz2 = plot(Ust, ‘Upper Band’, #ff525280, 2, plot.style_cross, display = gosterBand ? display.all : display.none)
ciz3 = plot(Alt, ‘Lower Band’, #00e67780, 2, plot.style_cross, display = gosterBand ? display.all : display.none)
ornk = Orta > Orta[1] ? #00e67780 : #ff525280
ciz4 = plot(Orta, ‘Middle Band’, ornk, 3)
//— SON —//—————————————————————————–\\
// — Iraksama Gostergesi Secimi
//—————————————————————————–//
string N_type = input.string(‘DVDI’, title = ‘Divergence Selection’, options=[‘DVDI’, ‘DVD Line’], group = ‘Divergence’)Ir_Go(type) =>
switch type
‘DVDI’ => Dvdi
‘DVD Line’ => Dvd
//— SON —//—————————————————————————–\\
// — Iraksama Saptama
//—————————————————————————–//
IrGo = Ir_Go(N_type)// Pivot Noktalari Saptama
Ir = input.int(1, ‘Divergence Range’)
py = na(ta.pivothigh(IrGo, Ir, Ir)) ? false : true
pd = na(ta.pivotlow(IrGo, Ir, Ir)) ? false : true
pyFiyat = ta.valuewhen(py, high[Ir], 1)
pdFiyat = ta.valuewhen(pd, low[Ir], 1)
pyIrGo = ta.valuewhen(py, IrGo[Ir], 1)
pdIrGo = ta.valuewhen(pd, IrGo[Ir], 1)// Boga Iraksama (Normal & Gizli)
bogaNormal = pd and IrGo[Ir] > pdIrGo and low[Ir] < pdFiyat
bogaGizli = pd and IrGo[Ir] < pdIrGo and low[Ir] > pdFiyat// Ayı Iraksama (Normal & Gizli)
ayiNormal = py and IrGo[Ir] < pyIrGo and high[Ir] > pyFiyat
ayiGizli = py and IrGo[Ir] > pyIrGo and high[Ir] < pyFiyat// Etiketleme
gosterNormal = input.bool(true, ‘Show Normal Divergences’)
gosterGizli = input.bool(false, ‘Show Hidden Divergences’)
if gosterNormal and bogaNormal
label.new(x=bar_index – Ir, y=low[Ir], text=’Bull’, color=color.green, style=label.style_label_up, textcolor=color.white, size=size.small)
if gosterGizli and bogaGizli
label.new(x=bar_index – Ir, y=low[Ir], text=’hid.’, color=color.lime, style=label.style_label_up, textcolor=color.white, size=size.small)
if gosterNormal and ayiNormal
label.new(x=bar_index – Ir, y=high[Ir], text=’Bear’, color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)
if gosterGizli and ayiGizli
label.new(x=bar_index – Ir, y=high[Ir], text=’hid.’, color=color.orange, style=label.style_label_down, textcolor=color.white, size=size.small)
//— SON —07/08/2025 at 11:27 AM #248723Ecco:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180// ------------------------------------------// PRC_Dual Volume Divergence Line (DVD/Line)//version = 0//08.07.25//Iván González @ www.prorealcode.com//Sharing ProRealTime knowledge// ------------------------------------------// --- Configuración de Parámetros// ------------------------------------------zaman = 17 // Dvd Sampling Periodgenislik = 12 // Band Widthtakip = 3 // Trailing Lengthcarpan = 1.0 // MultipliergosterBand = 0 // 'Show Bands'gosterNormal = 1 // 'Show Normal Divergences'gosterGizli = 1 // 'Show Hidden Divergences'Ir = 1 // 'Divergence Range'Ntype = 1 // Divergence Selection// ------------------------------------------// -- Cálculo del Indicador DVD// ------------------------------------------// --- Origen de datos ---kaynak = (high + low + close) / 3// --- Cálculo del Índice de Volumen Positivo (PVI)IF barindex > 0 THENIF kaynak > kaynak[1] THENpvi = pvi[1] + (kaynak - kaynak[1])ELSEpvi = pvi[1]ENDIFELSEpvi = 0ENDIF// --- Señal y Divergencia PVI ---pviSinyal = WeightedAverage[zaman](pvi)pviIraksama = pvi - pviSinyal// --- Cálculo del Índice de Volumen Negativo (NVI) ---IF barindex > 0 THENIF kaynak < kaynak[1] THENnvi = nvi[1] - (kaynak - kaynak[1])ELSEnvi = nvi[1]ENDIFELSEnvi = 0ENDIF// --- Señal y Divergencia NVI ---nviSinyal = WeightedAverage[zaman](nvi)nviIraksama = nvi - nviSinyal// --- Cálculo del DVD ---Dvdi = (pviIraksama - nviIraksama) * carpanDvd = WeightedAverage[genislik](Dvdi + kaynak)Dvd2 = LinearRegression[takip](Dvd)-LinearRegressionSlope[takip](Dvd) // ta.linreg(Dvd, takip, 1)// --- Cálculo de Bandas ---MaxDVD = Highest[genislik](Dvd)MinDVD = Lowest[genislik](Dvd)// Implementación de la función RMS (Root Mean Square)rmsMax = SQRT(Average[genislik](SQUARE(MaxDVD)))rmsMin = SQRT(Average[genislik](SQUARE(MinDVD)))Ust = rmsMaxAlt = rmsMinOrta = (Alt + Ust) / 2// Proyección de las bandasUst = 2 * Ust - OrtaAlt = 2 * Alt - Orta// --- Variables para colorear las líneas ---// Línea DVD principalIF Dvd > Dvd2 THENRdvd = 0Gdvd = 230Bdvd = 222ELSERdvd = 251Gdvd = 0Bdvd = 255ENDIF// Línea MediaIF Orta > Orta[1] THENRorta = 0Gorta = 230Borta = 119ELSERorta = 282Gorta = 82Borta = 82ENDIF// -----------------------------------------------------------------------------\\// -- Detección de Divergencias// -----------------------------------------------------------------------------//// --- Selección del Oscilador para Divergencia ---IF Ntype = 1 THENIrGo = DvdiELSEIrGo = DvdENDIF// --- Detección de Puntos Pivote (con retraso necesario en ProBuilder) ---pivotHighDetected = (IrGo[Ir] = HIGHEST[2 * Ir + 1](IrGo))pivotLowDetected = (IrGo[Ir] = LOWEST[2 * Ir + 1](IrGo))// --- Almacenamiento de valores de pivotes anteriores ---ONCE lastPHprice = 0ONCE lastPLprice = 0ONCE lastPHosc = 0ONCE lastPLosc = 0once lastPHindex=-1once lastPLindex=-1ayiNormal=0ayiGizli=0bogaNormal=0bogaGizli=0// Actualizar valores del último Pivote ALTOIF pivotHighDetected and lastPHindex <> barindex[ir] THENif lastPHindex<> -1 thenif high[Ir]>LastPHprice and IrGo[Ir]<lastPHosc thenayiNormal = 1endifif high[Ir]<lastPHprice and IrGo[Ir]>lastPHosc thenayiGizli = 1endifendiflastPHprice = high[Ir]lastPHosc = IrGo[Ir]lastPHIndex=barindex[Ir]ENDIF// Actualizar valores del último Pivote BAJOIF pivotLowDetected and lastPLindex<>barindex[Ir] THENif lastPLindex<>-1 thenif low[Ir]<lastPLprice and IrGo[Ir]>lastPLosc thenbogaNormal=1endifif low[Ir]<lastPLprice and IrGo[Ir]<lastPLosc thenbogaGizli=1endifendiflastPLprice = low[Ir]lastPLosc = IrGo[Ir]lastPLindex = barindex[Ir]ENDIF// --- Dibujo de Etiquetas de Divergencia ---atr=averagetruerange[14](close)// Normal AlcistaIF gosterNormal AND bogaNormal THENDRAWTEXT("Bull", barindex[Ir], low[Ir] - 0.15*atr ) COLOURED("green")ENDIF// Oculta AlcistaIF gosterGizli AND bogaGizli THENDRAWTEXT("hid.Bull", barindex[Ir], low[Ir] - 0.15*atr) COLOURED("lime")ENDIF// Normal BajistaIF gosterNormal AND ayiNormal THENDRAWTEXT("Bear", barindex[Ir], high[Ir] + 0.15*atr) COLOURED("red")ENDIF// Oculta BajistaIF gosterGizli AND ayiGizli THENDRAWTEXT("hid.Bear", barindex[Ir], high[Ir] + 0.15*atr) COLOURED("orange")ENDIF// -----------------------------------------------------------------------------\\// --- Salida de Datos (Plot)// -----------------------------------------------------------------------------//RETURN Ust COLOURED(255, 82, 82, gosterBand*128) STYLE(POINT, 2) AS "Upper Band", Alt COLOURED(0, 230, 119, gosterBand*128) STYLE(POINT, 2) AS "Lower Band", Dvd as "Dvd Line" coloured(Rdvd,Gdvd,Bdvd)style(line,3), orta as "Middle band"coloured(Rorta,Gorta,Borta,80)style(line,3)1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on