PureBytes Links
Trading Reference Links
|
--- In amibroker@xxxxxxxxxxxxxxx, "Bill Barnard" <wbarnard@xxxx>
wrote:
> Martin,
>
> Thanks for starting this topic. I have been following the work you
> and other have been doing on the TD lines with great interest. It
> prompted me to reread DeMark (about six times on the first
chapter).
> I have concluded that the requirement that a line be questioned or
> invalidated if the close following the pivot violates the line
> pertains more to his technique of projecting price peaks or valleys
> after a break of the line than to generating timely buy or sell
> signals. It appears to me that incorporating that condition delays
> the signals, so I have not included it in my version of the code. I
> have added several things to the code you and others have posted;
> particularly, a lot of loops designed to generate all the signals
> needed for back testing. Following is my code.
>
> Bill
>
> //---------------------------------------------------------------
>
> /* DeMark's Demand and Supply Line Trading System -
> Original code by marmal417, Johsun, Dimitris Tsokakis
> with variations by Bill Barnard, 2/18/04.
> The numerous loops make for a slow calculation
> when the stock of interest has more than two
> or three years of data. Suggest making short-lived
> duplicates of stocks to be studied.
> Colors set for use with black background */
>
> // Following line allows changing the number of days which
> // must preceed a pivot. "equal" allows a pivot which is
> // equal in value to the preceeding day.
> rules = Param("1-1day, 2-Equal, 3-3day", 2,1,3,1);
> // Following line allows the use of DeMark's three
> // qualifiers for a legitimate breakout.
> Q_On = Param("Use Qualifier", 0,0,1,1);
> extension = 20;
>
> Plot(C,"",colorWhite,styleCandle);
>
> prevLow = IIf(Ref(L,-1)<Ref(C,-2), Ref(L,-1), Ref(C,-2));
> prevHigh = IIf(Ref(H,-1)>Ref(C,-2), Ref(H,-1), Ref(C,-2));
>
> pivothigh = IIf(rules==1, prevHigh<H AND H>Ref(H,1),
> IIf(rules==2, prevHigh<=H AND H>Ref(H,1),
> IIf(rules==3, Ref(C,-3)<H AND Ref(H,-2)<H AND
> Ref(H,-1)<H AND H>=Ref(H,1), 0)));
> pivotlow = IIf(rules==1, prevLow>L AND L<Ref(L,1),
> IIf(rules==2, prevLow>=L AND L<Ref(L,1),
> IIf(rules==3, Ref(C,-3)>L AND Ref(L,-2)>L AND
> Ref(L,-1)>L AND L<=Ref(L,1), 0)));
>
> // Following section loops through the data to develop
> // all the buy/sell points for back testing purposes
> pLo = IIf(pivotLow==1, L, 1000000);
> pHi = IIf(pivotHigh==1, H, 0);
> By = 0; Sel = 0;
> CountHi = 0; CountLo = 0;
>
> for (i=3; i<BarCount; i++)
> {
> if (plo[i]<1000000)
> {
> CountLo = CountLo + 1;
> j = i;
> while (plo[j-0]>=plo[i] AND j>2)
> {
> pplo[j-1] = plo[j-1];
> j = j - 1;
> }
> dLine = IIf(CountLo<2 OR pplo[j]>plo[i],Null,
> LineArray(j,pplo[j],i,plo[i],1));
> exit = 0;
> for (k = i+2; exit==0 AND k<BarCount; k++)
> {
> SellQualifier = IIf(Q_On, C[k-1]>C[k-2] OR (2*C[k-1] -
> IIf(H[k-1]<C[k-2], C[k-2], H[k-1])) >
> dLine[k-1] OR O[k] < dLine[k], 1);
> if (L[k]<dLine[k] AND SellQualifier)
> {
> Sel[k] = 1;
> exit = 1;
> for (m=k+1; m<BarCount; m++)
> {
> Sel[m] = 0;
> }
> }
> }
> }
>
> if (phi[i]>0)
> {
> CountHi = CountHi + 1;
> j = i;
> while (phi[j-0]<=phi[i] AND j>2)
> {
> pphi[j-1] = phi[j-1];
> j = j - 1;
> }
> sLine = IIf(CountHi<2 OR pphi[j]<phi[i],Null,
> LineArray(j,pphi[j],i,phi[i],1));
> exit = 0;
> for (k = i+2; exit==0 AND k<BarCount; k++)
> {
> BuyQualifier = IIf(Q_On, C[k-1]<C[k-2] OR (2*C[k-1] -
> IIf(L[k-1]>C[k-2], C[k-2], L[k-1])) <
> sLine[k-1] OR O[k] > sLine[k], 1);
> if (H[k]>sLine[k] AND BuyQualifier)
> {
> By[k] = 1;
> exit = 1;
> for (m=k+1; m<BarCount; m++)
> {
> By[m] = 0;
> }
> }
> }
> }
> }
>
> Buy = ExRem(By, Sel);
> Sell = ExRem(Sel, By);
>
> // Following section constructs the plots of the demand and
> // supply lines at the area of selection with the pole
> x1=SelectedValue(ValueWhen(pivotlow,BarIndex(),1));
> y1=SelectedValue(ValueWhen(pivotlow,L,1));
> x0=SelectedValue(ValueWhen(pivotlow AND L<y1,BarIndex(),1));
> y0=SelectedValue(ValueWhen(pivotlow AND L<y1,L,1));
> x3=SelectedValue(ValueWhen(pivothigh,BarIndex(),1));
> y3=SelectedValue(ValueWhen(pivothigh,H,1));
> x2=SelectedValue(ValueWhen(pivothigh AND H>y3,BarIndex(),1));
> y2=SelectedValue(ValueWhen(pivothigh AND H>y3,H,1));
>
> demandLine =IIf(x0==0,Null,LineArray(x0,y0,x1,y1,1));
> supplyLine =IIf(x2==0,Null,LineArray(x2,y2,x3,y3,1));
>
> Plot(IIf(Cum(1)<x3+extension, supplyLine, Null),"",colorWhite,
> styleLine|styleThick|styleNoRescale|styleNoLabel);
> Plot(IIf(Cum(1)<x1+extension, demandLine, Null),"",colorWhite,
> styleLine|styleThick|styleNoRescale|styleNoLabel);
>
> By = Cross(Cum(H>supplyline AND BarIndex()-1>x3 AND
> BuyQualifier),0);
> Sel = Cross(Cum(L<demandLine AND BarIndex()-1>x1 AND
> SellQualifier),0);
>
> PlotShapes((BarIndex()==x0 OR BarIndex()==x1)*
> shapeSmallCircle,colorWhite,0,L, -8);
> PlotShapes(Sell*shapeDownArrow,colorRed,0,H);
> PlotShapes(Sel*shapeDownArrow,colorLightOrange,0,H,-25);
>
> PlotShapes((BarIndex()==x2 OR BarIndex()==x3)*
> shapeSmallCircle,colorWhite,0,H,8);
> PlotShapes(Buy*shapeUpArrow,colorBrightGreen,0,L);
> PlotShapes(By*shapeUpArrow,colorAqua,0,L, -25);
>
> Title= Name()+" "+Date()+EncodeColor(colorWhite) +
> " Open "+WriteVal(Open, 1.3)+" Hi "+WriteVal(High,1.3)+
> " Lo "+WriteVal(Low,1.3)+" Close "+WriteVal(Close,1.3)+
> EncodeColor(colorRed)+" Sell =,"+WriteVal((y1-y0)/(x1-x0)+
> SelectedValue(DEMAndline),1.3)+EncodeColor(colorBrightGreen)+
> " Buy =,"+WriteVal((y3-y2)/(x3-x2)+
> SelectedValue(supplyline),1.3 )+
> "\n\\c03 Param Select Qualifiers and Days";
>
> GraphXSpace=14;
>
> //-----------------------------------------------------------------
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|