NexusFi: Find Your Edge


Home Menu

 





Help adding a Pivot Range to following code:


Discussion in MultiCharts

Updated
    1. trending_up 1,863 views
    2. thumb_up 0 thanks given
    3. group 2 followers
    1. forum 3 posts
    2. attach_file 0 attachments




 
Search this Thread

Help adding a Pivot Range to following code:

  #1 (permalink)
 olobay 
Montreal
 
Experience: Intermediate
Platform: MultiCharts
Broker: DeepDiscountTrading.com
Trading: CL
Posts: 364 since Jul 2011

Hi,

I am hoping that somebody will be able to help me. I would like to add a range around the Pivot in the code below. The math for that range is (yesterday's high + yesterday's low) /2. Then you subtract that from the pivot value (high+low+close)/3 and it gives you a value. Then you add that value to the pivot and you have an upper range. Then you subtract that value from the pivot to get the lower range. So the new study will plot exactly the same as the code below but will also plot 2 additional horizontal lines forming a pivot range.

Thanks.

 
Code
[LegacyColorValue = true]; 

{based on intraday data (is sometimes a little different than daily data, so won't match exact)}
{idea is that it will change each day @ "NewDayTM", to reflect the next days numbers.}
{..check the open/close values to verify the day it's showing. It seems to work}
{always posting 1 bar behind, since must be NO on "update value intra-bar"}

{The indicator has an input called PivotType. Use 3 or 4 as PivotType and you should get the Settlement Price, 
since when PivotType = 3 or 4, the CloseD function is used. The CloseD will return the settlement price. }

input: PivotType(0),
   BarsBack(60),
   ShowClose(1),
   ShowOpen(1),
   ShowHalfPivots(1),
   ShowLevel(0),
   DaysBack(1),
   NewDayTM(1510),
   RoundLevels(false),
   DecPlaces(2),
   SupResType(0);
   
var: theday(0);
var: Maxcnt(11);
array:
   TL[12](-1),Val[12](-1),
   Color[12](6),Label[12]("L"),FTextID[12](-1), TLabel[12](" ");

var: cnt(0),sdate(0),stime(0),fPivot(0),twOpen(0),theRange(0);

if lastbaronchart then begin

if time >= NewDayTM then theday = 0  else theday = 1;
theday = theday + DaysBack-1;
if theday <= 0 then begin 
   theday = 0;
   twOpen = 0;
end else twopen = theday-1;  {make sure this weeks open isn't <0}

{store weekly Open and Close that we care about}
Val[10] = CloseD(theday);
if PivotType >0 and PivotType <4 then Val[11] = OpenD(twopen) else Val[11] = OpenD(theday);

{calculate central pivot based on pivot type}{not sure how usefull some of these might be}
if      PivotType = 1 then fPivot = (HighD(theday) + LowD(theday) + Val[11]) /3
else if PivotType = 2 then fPivot = (HighD(theday) + LowD(theday) + Val[11] + Val[11]) /4
else if PivotType = 3 then fPivot = (HighD(theday) + LowD(theday) + Val[10] + Val[11]) /4
else if PivotType = 4 then fPivot = (HighD(theday) + LowD(theday) + Val[10] + Val[11]) /4
else fPivot = (HighD(theday) + LowD(theday) + Val[10]) /3; {default standard Pivot}

if SupResType = 1 then begin {seems like there is always a little different way to do these}
   theRange = (HighD(theday) - LowD(theday))/2;
   VAl[1] = fPivot;
   VAl[2] = fPivot + theRange; {R1}
   VAl[3] = fPivot - theRange; {S1}
   
   VAl[4] = VAl[2] + theRange; {R2}
   VAl[5] = VAl[3] - theRange; {S2}
   
   VAl[6] = VAl[4] + theRange; {R3}
   VAl[7] = VAl[5] - theRange; {S3}
   VAl[8] = VAl[6] + theRange; {R4}
   VAl[9] = VAl[7] - theRange; {S4}
end
else begin
   VAl[1] = fPivot;
   VAl[2] = fPivot + fPivot - LowD(theday); {R1}
   VAl[3] = fPivot + fPivot - HighD(theday); {S1}
   
   VAl[4] = fPivot + VAl[2] - VAl[3]; {R2}
   VAl[5] = fPivot - VAl[2] + VAl[3]; {S2}
   
   VAl[6] = fPivot + VAl[4] - VAl[3]; {R3}
   VAl[7] = fPivot - VAl[4] + VAl[3]; {S3}
   VAl[8] = fPivot + VAl[4] - VAl[5]; {R4}
   VAl[9] = fPivot - VAl[4] + VAl[5]; {S4}
end;

if RoundLevels then begin
   for cnt = 1 to 11 begin
      val[cnt] = roundInst(val[cnt]);
   end;
end;

Color[1] = Yellow;
Color[2] = Darkred;
Color[3] = Darkgreen;
Color[4] = Darkred;
Color[5] = Darkgreen;
Color[6] = Darkred;
Color[7] = Darkgreen;
Color[8] = Darkred;
Color[9] = Darkgreen;
Color[10] = Yellow;
Color[11] = DarkBrown;

TLabel[1] = "Pivot - ";
TLabel[2] = "R1 - ";
TLabel[3] = "S1 - ";
TLabel[4] = "R2 - ";
TLabel[5] = "S2 - ";
TLabel[6] = "R3 - ";
TLabel[7] = "S3 - ";
TLabel[8] = "R4 - ";
TLabel[9] = "S4 - ";
TLabel[10] = "Close - ";
TLabel[11] = "Open - ";
   

sdate = Date[BarsBack];
stime = Time[BarsBack];


for cnt= 1 to Maxcnt begin
   if cnt < 10 or (ShowClose <> 0 and cnt = 10) or (ShowOpen <> 0 and cnt = 11) then begin
      if TL[cnt] < 0 then begin {dosn't exist, create new TL}
         TL[cnt] = TL_New (sdate, stime, Val[cnt],
            date, time , Val[cnt]);
         TL_SetColor (TL[cnt], Color[cnt]);
         if cnt >= 10 then TL_SetStyle (TL[cnt], Tool_Dashed)
            else TL_SetStyle (TL[cnt], Tool_Dashed);
      end;
      if TL_Exist(TL[cnt]) then begin {exist}
         TL_SetEnd (TL[cnt], date, time , Val[cnt]);
         TL_SetBegin (TL[cnt], sdate, stime, Val[cnt]); {reset TL}
      end;
   
      {do text stuff}
      if FTextID[cnt] < 0 then begin  {is new}
         FTextID[cnt] = Text_New(sdate, stime, Val[cnt], "zzz");
         Text_SetStyle(FTextID[cnt], 1, 2);
         Text_SetColor(FTextID[cnt], Color[cnt]);
      end;
      if FTextID[cnt] >= 0 then begin  {already exists}
         Text_SetLocation(FTextID[cnt], sdate, stime, Val[cnt]);
         Text_SetString(FTextID[cnt],TLabel[cnt] + NumToStr(Val[cnt], DecPlaces) + " " );
      end;
   end; {count < 6, etc.}
end; {cnt}

Array: HalfTL[9](-1),HalfVal[9](0),HTextID[9](-1);

if ShowHalfPivots <> 0 then begin
   HalfVal[1] = ((Val[4] - Val[2])/2) + Val[2];
   HalfVal[2] = ((Val[2] - Val[1])/2) + Val[1];
   HalfVal[3] = ((Val[1] - Val[3])/2) + Val[3];
   HalfVal[4] = ((Val[3] - Val[5])/2) + Val[5]; {s1-s2}
   HalfVal[5] = ((Val[4] - Val[6])/2) + Val[6];
   HalfVal[6] = ((Val[5] - Val[7])/2) + Val[7]; {s2-s3}
   HalfVal[7] = ((Val[6] - Val[8])/2) + Val[8];
   HalfVal[8] = ((Val[7] - Val[9])/2) + Val[9]; {s3-s4}

   if RoundLevels then begin
      for cnt = 1 to 8 begin
         HalfVal[cnt] = roundInst(HalfVal[cnt]);
      end;
   end;

   for cnt= 1 to 8 begin
      if HalfTL[cnt] < 0 then begin {dosn't exist, create new TL}
         HalfTL[cnt] = TL_New (sdate, stime, HalfVal[cnt],
            date, time , HalfVal[cnt]);
         TL_SetColor (HalfTL[cnt], DarkGray);
         TL_SetStyle (HalfTL[cnt], Tool_Dashed);
      end;
      if TL_Exist(HalfTL[cnt]) then begin {exist}
         TL_SetEnd (HalfTL[cnt], date, time , HalfVal[cnt]);
         TL_SetBegin (HalfTL[cnt], sdate, stime, HalfVal[cnt]); {reset TL}
      end;
      
      {do text stuff}
      if HTextID[cnt] < 0 then begin  {is new}
         HTextID[cnt] = Text_New(sdate, stime, HalfVal[cnt], "zzz");
         Text_SetStyle(HTextID[cnt], 1, 2);
         Text_SetColor(HTextID[cnt], DarkGray);
      end;
      if HTextID[cnt] >= 0 then begin  {already exists}
         Text_SetLocation(HTextID[cnt], sdate, stime, HalfVal[cnt]);
         Text_SetString(HTextID[cnt], NumToStr(HalfVal[cnt], DecPlaces) + " " );
      end;
   end; {cnt}
end; {ShowHalfPivots}

end; {last bar}

if ShowLevel > 0 and ShowLevel <= 4 then begin
   noplot(2);
   noplot(3);
   if ShowLevel = 1 then begin
      Plot2[-1](Val[2] + .5,"h");
      Plot3[-1](Val[3] - .5,"l");
   end
   else if ShowLevel = 2 then begin
      Plot2[-1](Val[4] + .5,"h");
      Plot3[-1](Val[5] - .5,"l");
   end
   else if ShowLevel = 3 then begin
      Plot2[-1](Val[6] + .5,"h");
      Plot3[-1](Val[7] - .5,"l");
   end
   else if ShowLevel = 4 then begin
      Plot2[-1](Val[8] + .5,"h");
      Plot3[-1](Val[9] - .5,"l");
   end;

end;

Started this thread Reply With Quote

Can you help answer these questions
from other members on NexusFi?
Ninja Mobile Trader VPS (ninjamobiletrader.com)
Trading Reviews and Vendors
Better Renko Gaps
The Elite Circle
NexusFi Journal Challenge - April 2024
Feedback and Announcements
Futures True Range Report
The Elite Circle
Are there any eval firms that allow you to sink to your …
Traders Hideout
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Get funded firms 2023/2024 - Any recommendations or word …
60 thanks
Funded Trader platforms
37 thanks
NexusFi site changelog and issues/problem reporting
24 thanks
GFIs1 1 DAX trade per day journal
22 thanks
The Program
19 thanks
  #2 (permalink)
Bimi
London
 
Posts: 118 since Mar 2010
Thanks Given: 42
Thanks Received: 58

do you want someone to code it for you?

Reply With Quote
  #3 (permalink)
 olobay 
Montreal
 
Experience: Intermediate
Platform: MultiCharts
Broker: DeepDiscountTrading.com
Trading: CL
Posts: 364 since Jul 2011


I think I'd be able to figure it out but I'm not sure exactly where to add in the code that I want.

Started this thread Reply With Quote
  #4 (permalink)
Bimi
London
 
Posts: 118 since Mar 2010
Thanks Given: 42
Thanks Received: 58


olobay View Post
I think I'd be able to figure it out but I'm not sure exactly where to add in the code that I want.

you can add it att the end

Reply With Quote




Last Updated on September 18, 2012


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts