커뮤니티

지표식 변환 요청

프로필 이미지
hugnkiss
2013-10-04 11:38:27
206
글번호 68103
답변완료
다음 수식을 예스트레이더용으로 변환 가능하다면 부탁 드립니다. inputs: price(close), Fastlen(12), Slowlen(26), W(9), volToday(true); variables: fastavg(0), slowavg(0), sprd(0), avgsprd(0), sLOW(0), vavg(0), FAST(0), Vfactor(0), IVfactor(0), m(0), sprdiff(0), mcad(0), VD(0); fastavg = bd.vwma(Price, FastLen, volToday); slowavg = bd.vwma(Price, slowLen, volToday); m = xaverage(close, fastlen) - xaverage(close, slowlen); if xaverage(volume,slowlen) <> 0 then Vfactor = (bd.vwma(volume,fastlen,voltoday)/xaverage(volume,slowlen))*10; if xaverage(volume,fastlen) <> 0 then IVfactor = (bd.vwma(volume,slowlen,voltoday)/xaverage(volume,fastlen))*10; if ivfactor <> 0 and vfactor <> 0 then FAST = FASTAVG/(VFACTOR/IVFACTOR); if ivfactor <> 0 and vfactor <> 0 then SLOW = (IVFACTOR/VFACTOR)* SLOWavg; sprd = (fast - slow); Vavg = BD.VWMA (vfactor,fastlen,voltoday)/xaverage (ivfactor,slowlen) *W; avgsprd = round (bd.vwma(sprd,vavg,voltoday),3); sprdiff = (sprd - avgsprd); mcad = xaverage((m),(w)); vd = sprdiff-mcad; plot1 (sprd, "sprd"); plot2 (avgsprd, "avg sprd"); plot3 (vd, "Buff diff"); ///////////////////////////////////////////////////////////////////////// VWMA function (volume-weighted simple moving average) [LegacyColorValue = true]; Inputs: price(numericSeries), { data to be averaged; e.g. close } length(numericSimple), { length of moving average } volToday(trueFalse); { true = volume is available for today (e.g. stocks) false = volume is NOT available for today (e.g.futures) } Vars: beg(0), { days back to begin working with for average } sumOfVol(0), { sum of volume } vwPx(0), { volume weighted price } vwMa(0), { volume weighted moving average } counter(0); { counter } { initialize/reset first 4 variables } if currentBar = 1 then begin if volToday = true then beg = 0 else if volToday = false then beg = 1; end; sumOfVol = 0; vwPx = 0; vwMa = 0; for counter = beg to (length-1+beg) begin sumOfVol = sumOfVol + volume[counter]; end; for counter = beg to (length-1+beg) begin if sumOfVol > 0 then vwPx = price[counter] * volume[counter] / sumOfVol; vwMa = vwMa + vwPx; end; { return the VWMA if enough data is present, else return 0 } if length >= 1 and volume[length-1+beg] > 0 then BD.VWMA = vwMa else BD.VWMA = 0;
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-10-04 15:38:02

안녕하세요 예스스탁입니다. 올려주신 식은 사용해본 경험이 없는 언어라 정확히 톡해가 되지 않아 식으로 변경을 해드릴수가 없습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > hugnkiss 님이 쓴 글입니다. > 제목 : 지표식 변환 요청 > 다음 수식을 예스트레이더용으로 변환 가능하다면 부탁 드립니다. inputs: price(close), Fastlen(12), Slowlen(26), W(9), volToday(true); variables: fastavg(0), slowavg(0), sprd(0), avgsprd(0), sLOW(0), vavg(0), FAST(0), Vfactor(0), IVfactor(0), m(0), sprdiff(0), mcad(0), VD(0); fastavg = bd.vwma(Price, FastLen, volToday); slowavg = bd.vwma(Price, slowLen, volToday); m = xaverage(close, fastlen) - xaverage(close, slowlen); if xaverage(volume,slowlen) <> 0 then Vfactor = (bd.vwma(volume,fastlen,voltoday)/xaverage(volume,slowlen))*10; if xaverage(volume,fastlen) <> 0 then IVfactor = (bd.vwma(volume,slowlen,voltoday)/xaverage(volume,fastlen))*10; if ivfactor <> 0 and vfactor <> 0 then FAST = FASTAVG/(VFACTOR/IVFACTOR); if ivfactor <> 0 and vfactor <> 0 then SLOW = (IVFACTOR/VFACTOR)* SLOWavg; sprd = (fast - slow); Vavg = BD.VWMA (vfactor,fastlen,voltoday)/xaverage (ivfactor,slowlen) *W; avgsprd = round (bd.vwma(sprd,vavg,voltoday),3); sprdiff = (sprd - avgsprd); mcad = xaverage((m),(w)); vd = sprdiff-mcad; plot1 (sprd, "sprd"); plot2 (avgsprd, "avg sprd"); plot3 (vd, "Buff diff"); ///////////////////////////////////////////////////////////////////////// VWMA function (volume-weighted simple moving average) [LegacyColorValue = true]; Inputs: price(numericSeries), { data to be averaged; e.g. close } length(numericSimple), { length of moving average } volToday(trueFalse); { true = volume is available for today (e.g. stocks) false = volume is NOT available for today (e.g.futures) } Vars: beg(0), { days back to begin working with for average } sumOfVol(0), { sum of volume } vwPx(0), { volume weighted price } vwMa(0), { volume weighted moving average } counter(0); { counter } { initialize/reset first 4 variables } if currentBar = 1 then begin if volToday = true then beg = 0 else if volToday = false then beg = 1; end; sumOfVol = 0; vwPx = 0; vwMa = 0; for counter = beg to (length-1+beg) begin sumOfVol = sumOfVol + volume[counter]; end; for counter = beg to (length-1+beg) begin if sumOfVol > 0 then vwPx = price[counter] * volume[counter] / sumOfVol; vwMa = vwMa + vwPx; end; { return the VWMA if enough data is present, else return 0 } if length >= 1 and volume[length-1+beg] > 0 then BD.VWMA = vwMa else BD.VWMA = 0;