Originally Posted by
karazepin
merhaba arkadaşlar matrikste kullandığım şöyle bir formül var, rica etsem yazılımı kuvvetli biri varsa bu kodu ideale çevirebilir miyiz.
KPD:=Input("Kısa Period",1,500,6);
UPD:=Input("Uzun Period",1,500,13);
SPD:=Input("Sinyal Period",1,500,5);
KVWMA:=mov(c*v,KPD,e)/mov(v,KPD,e);
UVWMA:=mov(c*v,UPD,e)/mov(v,UPD,e);
VWMACD:=KVWMA-UVWMA;
Trigger:=mov(VWMACD,SPD,E);
Histogram:=VWMACD-Trigger;
VWMACD;
Trigger;
Histogram;0
Biraz uzun olabilir. Signal yani Trigger ı Exp ile çizdiremediğim için Simple ile çalıştı. Değerler Farklı çıkacaktır.
Kod:
/*
//@version=3
//created by Buff DORMEIER
//author: KIVANC @fr3762 on twitter
study("VOLUME WEIGHTED MACD V2", shorttitle="VWMACDV2")
fastperiod = input(12,title="fastperiod",type=integer,minval=1,maxval=500)
slowperiod = input(26,title="slowperiod",type=integer,minval=1,maxval=500)
signalperiod = input(9,title="signalperiod",type=integer,minval=1,maxval=500)
fastMA = ema(volume*close, fastperiod)/ema(volume, fastperiod)
slowMA = ema(volume*close, slowperiod)/ema(volume, slowperiod)
vwmacd = fastMA - slowMA
signal = ema(vwmacd, signalperiod)
hist= vwmacd - signal
plot(vwmacd, color=blue, linewidth=2)
plot(signal, color=red, linewidth=2)
plot(hist, color=green, linewidth=4, style=histogram)
plot(0, color=black)
*/
var fastperiod = 12;
var slowperiod = 26;
var signalperiod = 9;
var Veriler = Sistem.GrafikVerileri;
var C=Sistem.Liste(0);
var V=Sistem.Liste(0);
var CV=Sistem.Liste(0);
var fastMA=Sistem.Liste(0);
var slowMA=Sistem.Liste(0);
var VWMACD=Sistem.Liste(0);
for (int i = 1; i < Veriler.Count; i++)
{ C[i] =Veriler[i].Close;
V[i] =Veriler[i].Vol;
CV[i]=V[i] * C[i];
}
var KVWMA1= Sistem.MA(CV,"Exp",fastperiod );
var KVWMA2= Sistem.MA(V,"Exp",fastperiod );
var UVWMA1 = Sistem.MA(CV,"Exp",slowperiod );
var UVWMA2 = Sistem.MA(V,"Exp",slowperiod );
for (int i = 1; i < Veriler.Count; i++)
{
fastMA[i] = KVWMA1[i] / KVWMA2[i] ;
slowMA[i] = UVWMA1[i] / UVWMA2[i] ;
VWMACD[i] = fastMA[i] - slowMA[i] ;
}
var signal = Sistem.MA (VWMACD,"Simple",signalperiod);
var hist=Sistem.Liste(0);
for (int i = 1; i < Veriler.Count; i++)
{
hist[i] = VWMACD[i] - signal[i] ;
}
Sistem.Cizgiler[0].Deger = VWMACD; Sistem.Cizgiler[0].Panel = 2;
Sistem.Cizgiler[1].Deger = signal; Sistem.Cizgiler[1].Panel = 2;
Sistem.Cizgiler[2].Deger = hist; Sistem.Cizgiler[2].Panel = 2; Sistem.Cizgiler[2].Stil = 5;
Sistem.Cizgiler[3].Deger = Sistem.Liste(0); Sistem.Cizgiler[3].Panel = 2;
Yer İmleri