Premier Stochastic Oscillator

M

manishji

New member
any help getting pso... its calculated as below.

%K = 100 X [(C – Ln) / (Hn – Ln)]

Where

  • C = the most recent closing price
  • n = the lookback period
  • Ln = the low of the n previous price bars
  • Hn = the highest price during the same n period

The premier stochastic oscillator normalizes the standard stochastic oscillator by applying a five-period double exponential smoothing average of the %K value, resulting in a symmetric scale of 1 to -1. The PSO calculation, then, is:

PSO = (exponential value (S) – 1) / (exponential value (S) + 1)

Where

  • S = 5-period double smoothed exponential EMA ((%K – 50) * .1)
  • %K = 8-period stochastic oscillator
 
H

horserider

Well-known member
VIP
Warehouse
This one ?

Code:
# // ========================== 
# // PREMIER STOCHASTIC 
# // Indicator 
# // ========================== 
# 
# Technical Analysis of Stocks & Commodities 
# August, 2008 
# Premier Stochastic Oscillator by Lee Leibfarth 
# pp 30 - 36 
# ported by R Houser 
# 
declare lower; 
 

 

# inputs: 
input Line1 = 0.9;
input Line2 = 0.2;
input StochLength = 8;
input Period = 25; 
 

 

# variables: 
# oFastK(0), 
# oFastD(0), 
# oSlowK(0), 
# oSlowD(0), 
# Length(0), 
# NormStoch(0), 
# SmoothStoch(0), 
# Premier(0); 
 

 

# Value1 = Stochastic( h, l, c, StochLength, 1, 3, 1, oFastK, oFastD, oSlowK, oSlowD); 
def oFastK = 100 * ( ( close - Lowest( low, StochLength ) ) / ( Highest( high, StochLength ) - Lowest( low, StochLength ) ) );
def oFastD = Average( oFastK, 1 );
def oSlowK = oFastD;
def oSlowD = Average( oSlowK, 3 ); 
 

 

# Length = iff(Period < 0, 1, squareroot(Period)); 
def Length = if Period < 0 then 1 else Sqrt( Period ); 
 

 

# NormStoch = .1 * (oslowK - 50); 
def NormStoch = 0.1 * ( oSlowK - 50 ); 
 

 

# SmoothStoch = xaverage(xaverage(NormStoch, Length), Length); 
def SmoothStoch = ExpAverage( ExpAverage( NormStoch, Length ), Length );
 

 

plot Premier = ( Exp( 1 * SmoothStoch ) - 1 ) / ( Exp( 1 * SmoothStoch ) + 1 );
        Premier.SetDefaultColor( Color.BLUE );

plot pLine1 = Line1;
        pLine1.SetDefaultColor( Color.BLACK );
plot pLine2 = Line2;
        pLine2.SetDefaultColor( Color.GRAY );
plot nLine1 = -1 * Line1;
        nLine1.SetDefaultColor( Color.BLACK );
plot nLine2 = -1 * Line2;
        nLine2.SetDefaultColor( Color.GRAY );
 
H

horserider

Well-known member
VIP
Warehouse
@manishji The study was provided. Besides I do not see any particular advantage. The stochastic values can be changed to give what I believe are better signals than the Premier Stochastic. Try playing with stochastic and see what you can get.
 
T

Trading51

Member
VIP
Warehouse
@horserider anyway of knowing the the exactly what exponential value is, thanks
 
T

Trading51

Member
VIP
Warehouse
This is the Premier Stochastics from the Stocks & Commodities August 6th 2008 By Lee Leibfarth, Does anyone you know exactly what exponential value is?
 
T

Trading51

Member
VIP
Warehouse
Do you know exactly what exponential value is? for the above premier stochastic
 
H

horserider

Well-known member
VIP
Warehouse
Here are the exponential calculations ;
def SmoothStoch = ExpAverage( ExpAverage( NormStoch, Length ), Length );
plot Premier = ( Exp( 1 * SmoothStoch ) - 1 ) / ( Exp( 1 * SmoothStoch ) + 1 );

I believe 3 is on of the stochastic lengths. Not sure, did not write it and do not use it.
 
T

Trading51

Member
VIP
Warehouse
Here are the exponential calculations ;
def SmoothStoch = ExpAverage( ExpAverage( NormStoch, Length ), Length );
plot Premier = ( Exp( 1 * SmoothStoch ) - 1 ) / ( Exp( 1 * SmoothStoch ) + 1 );

I believe 3 is on of the stochastic lengths. Not sure, did not write it and do not use it.
thanks for taking the time
 
T

Trading51

Member
VIP
Warehouse
Here are the exponential calculations ;
def SmoothStoch = ExpAverage( ExpAverage( NormStoch, Length ), Length );
plot Premier = ( Exp( 1 * SmoothStoch ) - 1 ) / ( Exp( 1 * SmoothStoch ) + 1 );

I believe 3 is on of the stochastic lengths. Not sure, did not write it and do not use it.
Was wondering if you could turn the Premier line into a histogram thats green above .2 and red below.2? thanks have a great weekend
 
H

horserider

Well-known member
VIP
Warehouse
Ok Color coded line or remove the comment from front of this line of code if you prefer a histogram display.
#Premier.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);

Code:
# // ========================== 
# // PREMIER STOCHASTIC 
# // Indicator 
# // ========================== 
# 
# Technical Analysis of Stocks & Commodities 
# August, 2008 
# Premier Stochastic Oscillator by Lee Leibfarth 
# pp 30 - 36 
# ported by R Houser 
#  Changed to histogram display by Horserider 10/11/219

declare lower;   

# inputs: 
input Line1 = 0.9;
input Line2 = 0.2;
input StochLength = 8;
input Period = 25; 
 

# variables: 
# oFastK(0), 
# oFastD(0), 
# oSlowK(0), 
# oSlowD(0), 
# Length(0), 
# NormStoch(0), 
# SmoothStoch(0), 
# Premier(0); 
 

# Value1 = Stochastic( h, l, c, StochLength, 1, 3, 1, oFastK, oFastD, oSlowK, oSlowD); 
def oFastK = 100 * ( ( close - Lowest( low, StochLength ) ) / ( Highest( high, StochLength ) - Lowest( low, StochLength ) ) );
def oFastD = Average( oFastK, 1 );
def oSlowK = oFastD;
def oSlowD = Average( oSlowK, 3 ); 
 

# Length = iff(Period < 0, 1, squareroot(Period)); 
def Length = if Period < 0 then 1 else Sqrt( Period ); 
 

# NormStoch = .1 * (oslowK - 50); 
def NormStoch = 0.1 * ( oSlowK - 50 ); 
 

# SmoothStoch = xaverage(xaverage(NormStoch, Length), Length); 
def SmoothStoch = ExpAverage( ExpAverage( NormStoch, Length ), Length );
 

plot Premier = ( Exp( 1 * SmoothStoch ) - 1 ) / ( Exp( 1 * SmoothStoch ) + 1 );
      

plot pLine1 = Line1;
        pLine1.SetDefaultColor( Color.BLACK );
plot pLine2 = Line2;
        pLine2.SetDefaultColor( Color.GRAY );
plot nLine1 = -1 * Line1;
        nLine1.SetDefaultColor( Color.BLACK );
plot nLine2 = -1 * Line2;
        nLine2.SetDefaultColor( Color.GRAY );

#Premier.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Premier.SetLineWeight(3);
Premier.DefineColor("Positive and Up", Color.GREEN);
Premier.DefineColor("Positive and Down", Color.DARK_GREEN);
Premier.DefineColor("Negative and Down", Color.RED);
Premier.DefineColor("Negative and Up", Color.DARK_RED);
Premier.AssignValueColor(if Premier >= 0 then if Premier >Premier[1] then Premier.color("Positive and Up") else Premier.color("Positive and Down") else if Premier < Premier[1] then Premier.color("Negative and Down") else Premier.color("Negative and Up"));
 
T

Trading51

Member
VIP
Warehouse
Ok Color coded line or remove the comment from front of this line of code if you prefer a histogram display.
#Premier.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);

Code:
# // ==========================
# // PREMIER STOCHASTIC
# // Indicator
# // ==========================
#
# Technical Analysis of Stocks & Commodities
# August, 2008
# Premier Stochastic Oscillator by Lee Leibfarth
# pp 30 - 36
# ported by R Houser
#  Changed to histogram display by Horserider 10/11/219

declare lower;  

# inputs:
input Line1 = 0.9;
input Line2 = 0.2;
input StochLength = 8;
input Period = 25;


# variables:
# oFastK(0),
# oFastD(0),
# oSlowK(0),
# oSlowD(0),
# Length(0),
# NormStoch(0),
# SmoothStoch(0),
# Premier(0);


# Value1 = Stochastic( h, l, c, StochLength, 1, 3, 1, oFastK, oFastD, oSlowK, oSlowD);
def oFastK = 100 * ( ( close - Lowest( low, StochLength ) ) / ( Highest( high, StochLength ) - Lowest( low, StochLength ) ) );
def oFastD = Average( oFastK, 1 );
def oSlowK = oFastD;
def oSlowD = Average( oSlowK, 3 );


# Length = iff(Period < 0, 1, squareroot(Period));
def Length = if Period < 0 then 1 else Sqrt( Period );


# NormStoch = .1 * (oslowK - 50);
def NormStoch = 0.1 * ( oSlowK - 50 );


# SmoothStoch = xaverage(xaverage(NormStoch, Length), Length);
def SmoothStoch = ExpAverage( ExpAverage( NormStoch, Length ), Length );


plot Premier = ( Exp( 1 * SmoothStoch ) - 1 ) / ( Exp( 1 * SmoothStoch ) + 1 );
     

plot pLine1 = Line1;
        pLine1.SetDefaultColor( Color.BLACK );
plot pLine2 = Line2;
        pLine2.SetDefaultColor( Color.GRAY );
plot nLine1 = -1 * Line1;
        nLine1.SetDefaultColor( Color.BLACK );
plot nLine2 = -1 * Line2;
        nLine2.SetDefaultColor( Color.GRAY );

#Premier.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Premier.SetLineWeight(3);
Premier.DefineColor("Positive and Up", Color.GREEN);
Premier.DefineColor("Positive and Down", Color.DARK_GREEN);
Premier.DefineColor("Negative and Down", Color.RED);
Premier.DefineColor("Negative and Up", Color.DARK_RED);
Premier.AssignValueColor(if Premier >= 0 then if Premier >Premier[1] then Premier.color("Positive and Up") else Premier.color("Positive and Down") else if Premier < Premier[1] then Premier.color("Negative and Down") else Premier.color("Negative and Up"));
I have the code up but not sure what you mean remove the comment #Premier.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);, not code savy so not sure what to do
 
markos

markos

Well-known member
VIP
Warehouse

Top