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.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

clbradley

Need Code for W %R with 2 HMAs for TS?

Recommended Posts

I know Larry Williams used W %R with moving averages to win Futures Championships. However, I'm not sure how to use the basic W %R code and add two Hull moving averages, one fast, one slow, in the code. You can overlay in Tradestation 1 or many moving averages on an indicator by scaling it on the same sub-graph as the indicator, and changing scale of the MAs to no axis. I don't think it's has the same effect as plotting the HMAs into the code, rather than scaling them on no axis. Thanks for any help.

 

Curtis

Share this post


Link to post
Share on other sites

This should do what you are looking for. I dont have TS, but I do have OEC and got it compile in there. I had to add a couple functions that you will probably not need, but no big deal. I didnt do anything with coloring, that's a pretty basic thing. Hope this is what you were looking for.

 

inputs: 
RLength( 14 ), 
OverSold( 20 ), 
OverBought( 80 ), 
price(Close), 
length1(20),
Length2(40);

variables:
PctR(0), HMA1(0), HMA2(0);

PctR = PercentR( RLength ) ;
HMA1= jtHMA(PctR, length1);
HMA2=jtHMA(PctR,length2);

Plot1( PctR, "%R" ) ;
Plot2( OverBought, "OverBot" ) ;
Plot3( OverSold, "OverSld" ) ;
Plot4(HMA1, "HMA1");
Plot5(HMA2, "HMA2");




#function jtHMA

Inputs: price(NumericSeries), length(NumericSimple);
Vars: halvedLength(0), sqrRootLength(0);


if ((ceiling(length / 2) - (length / 2)) <= 0.5) then
halvedLength = ceiling(length / 2)
else
halvedLength = floor(length / 2);

if ((ceiling(SquareRoot(length)) - SquareRoot(length)) <= 0.5) then
sqrRootLength = ceiling(SquareRoot(length))
else
sqrRootLength = floor(SquareRoot(length));

Value1 = 2 * WAverage(price, halvedLength);
Value2 = WAverage(price, length);
Value3 = WAverage((Value1 - Value2), sqrRootLength);

jtHMA = Value3;




#function PercentR
inputs: Length( numericsimple ) ;
variables: HH( 0 ), Divisor( 0 ) ;

HH = Highest( High, Length ) ;
Divisor = HH - Lowest( Low, Length ) ;

if Divisor <> 0 then 
PercentR = 100 - ( ( HH - Close ) / Divisor ) * 100
else
PercentR = 0 ;




#function WAverage
inputs: 
Price( numericseries ), 
Length( numericsimple ) ; { will get divide-by-zero error if Length = 0 }

variables: 
WtdSum( 0 ), 
CumWt( 0 ) ;

WtdSum = 0 ;
for Value1 = 0 to Length - 1 
begin
WtdSum = WtdSum + ( Length - Value1 ) * Price[Value1] ;
end ;
CumWt = ( Length + 1 ) * Length * .5 ;
WAverage = WtdSum / CumWt ;

 

mh4yly.png

%R wtih 2 HMA.txt

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

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