커뮤니티

문의드립니다.

프로필 이미지
애널박
2019-11-05 16:20:04
137
글번호 133425
답변완료
이전에 친절한 답변 감사드립니다. macd 지표에서 oscillator 지표도 함께 여쭤봐야 하는데, 잊어서 다시 문의드립니다. ATR 값으로 아래 macd oscillator 지표를 그려보았으면 합니다. < 예스스탁 macd 오실레이터 > Input : shortPeriod(12), longPeriod(26), Period(9); Var : MACDv(0), MACDsig(0),macdosc(0) ; MACDv = MACD(shortPeriod, longPeriod); MACDsig = ema(MACDv,Period); macdosc = MACDv-ema(MACDv,Period); if macdosc > 0 then { plot1(macdosc, "MACDOscillator+"); Plot2(0, "MACDOscillator-"); } else { Plot1(0, "MACDOscillator+"); Plot2(macdosc, "MACDOscillator-"); } Plot3(MACDv, "MACD"); Plot4(MACDsig, "MACDSignal"); PlotBaseLine1(0, "기준선1"); 감사합니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-11-05 16:47:24

안녕하세요 예스스탁입니다. 수식안에서 그래프종류는 설정할수 없습니다.' 오실레이터는 속성에서 막대그래프로 지정하시면 됩니다. 0이상은 빨간색, 아래는 파란색으로 처리했습니다. 1 Input : Period(14),short(9),long(26),sig(9); var : TH(0),TL(0),TR(0),ATRV(0),ATRMACD(0),ATRMACDsig(0),ATRMACDosc(0); TH = max(V,V[1]); TL = min(V,V[1]); TR = TH-TL; ATRv = ma(TR,Period); ATRMACD = ma(ATRV,short)-ma(ATRV,long); ATRMACDsig = ma(ATRMACD,sig); ATRMACDosc = ATRMACD-ATRMACDsig; Plot1(ATRMACD, "MACD"); Plot2(ATRMACDsig, "MACD signal"); Plot3(ATRMACDosc, "MACD osc",iff(ATRMACDosc>0,RED,BLUE)); PlotBaseLine1(0); 2 input : Length(14),short(12),long(26),sig(9); Var : Counter(0), TRange(0); var : PlusDM(0), MinusDM(0), MinusDM14(0),PlusDM14(0); var : DM(0),DP(0),DMIv(0),CummDMI(0), Return(0),adxv(0); var : TH(0),TL(0),TR(0),ATRV(0),ADXMACD(0),ADXMACDsig(0),ADXMACDosc(0); if CurrentBar >= 1 then { TH = max(V,V[1]); TL = min(V,V[1]); TR = TH-TL; ATRv = ma(TR,Length); } If CurrentBar == 1 Then { DM = 0; DP = 0; MinusDM14 = 0; PlusDM14 = 0; TRange = 0; For Counter = 0 To Length-1 { If V[Counter] - V[Counter+1] < 0 Then PlusDM = 0 ; Else PlusDM = V[Counter] - V[Counter + 1]; If V[Counter + 1] - V[Counter] < 0 Then MinusDM = 0; Else MinusDM = V[Counter + 1] - V[Counter]; TRange = TRange + ATRv[Counter]; var1 = PlusDM; var2 = MinusDM; If var1 >= var2 Then MinusDM = 0; If var2 >= var1 Then PlusDM = 0; MinusDM14 = MinusDM14 + MinusDM; PlusDM14 = PlusDM14 + PlusDM; } If TRange <> 0 Then DM = 100 * MinusDM14 / TRange; Else DM = 0; If TRange <> 0 Then DP = 100 * PlusDM14 / TRange; Else DP = 0 ; } Else If CurrentBar > 1 Then { If V[0] - V[1] < 0 Then PlusDM = 0; Else PlusDM = V[0] - V[1]; If V[1] - V [0] < 0 Then MinusDM = 0 ; Else MinusDM = V[1] - V[0] ; var1 = PlusDM; var2 = MinusDM; If PlusDM >= var2 Then MinusDM = 0 ; If var2 >= PlusDM Then PlusDM = 0; If Length > 0 Then { TRange = TRange[1] - (TRange[1] / Length) + ATRv; MinusDM14 = MinusDM14[1] - (MinusDM14[1] / Length) + MinusDM; PlusDM14 = PlusDM14[1] - (PlusDM14[1] / Length) + PlusDM; } If TRange <> 0 Then DM = 100 * MinusDM14 / TRange; Else DM = 0; If TRange <> 0 Then DP = 100 * PlusDM14 / TRange; Else DP = 0 ; If DP + DM == 0 Then DMIv = 0; Else DMIv = 100 * AbsValue(DP - DM) / (DP + DM); } Return = 0; If CurrentBar >= 1 Then { If CurrentBar < Length Then { CummDMI = 0; for Counter = 0 To CurrentBar - 1 { CummDMI = CummDMI + DMIV[Counter]; } Return = CummDMI / CurrentBar; } Else Return = (ADXv * (Length - 1) + DMIv) / Length; } ADXv = Return; ADXMACD = ma(ADXv,short)-ma(ADXV,long); ADXMACDsig = ma(ADXMACD,sig); ADXMACDosc = ADXMACD-ADXMACDsig; Plot1(ADXMACD, "MACD"); Plot2(ADXMACDsig, "MACD signal"); Plot3(ADXMACDosc, "MACD osc",iff(ADXMACDosc>0,RED,BLUE)); PlotBaseLine1(0); 즐거운 하루되세요 > 애널박 님이 쓴 글입니다. > 제목 : 문의드립니다. > 이전에 친절한 답변 감사드립니다. macd 지표에서 oscillator 지표도 함께 여쭤봐야 하는데, 잊어서 다시 문의드립니다. ATR 값으로 아래 macd oscillator 지표를 그려보았으면 합니다. < 예스스탁 macd 오실레이터 > Input : shortPeriod(12), longPeriod(26), Period(9); Var : MACDv(0), MACDsig(0),macdosc(0) ; MACDv = MACD(shortPeriod, longPeriod); MACDsig = ema(MACDv,Period); macdosc = MACDv-ema(MACDv,Period); if macdosc > 0 then { plot1(macdosc, "MACDOscillator+"); Plot2(0, "MACDOscillator-"); } else { Plot1(0, "MACDOscillator+"); Plot2(macdosc, "MACDOscillator-"); } Plot3(MACDv, "MACD"); Plot4(MACDsig, "MACDSignal"); PlotBaseLine1(0, "기준선1"); 감사합니다.