커뮤니티

부탁 드립니다.

프로필 이미지
yes
2015-08-20 19:42:33
178
글번호 89733
답변완료
해외선물에서 영업일 변경시간을 기준으로 유형1과 같이 당일데이터로만 계산되게 할수 있겠는지요? 유형1) input : P(60); var : OBVv(0),EP(0),Emav(0); if Bdate != Bdate[1] Then OBVv = 0; If Close[0] > Close[1] Then OBVv = OBVv + Volume; If Close[0] < Close[1] Then OBVv = OBVv - Volume; EP = 2/(P+1); if Bdate != Bdate[1] Then Emav = OBVv; if Bdate == Bdate[1] Then Emav = OBVv * EP + emav* (1-EP); var3 = OBVv-EMAV; plot3(var3,"var3"); PlotBaseLine1(0,"0"); //질문수식// Vars: Price(0), delta(0.1), gamma(0), alpha(0), beta(0), N(0), Period(0), MaxAmpl(0), Num(0), Denom(0), DC(0), DomCyc(0), alpha1(0), HP(0), SmoothHP(0), delta1(.1), gamma1(0), alpha2(0), beta1(0), IP(0), Q1(0), Ampl2(0), Trend(0), Ratio(0), TV(0), Width(0); Arrays: II[60](0), OldI[60](0), OlderI[60](0), Q[60](0), OldQ[60](0), OlderQ[60](0), Real[60](0), OldReal[60](0), OlderReal[60](0), Imag[60](0), OldImag[60](0), OlderImag[60](0), Ampl[60](0), OldAmpl[60](0), DB[60](0), OldDB[60](0), Raster[50](0), OldRaster[50](0); if CurrentBar > 1 then { price = (H+L)/2; alpha1 = (1 - Sine (360 / 30)) / Cosine(360 / 30); HP = .5*(1 + alpha1)*(Price - Price[1]) + alpha1*HP[1]; SmoothHP = (HP + 2*HP[1] + 3*HP[2] + 3*HP[3] + 2*HP[4] + HP[5]) / 12; IF CurrentBar < 7 Then SmoothHP = Price - Price[1]; IF CurrentBar == 1 THEN SmoothHP = 0; } delta = -.015*CurrentBar + .5; If delta < .1 then delta = .1; If CurrentBar > 12 Then Begin For N = 12 to 60 Begin beta = Cosine(720 / N); gamma = 1 / Cosine(1440*delta / N); alpha = gamma - SquareRoot(gamma*gamma - 1); Q[N] = (.5*N / 6.28318)*(SmoothHP - SmoothHP[1]); II[N] = SmoothHP; Real[N] = .5*(1 - alpha)*(II[N] - OlderI[N]) + beta*(1 + alpha)*OldReal[N] - alpha*OlderReal[N]; Imag[N] = .5*(1 - alpha)*(Q[N] - OlderQ[N]) + beta*(1 + alpha)*OldImag[N] - alpha*OlderImag[N]; Ampl[N] = (Real[N]*Real[N] + Imag[N]*Imag[N]); End; End; For N = 12 to 60 Begin OlderI[N] = OldI[N]; OldI[N] = II[N]; OlderQ[N] = OldQ[N]; OldQ[N] = Q[N]; OlderReal[N] = OldReal[N]; OldReal[N] = Real[N]; OlderImag[N] = OldImag[N]; OldImag[N] = Imag[N]; OldAmpl[N] = Ampl[N]; OldDB[N] = DB[N]; End; For N = 1 to 50 Begin OldRaster[N] = Raster[N]; End; MaxAmpl = Ampl[12]; For N = 12 to 60 Begin If Ampl[N] > MaxAmpl then MaxAmpl = Ampl[N]; End; For N = 12 to 60 Begin If MaxAmpl <> 0 AND (Ampl[N] / MaxAmpl) > 0 Then DB[N] = -10*Log(.01 / (1 - .99*Ampl[N] / MaxAmpl)) / Log(10); DB[N] = .33*DB[N] + .67*OldDB[N]; If DB[N] > 20 then DB[N] = 20; End; Num = 0; Denom = 0; For N = 12 to 60 Begin If DB[N] <= 6 Then Begin Num = Num + N*(20 - DB[N]); Denom = Denom + (20 - DB[N]); End; If Denom <> 0 Then DC = .5*Num / Denom; End; DomCyc = Median(DC, 5); If DomCyc < 6 Then DomCyc = 6; if Currentbar > 1 then { beta1 = Cosine(360 / DomCyc); gamma1 = 1 / Cosine(720*delta1 / DomCyc); alpha2 = gamma1 - SquareRoot(gamma1*gamma1 - 1); IP = .5*(1 - alpha2)*(Price - Price[2]) + beta1*(1 + alpha2)*IP[1] - alpha2*IP[2]; Q1 = (Domcyc / 6.28318)*(IP - IP[1]); Ampl2 = SquareRoot(IP*IP + Q1*Q1); Trend = Price - Price[DomCyc - 1]; If Trend <> 0 and Ampl2 <> 0 Then Ratio = .33*Trend / Ampl2 + .67*Ratio[1]; If Ratio > 10 then Ratio = 10; If Ratio < -10 then Ratio = -10; TV = .05*(Ratio + 10); } Plot1(20*TV-10, "S51"); PlotBaseLine3(0,"0");
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-08-21 09:16:32

안녕하세요 예스스탁입니다. 죄송합니다.올려주신 식은 어떻게 변경해야 할지 잘 모르겠습니다. 도움을 드리지 못해 죄송힙니다. 즐거운 하루되세요 > yes 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 해외선물에서 영업일 변경시간을 기준으로 유형1과 같이 당일데이터로만 계산되게 할수 있겠는지요? 유형1) input : P(60); var : OBVv(0),EP(0),Emav(0); if Bdate != Bdate[1] Then OBVv = 0; If Close[0] > Close[1] Then OBVv = OBVv + Volume; If Close[0] < Close[1] Then OBVv = OBVv - Volume; EP = 2/(P+1); if Bdate != Bdate[1] Then Emav = OBVv; if Bdate == Bdate[1] Then Emav = OBVv * EP + emav* (1-EP); var3 = OBVv-EMAV; plot3(var3,"var3"); PlotBaseLine1(0,"0"); //질문수식// Vars: Price(0), delta(0.1), gamma(0), alpha(0), beta(0), N(0), Period(0), MaxAmpl(0), Num(0), Denom(0), DC(0), DomCyc(0), alpha1(0), HP(0), SmoothHP(0), delta1(.1), gamma1(0), alpha2(0), beta1(0), IP(0), Q1(0), Ampl2(0), Trend(0), Ratio(0), TV(0), Width(0); Arrays: II[60](0), OldI[60](0), OlderI[60](0), Q[60](0), OldQ[60](0), OlderQ[60](0), Real[60](0), OldReal[60](0), OlderReal[60](0), Imag[60](0), OldImag[60](0), OlderImag[60](0), Ampl[60](0), OldAmpl[60](0), DB[60](0), OldDB[60](0), Raster[50](0), OldRaster[50](0); if CurrentBar > 1 then { price = (H+L)/2; alpha1 = (1 - Sine (360 / 30)) / Cosine(360 / 30); HP = .5*(1 + alpha1)*(Price - Price[1]) + alpha1*HP[1]; SmoothHP = (HP + 2*HP[1] + 3*HP[2] + 3*HP[3] + 2*HP[4] + HP[5]) / 12; IF CurrentBar < 7 Then SmoothHP = Price - Price[1]; IF CurrentBar == 1 THEN SmoothHP = 0; } delta = -.015*CurrentBar + .5; If delta < .1 then delta = .1; If CurrentBar > 12 Then Begin For N = 12 to 60 Begin beta = Cosine(720 / N); gamma = 1 / Cosine(1440*delta / N); alpha = gamma - SquareRoot(gamma*gamma - 1); Q[N] = (.5*N / 6.28318)*(SmoothHP - SmoothHP[1]); II[N] = SmoothHP; Real[N] = .5*(1 - alpha)*(II[N] - OlderI[N]) + beta*(1 + alpha)*OldReal[N] - alpha*OlderReal[N]; Imag[N] = .5*(1 - alpha)*(Q[N] - OlderQ[N]) + beta*(1 + alpha)*OldImag[N] - alpha*OlderImag[N]; Ampl[N] = (Real[N]*Real[N] + Imag[N]*Imag[N]); End; End; For N = 12 to 60 Begin OlderI[N] = OldI[N]; OldI[N] = II[N]; OlderQ[N] = OldQ[N]; OldQ[N] = Q[N]; OlderReal[N] = OldReal[N]; OldReal[N] = Real[N]; OlderImag[N] = OldImag[N]; OldImag[N] = Imag[N]; OldAmpl[N] = Ampl[N]; OldDB[N] = DB[N]; End; For N = 1 to 50 Begin OldRaster[N] = Raster[N]; End; MaxAmpl = Ampl[12]; For N = 12 to 60 Begin If Ampl[N] > MaxAmpl then MaxAmpl = Ampl[N]; End; For N = 12 to 60 Begin If MaxAmpl <> 0 AND (Ampl[N] / MaxAmpl) > 0 Then DB[N] = -10*Log(.01 / (1 - .99*Ampl[N] / MaxAmpl)) / Log(10); DB[N] = .33*DB[N] + .67*OldDB[N]; If DB[N] > 20 then DB[N] = 20; End; Num = 0; Denom = 0; For N = 12 to 60 Begin If DB[N] <= 6 Then Begin Num = Num + N*(20 - DB[N]); Denom = Denom + (20 - DB[N]); End; If Denom <> 0 Then DC = .5*Num / Denom; End; DomCyc = Median(DC, 5); If DomCyc < 6 Then DomCyc = 6; if Currentbar > 1 then { beta1 = Cosine(360 / DomCyc); gamma1 = 1 / Cosine(720*delta1 / DomCyc); alpha2 = gamma1 - SquareRoot(gamma1*gamma1 - 1); IP = .5*(1 - alpha2)*(Price - Price[2]) + beta1*(1 + alpha2)*IP[1] - alpha2*IP[2]; Q1 = (Domcyc / 6.28318)*(IP - IP[1]); Ampl2 = SquareRoot(IP*IP + Q1*Q1); Trend = Price - Price[DomCyc - 1]; If Trend <> 0 and Ampl2 <> 0 Then Ratio = .33*Trend / Ampl2 + .67*Ratio[1]; If Ratio > 10 then Ratio = 10; If Ratio < -10 then Ratio = -10; TV = .05*(Ratio + 10); } Plot1(20*TV-10, "S51"); PlotBaseLine3(0,"0");