{ EB_Width Eichberger Bands - Width (C)Copyright, 2014, B.Eichberger from Professional Software Solutions, pss@pobox.com This program remains the exclusive property of B. EICHBERGER and may not be sold, used, copied, displayed or modified without the written consent of B. EICHBERGER } Input: Lookback(40), Width(100), ExtendType(1), RefWidth(100), ShowPercent(true); Vars: TickSize(MinMove/PriceScale), nBar(0), nWidthUse(0), nWidthRaw(0), nWidthPercent(0), nRangeH(0), nRangeL(0), nRangeC(0), nShift(0), idxStart(50), idxBase(0), Counter(0), txtID(Symbol + "_I" + numtostr(BarInterval,0) + "_T" + numtostr(BarType,0) + "_EBWidth"), txtDiag("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXX"), retEB(0); Array: float arrValIn[50](0), float arrValOut[1000](0); DefineDLLFunc: "C:\Database\PSS_EB\PSS_EB.DLL", int , "PSS_EB", LPSTR,LPFLOAT,LPFLOAT,LPSTR; nBar = BarNumber; nShift = Lookback/2; arrValIn[0] = Date data1; arrValIn[1] = Time data1; arrValIn[2] = Open data1; arrValIn[3] = High data1; arrValIn[4] = Low data1; arrValIn[5] = Close data1; arrValIn[6] = UpTicks data1; arrValIn[7] = BarNumber data1; arrValIn[8] = BarInterval data1; arrValIn[9] = BarType data1; arrValIn[10]= DownTicks data1; arrValIn[11]= CustomerID; arrValIn[12]= Lookback; arrValIn[13]= Width; arrValIn[14]= 1; arrValIn[15]= ExtendType; arrValIn[16]= 0; retEB = PSS_EB(txtID,&arrValIn[0],&arrValOut[0],txtDiag); {====== PROCESS ERRORS ===============================================} IF retEB < -100 THEN RaiseRunTimeError(txtDiag); if retEB >= 0 THEN BEGIN nRangeH = arrValOut[11]; nRangeL = arrValOut[12]; nRangeC = (nRangeH + nRangeL)/2; nWidthRaw = nRangeH - nRangeL; nWidthPercent = 0; IF nRangeH > 0 THEN nWidthPercent = 10000*(nWidthRaw/nRangeC); nWidthUse = nWidthPercent; if ShowPercent = false THEN nWidthUse = nWidthRaw/TickSize; IF nWidthUse > 0 THEN Plot1[nShift](nWidthUse, "Width" ); if ShowPercent = true THEN Plot2[nShift](RefWidth, "RefWidth" ); //draw extension envelope if ExtendType > 0 AND retEB > 0 then begin For Counter = 1 To nShift Begin idxBase = idxStart+((Counter-1)*6); nRangeH = arrValOut[idxBase+0]; nRangeL = arrValOut[idxBase+1]; nWidthRaw = nRangeH - nRangeL; nWidthPercent = 0; IF nRangeH > 0 THEN nWidthPercent = 10000*(nWidthRaw/nRangeH); nWidthUse = nWidthPercent; if ShowPercent = false THEN nWidthUse = nWidthRaw; IF nWidthUse > 0.01 THEN Plot1[nShift-Counter](nWidthUse, "Width" ); if ShowPercent = true THEN Plot2[nShift-Counter](RefWidth, "RefWidth" ); End; end; end;