[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Code Question



PureBytes Links

Trading Reference Links

I am including a code that I got from this list a while back it is for a
Gann Type indicator for TS 4
Question? Is there a way to have the swing value of each swing
calculated in points , to provide for , the ability to find average
points per (n) swings , this would then be used to set values for
oscillators and profit targets .
Thanks


!Gann_Swing

inputs: filter(2), stats(0);
vars  : xBar(0) , xHigh(0), xLow(0), xCount(0), xSwitch(0);
vars  : xSkip(0), xConfirm(0);
vars  : pBar(0) , pHigh(0), pLow(0);
vars  : bFirst(1);

if xSwitch = 0  then
 begin
  if High >= xHigh then
   begin
    xHigh  = High;
    xLow   = Low;
    xBar   = BarNumber;
    xSkip  = 0;
   end
  else
   begin
    xSkip  = xSkip + 1;
    if xSkip      >= filter then
     begin
       xConfirm    = 1;
       xCount      = 1;
       while xCount < filter
        begin
         if (Low[xCount] <= Low[xCount-1]) or (xLow <= Low[filter-1])
then
           begin
            xCount   = filter;
            xConfirm = 0;
           end;
         xCount      = xCount + 1;
        end;
       if xConfirm   = 1 then
        begin
          xSwitch = 1;
          if stats = 0 then
             plot1[BarNumber-xBar](xHigh,"Swing")
          else
           begin
            if bFirst = 0 then
             begin
               plot2[BarNumber-xBar](xHigh-pLow,"Range");
               plot3[BarNumber-xBar](xBar -pBar,"Duration");
             end;
             bFirst = 0;
           end;
          pHigh   = xHigh;
          pLow    = xLow;
          pBar    = xBar;
          xHigh   = High;
          xLow    = Low;
          xBar    = BarNumber;
          xSkip   = 0;
        end;
     end;
   end;
 end
else
 begin
  if Low <= xLow then
   begin
    xHigh = High;
    xLow  = Low;
    xBar  = BarNumber;
    xSkip = 0;
   end
  else
   begin
    xSkip = xSkip + 1;
    if xSkip >= filter then
     begin
      xConfirm = 1;
      xCount   = 1;
      while xCount < filter
        begin
         if (High[xCount] >= High[xCount-1]) or (xHigh >=
High[filter-1]) then
          begin
           xCount   = filter;
           xConfirm = 0;
          end;
         xCount   = xCount + 1;
        end;
      if xConfirm = 1 then
       begin
         xSwitch = 0;
         if stats = 0 then
           plot1[BarNumber-xBar](xLow,"Swing")
         else
          begin
           plot2[BarNumber-xBar](pHigh-xLow,"Range");
           plot3[BarNumber-xBar](xBar -pBar,"Duration");
          end;
         pHigh   = xHigh;
         pLow    = xLow;
         pBar    = xBar;
         xLow    = Low;
         xHigh   = High;
         xBar    = BarNumber;
         xSkip   = 0;
       end;
     end;
   end;
 end;

if ((date = lastcalcdate) and (time = lastcalctime)) then
 begin
  if xSwitch = 0 then
   begin
     if stats = 0 then
       plot1[BarNumber-xBar](xHigh,"Swing")
     else
       begin
         plot2[BarNumber-xBar](xHigh-pLow,"Range");
         plot3[BarNumber-xBar](xBar -pBar,"Duration");
       end;
   end
  else
   begin
     if stats = 0 then
       plot1[BarNumber-xBar](xLow,"Swing")
     else
       begin
         plot2[BarNumber-xBar](pHigh-xLow,"Range");
         plot3[BarNumber-xBar](xBar -pBar,"Duration");
       end;
   end;
 end;