Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

peterpeter

Members
  • Content Count

    1
  • Joined

  • Last visited

Everything posted by peterpeter

  1. Inputs: // Parameters for ZigZag. depth(20), ExtDeviation(5), ExtBackstep(3), zigzagLinesColor(blue), // Parameters for Pesavento Patterns. ExtFractalEnd(10), // Number of Fractals (maximums and minimums), connected with Lines ExtDelta (0.04), // max Percent of difference from Pessavento numbers ExtLine (DarkBlue), ExtLine886 (lightgray), ExtNotFibo (darkgray), ExtPesavento (Yellow), ExtGartley886(Yellow); //=================================== Vars: bar_resolution(0), ExtLine_(0), colorPPattern(green), num_bar(0), HL(0), HLp(0), kk(0), kj(0), Angle(0), LowPrim(0), HighPrim(0), LowLast(0), HighLast(0), numLowPrim(0), numHighPrim(0), numLowLast(0), numHighLast(0), k(0), k1(0), k2(0), ki(0), kiPRZ(0), countLow1(0), countHigh1(0), shift(0), shift1(0), txtkk(""), countFr(0), countBarEnd(0), numBar(0), // For ZigZag back(0), lasthighpos(0), lastlowpos(0), res(0), curlow(0), curhigh(0), lasthigh(0), lastlow(0), i_var(0), j_var(0); Arrays: double zz[1000](0), double zzL[1000](0), double zzH[1000](0), _time[1000](0), MyText[64](""), number[64](0), numbertxt[64](""), numberGartley[64](0), numberMix[64](0); //---------------------------------------------------------------------// //---------------------------------------------------------------------// //---------------------------------------------------------------------// if bartype=0 and lastbaronchart then value1=text_new( date, time,close+5," Only for minute charts and above"); if bartype>=1 then begin if currentbar > 1000 then num_bar = 1000 else num_bar = currentbar; //print(date, " ",time," ", num_bar); for i_var = 0 to ( num_bar - 1 ) begin _time[i_var] = time[i_var]; end; if ( LastCalcTime = time ) and ( LastCalcDate = date ) then begin if ( currentbar > depth ) then begin if (ExtDelta<=0) then raiseruntimeerror("ExtDelta parameter should be >0 and <=1"); if (ExtDelta>1) then raiseruntimeerror("ExtDelta parameter should be >0 and <=1"); if ( ExtFractalEnd <= 0 ) then raiseruntimeerror("ExtFractalEnd parameter should be >=1"); number [0]=0.111; numbertxt [0]=".111"; number [1]=0.125; numbertxt [1]=".125"; numberMix [1]=1; number [2]=0.146; numbertxt [2]=".146"; number [3]=0.167; numbertxt [3]=".167"; number [4]=0.177; numbertxt [4]=".177"; number [5]=0.186; numbertxt [5]=".186"; number [6]=0.192; numbertxt [6]=".192"; number [7]=0.2; numbertxt [7]=".2"; number [8]=0.236; numbertxt [8]=".236"; numberMix [8]=1; number [9]=0.25; numbertxt [9]=".25"; number [10]=0.3; numbertxt [10]=".3"; number [11]=0.333; numbertxt [11]=".333"; number [12]=0.354; numbertxt [12]=".354"; number [13]=0.382; numbertxt [13]=".382"; numberGartley [13]=1; number [14]=0.447; numbertxt [14]=".447"; numberGartley [14]=1; number [15]=0.486; numbertxt [15]=".486"; number [16]=0.5; numbertxt [16]=".5"; numberGartley [16]=1; number [17]=0.526; numbertxt [17]=".526"; number [18]=0.577; numbertxt [18]=".577"; number [19]=0.618; numbertxt [19]=".618"; numberGartley [19]=1; number [20]=0.667; numbertxt [20]=".667"; number [21]=0.707; numbertxt [21]=".707"; numberGartley [21]=1; number [22]=0.764; numbertxt [22]=".764"; number [23]=0.786; numbertxt [23]=".786"; numberGartley [23]=1; number [24]=0.809; numbertxt [24]=".809"; number [25]=0.841; numbertxt [25]=".841"; number [26]=0.854; numbertxt [26]=".854"; numberMix [26]=1; number [27]=0.874; numbertxt [27]=".874"; number [28]=0.886; numbertxt [28]=".886"; numberGartley [28]=1; number [29]=1.0; numbertxt [29]="1."; numberGartley [29]=1; number [30]=1.128; numbertxt [30]="1.128"; numberGartley [30]=1; number [31]=1.236; numbertxt [31]="1.236"; number [32]=1.272; numbertxt [32]="1.272"; numberGartley [32]=1; number [33]=1.309; numbertxt [33]="1.309"; number [34]=1.414; numbertxt [34]="1.414"; numberGartley [34]=1; number [35]=1.5; numbertxt [35]="1.5"; number [36]=1.618; numbertxt [36]="1.618"; numberGartley [36]=1; number [37]=1.732; numbertxt [37]="1.732"; numberMix [37]=1; number [38]=1.75; numbertxt [38]="1.75"; number [39]=1.902; numbertxt [39]="1.902"; numberMix [39]=1; number [40]=2.0; numbertxt [40]="2."; numberGartley [40]=1; number [41]=2.058; numbertxt [41]="2.058"; number [42]=2.236; numbertxt [42]="2.236"; numberGartley [42]=1; number [43]=2.288; numbertxt [43]="2.288"; number [44]=2.5; numbertxt [44]="2.5"; number [45]=2.618; numbertxt [45]="2.618"; numberGartley [45]=1; number [46]=2.828; numbertxt [46]="2.828"; number [47]=3.0; number [48]=3.142; numbertxt [48]="3.142"; numberGartley [48]=1; number [49]=3.236; numbertxt [49]="3.236"; number [50]=3.33; numbertxt [50]="3.33"; number [51]=3.464; numbertxt [51]="3.464"; number [52]=3.618; numbertxt [52]="3.618"; numberGartley [52]=1; number [53]=4.0; numbertxt [53]="4."; number [54]=4.236; numbertxt [54]="4.236"; number [55]=4.472; numbertxt [55]="4.472"; number [56]=5.0; numbertxt [56]="5."; number [57]=5.2; numbertxt [57]="5.2"; number [58]=5.388; numbertxt [58]="5.388"; number [59]=5.657; numbertxt [59]="5.657"; number [60]=6.0; numbertxt [60]="6."; number [61]=6.854; numbertxt [61]="6.854"; number [62]=8.0; numbertxt [62]="8."; number [63]=9.0; numbertxt [63]="9."; value1 = 0; lasthighpos = -1; lastlowpos = -1; res = 0; curlow = -1; curhigh = -1; lasthigh = -1; lastlow = -1; // ZigZag plotting. Begin. for shift = ( num_bar - 1 ) downto 0 begin zz[shift] = 0; zzL[shift] = 0; zzH[shift] = 0; end; for shift = ( num_bar - depth ) downto 0 begin value1 = Low[ LowestBar(low, depth)[shift] ]; if (value1 = lastlow) then value1 = 0.0 else begin lastlow = value1; if ( ( Low[shift] - value1 ) > extdeviation*PointValue ) then value1 = 0.0 else begin for back = 1 to extbackstep begin res = zzL[shift+back]; if ( ( res <> 0 ) and ( res > value1 ) ) then zzL[shift+back] = 0.0; end; end; end; if ( Low[shift] = value1 ) then zzL[shift] = value1; value1 = High[ HighestBar(high, depth)[shift] ]; if ( value1 = lasthigh ) then value1 = 0.0 else begin lasthigh = value1; if ( ( value1 - High[shift] ) > extdeviation*pointValue ) then value1 = 0.0 else begin for back = 1 to extbackstep begin res = zzH[shift+back]; if ( ( res <> 0 ) and ( res < value1 ) ) then zzH[shift+back] = 0.0; end; end; end; if ( High[shift] = value1 ) then zzH[shift] = value1; end; lasthigh = -1; lasthighpos = -1; lastlow = -1; lastlowpos = -1; for shift = (num_bar - depth) downto 0 begin curlow = zzL[shift]; curhigh = zzH[shift]; if ( ( curlow = 0 ) and ( curhigh = 0 ) ) then //else begin if ( curhigh <> 0 ) then begin if ( lasthigh > 0 ) then begin if (lasthigh < curhigh ) then zzH[lasthighpos] = 0 else zzH[shift] = 0; end; if ( (lasthigh < curhigh) or (lasthigh < 0) ) then begin lasthigh = curhigh; lasthighpos = shift; end; lastlow = -1; end; if ( curlow <> 0 ) then begin if ( lastlow > 0 ) then begin if ( lastlow > curlow ) then zzL[lastlowpos] = 0 else zzL[shift] = 0; end; if ( ( curlow < lastlow ) or ( lastlow < 0 ) ) then begin lastlow = curlow; lastlowpos = shift; end; lasthigh = -1; end; end; end; for shift = num_bar - 1 downto 0 begin zz[shift] = zzL[shift]; if ( shift >= num_bar-depth ) then begin zzH[shift] = 0.0; zzL[shift] = 0.0; zz[shift] = 0.0; end else begin res = zzH[shift]; if ( res <> 0.0 ) then zz[shift] = res; end; end; // Check for humpbacks and their removing. Begin. vars: vel1(0), vel2(0), vel3(0), vel4(0), bar_(0), bar1(0), bar2(0), bar3(0), bar4(0), count_(0); for bar_ = ( num_bar - depth ) downto 0 begin if ( zz[bar_] <> 0 ) then begin count_ = count_ + 1; vel4 = vel3; bar4 = bar3; vel3 = vel2; bar3 = bar2; vel2 = vel1; bar2 = bar1; vel1 = zz[bar_]; bar1 = bar_; if ( count_>=3 ) then begin if ( ( vel3 < vel2 ) and ( vel2 < vel1 ) ) then begin zz[bar2] = 0; zzL[bar2] = 0; zzH[bar2] = 0; bar_ = bar3 + 1; end; if ( ( vel3 > vel2 ) and ( vel2 > vel1 ) ) then begin zz[bar2] = 0; zzL[bar2] = 0; zzH[bar2] = 0; bar_ = bar3 + 1; end; if ( ( vel2 = vel1 ) and ( vel1 <> 0 ) ) then begin zz[bar1] = 0; zzL[bar1] = 0; zzH[bar1] = 0; bar_ = bar3 + 1; end; end; end; end; // Check for humpbacks and their removing. End. value1 = 0; { i_var = 1; while(i_var > 0) begin i_var = tl_getfirst(1); tl_delete(i_var); end;} for shift = (num_bar - 1) downto 0 begin if zz[shift] <> 0 then begin if (value1 <> 0) then begin value11 = date[value2]; value12 = time[value2]; value13 = value1; value21 = date[shift]; value22 = time[shift]; value23 = zz[shift]; j_var = TL_new(value11, value12, value13, value21, value22, value23); tl_setcolor(j_var, zigzagLinesColor); //Plot1 [shift](value23); //Print(value11, " ",value12, " ",value13, " ",value21, " ",value22, " ",value23, " "); end; value1 = zz[shift]; value2 = shift; end; end; // ZigZag plotting. End. if ( ExtFractalEnd > 0) then begin k = ExtFractalEnd; for shift = 0 to num_bar begin if ( zz[shift] > 0 and zzH[shift] > 0 ) then begin if k > 0 then begin countBarEnd = shift; k = k - 1; end; end; end; end; // count Fractal ( count maximums and minimums ). Begin. countLow1 = 0; countHigh1 = 0; begin for shift = 0 to countBarEnd begin if (zzL[shift] > 0.0) then countLow1 = countLow1 + 1; if (zzH[shift] > 0.0) then countHigh1 = countHigh1 + 1; end; end; // count Fractal ( count maximums and minimums ). End. {i_var = 1; while(i_var > 0) begin i_var = text_getfirst(1); text_delete(i_var); end;} //+--------------------------------------------------------------------------+ //| printing Pessavento and 0.886 for maximums of ZigZag //+--------------------------------------------------------------------------+ numLowPrim = 0; numLowLast = 0; numHighPrim = 0; numHighLast = 0; LowPrim = 0.0; LowLast = 0.0; HighPrim = 0.0; HighLast = 0.0; Angle = -100; countFr = ExtFractalend; for k = 0 to ( num_bar - 1 ) begin if ( countHigh1 > 0 and countFr > 0 ) then begin if ( zzL[k] > 0.0 and ( zzL[k] < LowPrim or LowPrim = 0.0 ) and HighPrim > 0 and zzL[k] = zz[k] ) then begin LowPrim = Low[k]; numLowPrim = k; end; if ( zzH[k] > 0.0 and zzH[k] = zz[k] ) then begin if ( HighPrim > 0 ) then begin HighLast = High[k]; numHighLast = k; HL = HighLast - LowPrim; kj = (HighPrim-HighLast)*1000/(numHighLast-numHighPrim); if ( HL > 0 and ( Angle >= kj or Angle = -100 ) ) then begin Angle = kj; HLp = HighPrim - LowPrim; k1 = ceiling((numHighPrim+numHighLast)/2); kj = HLp/HL; ExtLine_ = ExtLine; if ( kj > 0.1 and kj < 9.36 ) then begin kk = kj; k2 = 1; ki = 0; colorPPattern = ExtNotFibo; ki = kiPRZ; condition1 = true; while (ki <= 63) and (condition1) begin if ( numberGartley[ki] > 0 ) then if ( absvalue((number[ki]-kj)/number[ki]) <= ExtDelta ) then begin kk = number[ki]; txtkk = numbertxt[ki]; k2 = -1; colorPPattern = ExtGartley886; condition1 = false; end else if ( numberMix[ki] > 0 ) then if ( absvalue((number[ki]-kj)/number[ki]) <= ExtDelta ) then begin kk = number[ki]; txtkk = numbertxt[ki]; k2 = -1; colorPPattern = ExtPesavento; condition1 = false; end; ki = ki + 1; end; if ( k2 < 0 ) then begin ExtLine_ = ExtLine886; i_var = text_new(d[k1], time[k1], (HighPrim+highlast)/2, txtkk); text_setcolor(i_var, colorPpattern); //text_setsize(i_var, 8); end else begin txtkk = numtostr(kk, 3); i_var = text_new(d[k1], time[k1], (HighPrim+highlast)/2, txtkk); text_setcolor(i_var, colorPpattern); //text_setsize(i_var, 8); end; i_var = tl_new(d[numHighLast], time[numHighLast], HighLast, d[numHighPrim], time[numHighPrim], HighPrim); tl_setstyle(i_var, 3); tl_setcolor(i_var, extline_); end; end; end else begin HighPrim = High[k]; numHighPrim = k; end; end; if ( k > countBarEnd ) then begin k = numHighPrim + 1; countHigh1 = countHigh1 - 1; countFr = countFr - 1; numLowPrim = 0; numLowLast = 0; numHighPrim = 0; numHighLast = 0; LowPrim = 0.0; LowLast = 0.0; HighPrim = 0.0; HighLast = 0.0; Angle = -100; end; end; end; //+-------------------------------------------------------------------------+ //| printing Pessavento and 0.886 for minimums of ZigZag //+-------------------------------------------------------------------------+ numLowPrim = 0; numLowLast = 0; numHighPrim = 0; numHighLast = 0; LowPrim = 0.0; LowLast = 0.0; HighPrim = 0.0; HighLast = 0.0; Angle = -100; countFr = ExtFractalend; for k = 0 to ( num_bar - 1 ) begin if ( countLow1 > 0 and countFr > 0 ) then begin if ( zzH[k] > HighPrim and LowPrim > 0 ) then begin HighPrim = High[k]; numHighPrim = k; end; if ( zzL[k] > 0.0 and zzL[k] = zz[k] ) then begin if ( LowPrim > 0 ) then begin LowLast = Low[k]; numLowLast = k; HL = HighPrim - LowLast; kj = (LowPrim-LowLast)*1000/(numLowLast-numLowPrim); if ( HL > 0 and ( Angle <= kj or Angle = -100)) then begin Angle = kj; HLp = HighPrim-LowPrim; k1 = ceiling((numLowPrim+numLowLast)/2); kj = HLp/HL; ExtLine_ = ExtLine; if ( kj > 0.1 and kj < 9.36) then begin kk = kj; k2 = 1; ki = 0; colorPPattern = ExtNotFibo; ki = kiPRZ; condition1 = true; while (ki <= 63) and (condition1) begin if ( numberGartley[ki] > 0 ) then if ( absvalue((number[ki]-kj)/number[ki]) <= ExtDelta ) then begin kk = number[ki]; txtkk = numbertxt[ki]; k2 = -1; colorPPattern = ExtGartley886; condition1 = false; end else if ( numberMix[ki] > 0 ) then if ( absvalue((number[ki]-kj)/number[ki]) <= ExtDelta ) then begin kk = number[ki]; txtkk = numbertxt[ki]; k2 = -1; colorPPattern = ExtPesavento; condition1 = false; end; ki = ki + 1; end; if ( k2 < 0 ) then begin ExtLine_ = ExtLine886; i_var = text_new(d[k1], time[k1], (lowprim+lowlast)/2, txtkk); text_setcolor(i_var, colorPpattern); //text_setsize(i_var, 8); end else begin txtkk = NumToStr(kk, 3); i_var = text_new(d[k1], time[k1], (lowprim+lowlast)/2, txtkk); text_setcolor(i_var, colorPpattern); //text_setsize(i_var, 8); end; i_var = tl_new(d[numlowlast], time[numlowlast], lowLast, d[numlowPrim], time[numlowPrim], lowPrim); tl_setstyle(i_var, 3); tl_setcolor(i_var, extline_); end; end; end else begin numLowPrim = k; LowPrim = Low[k]; end; end; if (k > countBarEnd) then begin k = numLowPrim + 1; countLow1 = countLow1 - 1; countFr = countFr - 1; numLowPrim = 0; numLowLast = 0; numHighPrim = 0; numHighLast = 0; LowPrim = 0.0; LowLast = 0.0; HighPrim = 0.0; HighLast = 0.0; Angle = -100; end; end; end; end; end; end; //end bartype
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.