| 
 You probably are using a great deal of data.  If 
so, limit the number of bars used to 1000 or so which runs very 
quickly. 
  
Bill 
  ----- Original Message -----  
  
  
  Sent: Tuesday, September 02, 2008 7:41 
  PM 
  Subject: [amibroker] why my Amibroker 
  hangs and freezes when i use Demark demand formula?? 
  
  Hi all.. whenever I use the DeMark Demand formula with 
  Amibroker, the program freez and hang... it sometimes takes more than 5 
  minutes to upload... is there any 
  soultion....
  _SECTION_BEGIN("DeMark's Demand "); /* DeMark's Demand 
  and Supply Line Trading System - Original code by marmal417, Johsun, 
  Dimitris Tsokakis with variations by Bill Barnard, 2/19/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", 3,1,3,1);
  /* 
  Following line allows the use of DeMark's three qualifiers for a legitimate 
  breakout. */ Q_On = Param("Use Qualifier", 1,0,1,1);
  extension = 20; 
  // length of demand/supply line 
  extension
  Plot(C,"",colorWhite,styleCandle | 
  styleNoLabel);
  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; SellPrice[k]=ShortPrice[k]=dLine[k]; 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; BuyPrice[k] = CoverPrice[k]= 
  sLine[k]; exit = 1; for (m=k+1; m<BarCount; m++) { By[m] = 
  0; } } } } }
  Buy = Cover = ExRem(By, Sel); Sell = 
  Short = ExRem(Sel, By);
  SetTradeDelays(0, 0, 0, 0); eq = Equity( 0, 
  -2 );
  /* 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);
  BuyQualifier 
  = IIf(Q_On, Ref(C, -1)<Ref(C,-2) OR (2*Ref(C,-1) 
  - IIf(Ref(L,-1)>Ref(C,-2), Ref(C,-2), Ref(L,-1))) 
  < Ref(supplyline, -1) OR O > supplyline, 1); SellQualifier = 
  IIf(Q_On, Ref(C, -1)>Ref(C,-2) OR (2*Ref(C,-1) 
  - IIf(Ref(H,-1)<Ref(C,-2), Ref(C,-2), Ref(H,-1))) 
  > Ref(demandline, -1) OR O < demandline, 1);
  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);
  // buy and hold simulation for plotting in IB Short = Cover 
  =0; Buy = Status("firstbarintest"); Sell = 
  Status("lastbarintest"); SetTradeDelays(0,0,0,0); PositionSize = 
  -100; ApplyStop(0,0,0,0); ApplyStop(1,0,0,0); ApplyStop(2,0,0,0); bh 
  = Equity( 0, -2 );
  /* Following section sets limits for StyleOwnScale 
  plots. A typical plot statement would be: Plot(xxxx, "xxxx", 0, 
  styleOwnScale, LL2(xxxx, yyyy, 5), UL1(xxxx, yyyy, 20)); where the 5 and 
  the 20 represent the percent of freespace below and above the plots of xxxx 
  and yyyy */ function LL2 (Variable1, Variable2, FreespacePercent) // 
  lower { barpresent = Status("barvisible"); Hii = 
  IIf(LastValue(Highest(Variable1*barpresent)) 
  > LastValue(Highest(Variable2*barpresent)), LastValue(Highest(Variable1*barpresent)), LastValue(Highest(Variable2*barpresent))); Loo 
  = 
  IIf(LastValue(Lowest((Variable1-Hii)*barpresent)+Hii)< LastValue(Lowest((Variable2-Hii)*barpresent)+Hii), LastValue(Lowest((Variable1-Hii)*barpresent)+Hii), LastValue(Lowest((Variable2-Hii)*barpresent)+Hii)); range 
  = Hii -Loo; result = Loo - 0.01*FreespacePercent*range; return 
  result; } function UL2 (Variable1, Variable2, FreespacePercent) // 
  upper { barpresent = Status("barvisible"); Hii = 
  IIf(LastValue(Highest(Variable1*barpresent)) 
  > LastValue(Highest(Variable2*barpresent)), LastValue(Highest(Variable1*barpresent)), LastValue(Highest(Variable2*barpresent))); Loo 
  = 
  IIf(LastValue(Lowest((Variable1-Hii)*barpresent)+Hii)< LastValue(Lowest((Variable2-Hii)*barpresent)+Hii), LastValue(Lowest((Variable1-Hii)*barpresent)+Hii), LastValue(Lowest((Variable2-Hii)*barpresent)+Hii)); range 
  = Hii -Loo; result = Loo + range / (1 - 0.01*FreespacePercent); return 
  result; }
  Plot( bh,"Buy&Hold", colorWhite, styleOwnScale, 
  LL2(bh, eq, 5), UL2(bh, eq, 70)); Plot(eq, "Trading Result", 
  colorRed, styleOwnScale, LL2(bh, eq, 5), UL2(bh, eq, 70));
  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\\c03Use Param to select Qualifiers and Days \n 
  "+ EncodeColor(colorWhite)+" Buy and Hold = "+WriteVal(bh, 
  1.3)+ EncodeColor(colorRed)+"\n Trading Result = "+WriteVal(eq, 
  1.3);
  GraphXSpace=24;
 
  _SECTION_END();
 
  ------------------------------------
  Please 
  note that this group is for discussion between users only.
  To get 
  support from AmiBroker please send an e-mail directly to  SUPPORT {at} 
  amibroker.com
  For NEW RELEASE ANNOUNCEMENTS and other news always check 
  DEVLOG: http://www.amibroker.com/devlog/
  For 
  other support material please check also: http://www.amibroker.com/support.html Yahoo! 
  Groups Links
  <*> To visit your group on the web, go 
  to:     http://groups.yahoo.com/group/amibroker/
  <*> 
  Your email settings:     Individual Email | 
  Traditional
  <*> To change settings online go 
  to:     http://groups.yahoo.com/group/amibroker/join     
  (Yahoo! ID required)
  <*> To change settings via 
  email:     mailto:amibroker-digest@xxxxxxxxxxxxxxx 
       mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
  <*> 
  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/ 
  
    
   No virus found in this incoming message. Checked by AVG - http://www.avg.com  Version: 8.0.169 / Virus 
  Database: 270.6.15/1648 - Release Date: 9/2/2008 5:29 
PM
  
__._,_.___
  
Please note that this group is for discussion between users only. 
 
To get support from AmiBroker please send an e-mail directly to  
SUPPORT {at} amibroker.com 
 
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: 
http://www.amibroker.com/devlog/ 
 
For other support material please check also: 
http://www.amibroker.com/support.html 
  
     
    
 
      
   
__,_._,___
 |