커뮤니티
함수 부탁드립니다
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;
로 대체해 주십시요.
다음글