커뮤니티

함수 부탁드립니다

프로필 이미지
뉴스타트
2019-07-29 07:53:14
349
글번호 130718
답변완료
Easy Language입니다.예스함수와 지표식 부탁드립니다. // Function inputs: Price (NumericSeries), Length (NumericSimple); vars: TR(0), DI_Diff(0), DI_Sum(0), ma(0), pdm(0), mdm(0), pdi(0), mdi(0), DI_Factor(0), VI(0), diff(0), HHV(0), LLV(0), WeightDM(Length), WeightDI(Length), WeightDX(Length), ChandeEMA(Length), output(0); once ma=Price; if(Price>Price[1]) then begin pdm=Price-Price[1]; mdm=0; end else begin mdm=Price[1]-Price; pdm=0; end; pdm=((WeightDM-1)*pdm[1] + pdm)/WeightDM;//ema. mdm=((WeightDM-1)*mdm[1] + mdm)/WeightDM;//ema. TR=pdm+mdm; if (TR>0) then begin pdi=pdm/TR; mdi=mdm/TR; end else begin pdi=0; mdi=0; end; pdi=((WeightDI-1)*pdi[1] + pdi)/WeightDI;//ema. mdi=((WeightDI-1)*mdi[1] + mdi)/WeightDI;//ema. DI_Diff=pdi-mdi; if (DI_Diff<0) then DI_Diff= -DI_Diff;//Only positive momentum signals are used. DI_Sum=pdi+mdi; DI_Factor=0;//Zero case, DI_Diff will also be zero when DI_Sum is zero. if (DI_Sum>0) then output=DI_Diff/DI_Sum else output=0; output=((WeightDX-1)*output[1] + output)/WeightDX; HHV = HighestFC(output,Length+1); LLV = LowestFC(output,Length+1); diff = HHV - LLV; VI=0; if (diff>0) then VI=(output-LLV)/diff; ma=((ChandeEMA-VI)*ma[1]+VI*Price)/ChandeEMA;//Chande VMA formula with ema built in. ADXVMA = ma; 끝부분의 ChandeEMA 확인가능하시면 그대로 해주시고 아니라면, var : ADXVMAPeriod(Length); ma=((ADXVMAPeriod-VI)*ma[1]+VI*Price)/ADXVMAPeriod; ADXVMA = ma; 로 대체해 주십시요.
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-07-29 15:50:45

안녕하세요 예스스탁입니다. 1. 사용자함수명 : ADXVMA 반환값형 : 숫자형 inputs: Price (NumericSeries), Length (NumericSimple); vars: TR(0), DI_Diff(0), DI_Sum(0), mav(0), pdm(0), mdm(0), pdi(0), mdi(0), DI_Factor(0), VI(0), diff(0), HHV(0), LLV(0), WeightDM(Length), WeightDI(Length), WeightDX(Length), ChandeEMA(Length), output(0); if index == 0 Then mav=Price; if CurrentBar >= 1 then{ if(Price>Price[1]) then begin pdm=Price-Price[1]; mdm=0; end else begin mdm=Price[1]-Price; pdm=0; end; pdm=((WeightDM-1)*pdm[1] + pdm)/WeightDM;//ema. mdm=((WeightDM-1)*mdm[1] + mdm)/WeightDM;//ema. TR=pdm+mdm; if (TR>0) then begin pdi=pdm/TR; mdi=mdm/TR; end else begin pdi=0; mdi=0; end; pdi=((WeightDI-1)*pdi[1] + pdi)/WeightDI;//ema. mdi=((WeightDI-1)*mdi[1] + mdi)/WeightDI;//ema. DI_Diff=pdi-mdi; if (DI_Diff<0) then DI_Diff= -DI_Diff;//Only positive momentum signals are used. DI_Sum=pdi+mdi; DI_Factor=0;//Zero case, DI_Diff will also be zero when DI_Sum is zero. if (DI_Sum>0) then output=DI_Diff/DI_Sum; else output=0; output=((WeightDX-1)*output[1] + output)/WeightDX; HHV = Highest(output,Length+1); LLV = Lowest(output,Length+1); diff = HHV - LLV; VI=0; if (diff>0) then VI=(output-LLV)/diff; mav=((ChandeEMA-VI)*mav[1]+VI*Price)/ChandeEMA;//Chande VMA formula with ema built in. ADXVMA = mav; } 2 지표 input : p(10); plot1(ADXVMA(c,p)); 즐거운 하루되세요 > 뉴스타트 님이 쓴 글입니다. > 제목 : 함수 부탁드립니다 > Easy Language입니다.예스함수와 지표식 부탁드립니다. // Function inputs: Price (NumericSeries), Length (NumericSimple); vars: TR(0), DI_Diff(0), DI_Sum(0), ma(0), pdm(0), mdm(0), pdi(0), mdi(0), DI_Factor(0), VI(0), diff(0), HHV(0), LLV(0), WeightDM(Length), WeightDI(Length), WeightDX(Length), ChandeEMA(Length), output(0); once ma=Price; if(Price>Price[1]) then begin pdm=Price-Price[1]; mdm=0; end else begin mdm=Price[1]-Price; pdm=0; end; pdm=((WeightDM-1)*pdm[1] + pdm)/WeightDM;//ema. mdm=((WeightDM-1)*mdm[1] + mdm)/WeightDM;//ema. TR=pdm+mdm; if (TR>0) then begin pdi=pdm/TR; mdi=mdm/TR; end else begin pdi=0; mdi=0; end; pdi=((WeightDI-1)*pdi[1] + pdi)/WeightDI;//ema. mdi=((WeightDI-1)*mdi[1] + mdi)/WeightDI;//ema. DI_Diff=pdi-mdi; if (DI_Diff<0) then DI_Diff= -DI_Diff;//Only positive momentum signals are used. DI_Sum=pdi+mdi; DI_Factor=0;//Zero case, DI_Diff will also be zero when DI_Sum is zero. if (DI_Sum>0) then output=DI_Diff/DI_Sum else output=0; output=((WeightDX-1)*output[1] + output)/WeightDX; HHV = HighestFC(output,Length+1); LLV = LowestFC(output,Length+1); diff = HHV - LLV; VI=0; if (diff>0) then VI=(output-LLV)/diff; ma=((ChandeEMA-VI)*ma[1]+VI*Price)/ChandeEMA;//Chande VMA formula with ema built in. ADXVMA = ma; 끝부분의 ChandeEMA 확인가능하시면 그대로 해주시고 아니라면, var : ADXVMAPeriod(Length); ma=((ADXVMAPeriod-VI)*ma[1]+VI*Price)/ADXVMAPeriod; ADXVMA = ma; 로 대체해 주십시요.