/adxの値がワイルダーの原著と合わないことがあるので自作してみる。
sisuname:=DMI;
var day,tr[0],pdm[0],mdm[0],trn[0],pdmn[0],mdmn[0],npdi[0],nmdi[0],ndx[0],nadx[0];

begin

sisumemori:=60,40,20;
sisucolor1:=red;
sisucolor2:=blue;
sisucolor3:=green;

day:=14;

/TR
tr[dno]:=max(abs(ref('high',dno)-ref('low',dno)),abs(ref('close',dno-1)-ref('high',dno)),abs(ref('close',dno-1)-ref('low',dno)));

/PDM
if((ref('high',dno)-ref('high',dno-1))<0)and((ref('low',dno-1)-ref('low',dno))<0)then pdm[dno]:=0
 else if(ref('high',dno)-ref('high',dno-1))>(ref('low',dno-1)-ref('low',dno)) then pdm[dno]:=ref('high',dno)-ref('high',dno-1)
 else if(ref('high',dno)-ref('high',dno-1))<(ref('low',dno-1)-ref('low',dno)) then pdm[dno]:=0
 else if(ref('high',dno)-ref('high',dno-1))=(ref('low',dno-1)-ref('low',dno)) then pdm[dno]:=0;

/MDM
if((ref('high',dno)-ref('high',dno-1))<0)and((ref('low',dno-1)-ref('low',dno))<0)then mdm[dno]:=0
 else if(ref('high',dno)-ref('high',dno-1))>(ref('low',dno-1)-ref('low',dno)) then mdm[dno]:=0
 else if(ref('high',dno)-ref('high',dno-1))<(ref('low',dno-1)-ref('low',dno)) then mdm[dno]:=ref('low',dno-1)-ref('low',dno)
 else if(ref('high',dno)-ref('high',dno-1))=(ref('low',dno-1)-ref('low',dno)) then mdm[dno]:=0;

/TRn
if (dno-day-1)=0 then trn[dno]:=calcsum('tr',dno-day-1,dno);
if (dno-day-1)>0 then trn[dno]:=ref('trn',dno-1)-ref('trn',dno-1)/day+ref('tr',dno);

/PDMn
if (dno-day-1)=0 then pdmn[dno]:=calcsum('pdm',dno-day-1,dno);
if (dno-day-1)>0 then pdmn[dno]:=ref('pdmn',dno-1)-ref('pdmn',dno-1)/day+ref('pdm',dno);

/MDMn
if (dno-day-1)=0 then mdmn[dno]:=calcsum('mdm',dno-day-1,dno);
if (dno-day-1)>0 then mdmn[dno]:=ref('mdmn',dno-1)-ref('mdmn',dno-1)/day+ref('mdm',dno);

/PDI
npdi[dno]:=ref('pdmn',dno)/ref('trn',dno)*100;

/MDI
nmdi[dno]:=ref('mdmn',dno)/ref('trn',dno)*100;

/DX
ndx[dno]:=(abs(ref('npdi',dno)-ref('nmdi',dno))/(ref('npdi',dno)+ref('nmdi',dno)))*100;

/ADX
if(dno-day*2+1=0) then nadx[dno]:=calcav('ndx',dno-day+1);
if(dno-day*2+1>0) then nadx[dno]:=(ref('nadx',dno-1)*(day-1)+ref('ndx',dno))/day;

usersisu1[dno]:=npdi[dno];
usersisu2[dno]:=nmdi[dno];
usersisu3[dno]:=nadx[dno];

print(dnodate,ref('pdi',dno),ref('mdi',dno),ref('adx',dno));

end;