커뮤니티

문의드립니다.

프로필 이미지
애널박
2019-11-05 12:52:56
258
글번호 133412
답변완료
안녕하십니까. 지난번 답변 감사드립니다. 1. 이번에 ATR, ADX 지표를 선물 가격이 아닌 선물 거래량에 적용해 보고 싶은데, ATR, ADX 지표의 어느 부분을 거래량으로 수정해야 하는지 알려주시면 감사하겠습니다. 2. 그리고, ATR. ADX 값을 다시 MACD를 보조지표로 구현해 보고 싶은데, MACD의 어느 부분을 수정해야 하는지 알려주시면 감사하겠습니다. 2. 마지막으로, 이동평균선의 이동평균 방식 단순이동평균, 지수이동평균, 가중이동평균, 기하이동평균, 조화이동평균, 삼각이동평균 이 예스트레이더에서는 어떻게 표시되는지도 알려주시면 감사하겠습니다. ------------------ 1. ATR 지표 식 Input : Period(14),SigPeriod(9); var : AvgTrueRange(0),ATRsig(0); AvgTrueRange = ATR(Period); ATRsig = WMA(ATR(Period),SigPeriod); Plot1(AvgTrueRange, "Average True Range"); Plot2(ATRsig, "ATR signal"); 2. ADX 지표 식(일부 수정) input : Period(14),SigPeriod(9); var : ADXv(0),DP(0),DM(0),ADXsig(0); ADXv = ADX(Period); DP = DiPlus(Period); DM = DiMinus(Period); ADXsig = Ema(ADX(Period),SigPeriod); plot1(ADXv,"ADX"); plot2(DP,"+DI"); plot3(DM,"-DI"); Plot4(ADXsig, "ADX signal"); 3. MACD Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0) , macdosc(0) ; value = MACD(shortPeriod, longPeriod); macdosc = value-ema(value,Period); Plot1(value, "MACD"); Plot2(ema(value,Period), "MACDSignal"); PlotBaseLine1(0, "기준선1"); 감사합니다.
지표
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2019-11-05 15:55:12

안녕하세요 예스스탁입니다. 예스랭귀지에 가격이 별도로 지정하지 않는 함수는 아래와 같이 별도로 풀어서 작성해 사용하셔야 합니다. 1 ATR Input : Period(14),SigPeriod(9); var : TH(0),TL(0),TR(0),ATRV(0),ATRsig(0); TH = max(V,V[1]); TL = min(V,V[1]); TR = TH-TL; ATRv = ma(TR,Period); ATRsig = WMA(ATRv,SigPeriod); Plot1(ATRv, "Average True Range"); Plot2(ATRsig, "ATR signal"); 2 ADX input : Length(14); 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); 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; plot1(ADXV); plot2(DP); plot3(DM); 2-1 ATR MACD Input : Period(14),short(9),long(26),sig(9); var : TH(0),TL(0),TR(0),ATRV(0),ATRMACD(0),ATRMACDsig(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); Plot1(ATRMACD, "MACD"); Plot2(ATRMACDsig, "MACD signal"); PlotBaseLine1(0); 2-2 ADX MACD 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); 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); Plot1(ADXMACD, "MACD"); Plot2(ADXMACDsig, "MACD signal"); PlotBaseLine1(0); 3 input : Period(20); var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),mav6(0); Var : ii(0),TLen(0); #단순 mav1 = ma(C,Period); #지수 mav2 = ema(C,Period); #가중 mav3 = wma(C,Period); #기하 mav4 = 0; for ii = 0 to Period-1 begin mav4 = mav4 + log(c[ii]); end; mav4 = 2.71828182845904^(mav4/Period); #조화 mav5 = 1/(accumN(1/c, Period)/Period); #삼각 TLen = Ceiling((Period + 1) * .5); mav6 = ma(ma(C, TLen), TLen); plot1(mav1); plot2(mav2); plot3(mav3); plot4(mav4); plot5(mav5); plot6(mav6); 즐거운 하루되세요 > 애널박 님이 쓴 글입니다. > 제목 : 문의드립니다. > 안녕하십니까. 지난번 답변 감사드립니다. 1. 이번에 ATR, ADX 지표를 선물 가격이 아닌 선물 거래량에 적용해 보고 싶은데, ATR, ADX 지표의 어느 부분을 거래량으로 수정해야 하는지 알려주시면 감사하겠습니다. 2. 그리고, ATR. ADX 값을 다시 MACD를 보조지표로 구현해 보고 싶은데, MACD의 어느 부분을 수정해야 하는지 알려주시면 감사하겠습니다. 2. 마지막으로, 이동평균선의 이동평균 방식 단순이동평균, 지수이동평균, 가중이동평균, 기하이동평균, 조화이동평균, 삼각이동평균 이 예스트레이더에서는 어떻게 표시되는지도 알려주시면 감사하겠습니다. ------------------ 1. ATR 지표 식 Input : Period(14),SigPeriod(9); var : AvgTrueRange(0),ATRsig(0); AvgTrueRange = ATR(Period); ATRsig = WMA(ATR(Period),SigPeriod); Plot1(AvgTrueRange, "Average True Range"); Plot2(ATRsig, "ATR signal"); 2. ADX 지표 식(일부 수정) input : Period(14),SigPeriod(9); var : ADXv(0),DP(0),DM(0),ADXsig(0); ADXv = ADX(Period); DP = DiPlus(Period); DM = DiMinus(Period); ADXsig = Ema(ADX(Period),SigPeriod); plot1(ADXv,"ADX"); plot2(DP,"+DI"); plot3(DM,"-DI"); Plot4(ADXsig, "ADX signal"); 3. MACD Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0) , macdosc(0) ; value = MACD(shortPeriod, longPeriod); macdosc = value-ema(value,Period); Plot1(value, "MACD"); Plot2(ema(value,Period), "MACDSignal"); PlotBaseLine1(0, "기준선1"); 감사합니다.
프로필 이미지

애널박

2019-11-05 16:01:13

풀어서 쓰는거라 초보가 하기에는 거의 불가능한 것 같습니다. 자세하고도 친절한 답변 감사드립니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 예스랭귀지에 가격이 별도로 지정하지 않는 함수는 아래와 같이 별도로 풀어서 작성해 사용하셔야 합니다. 1 ATR Input : Period(14),SigPeriod(9); var : TH(0),TL(0),TR(0),ATRV(0),ATRsig(0); TH = max(V,V[1]); TL = min(V,V[1]); TR = TH-TL; ATRv = ma(TR,Period); ATRsig = WMA(ATRv,SigPeriod); Plot1(ATRv, "Average True Range"); Plot2(ATRsig, "ATR signal"); 2 ADX input : Length(14); 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); 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; plot1(ADXV); plot2(DP); plot3(DM); 2-1 ATR MACD Input : Period(14),short(9),long(26),sig(9); var : TH(0),TL(0),TR(0),ATRV(0),ATRMACD(0),ATRMACDsig(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); Plot1(ATRMACD, "MACD"); Plot2(ATRMACDsig, "MACD signal"); PlotBaseLine1(0); 2-2 ADX MACD 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); 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); Plot1(ADXMACD, "MACD"); Plot2(ADXMACDsig, "MACD signal"); PlotBaseLine1(0); 3 input : Period(20); var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),mav6(0); Var : ii(0),TLen(0); #단순 mav1 = ma(C,Period); #지수 mav2 = ema(C,Period); #가중 mav3 = wma(C,Period); #기하 mav4 = 0; for ii = 0 to Period-1 begin mav4 = mav4 + log(c[ii]); end; mav4 = 2.71828182845904^(mav4/Period); #조화 mav5 = 1/(accumN(1/c, Period)/Period); #삼각 TLen = Ceiling((Period + 1) * .5); mav6 = ma(ma(C, TLen), TLen); plot1(mav1); plot2(mav2); plot3(mav3); plot4(mav4); plot5(mav5); plot6(mav6); 즐거운 하루되세요 > 애널박 님이 쓴 글입니다. > 제목 : 문의드립니다. > 안녕하십니까. 지난번 답변 감사드립니다. 1. 이번에 ATR, ADX 지표를 선물 가격이 아닌 선물 거래량에 적용해 보고 싶은데, ATR, ADX 지표의 어느 부분을 거래량으로 수정해야 하는지 알려주시면 감사하겠습니다. 2. 그리고, ATR. ADX 값을 다시 MACD를 보조지표로 구현해 보고 싶은데, MACD의 어느 부분을 수정해야 하는지 알려주시면 감사하겠습니다. 2. 마지막으로, 이동평균선의 이동평균 방식 단순이동평균, 지수이동평균, 가중이동평균, 기하이동평균, 조화이동평균, 삼각이동평균 이 예스트레이더에서는 어떻게 표시되는지도 알려주시면 감사하겠습니다. ------------------ 1. ATR 지표 식 Input : Period(14),SigPeriod(9); var : AvgTrueRange(0),ATRsig(0); AvgTrueRange = ATR(Period); ATRsig = WMA(ATR(Period),SigPeriod); Plot1(AvgTrueRange, "Average True Range"); Plot2(ATRsig, "ATR signal"); 2. ADX 지표 식(일부 수정) input : Period(14),SigPeriod(9); var : ADXv(0),DP(0),DM(0),ADXsig(0); ADXv = ADX(Period); DP = DiPlus(Period); DM = DiMinus(Period); ADXsig = Ema(ADX(Period),SigPeriod); plot1(ADXv,"ADX"); plot2(DP,"+DI"); plot3(DM,"-DI"); Plot4(ADXsig, "ADX signal"); 3. MACD Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0) , macdosc(0) ; value = MACD(shortPeriod, longPeriod); macdosc = value-ema(value,Period); Plot1(value, "MACD"); Plot2(ema(value,Period), "MACDSignal"); PlotBaseLine1(0, "기준선1"); 감사합니다.