StochasticOscillator Summary The Stochastic Oscillator is a momentum indicator that aims to show price reversals by comparing the closing price to the price range.
Calculates the range between the high and low price during a given period of time. The current price is then expressed as a percentage of this range with 0% indicating the bottom of the range and 100% indicating the top of the range over this time period. Based on the theory that prices tend to close near the boundaries of the recent range.
Signature
public abstract interface StochasticOscillator
Namespace cAlgo.API.Indicators
Examples Example 1 Example 2
private StochasticOscillator _stochastic ;
protected override void Initialize ()
{
// Initialize the Stochastic Oscillator indicator
_stochastic = Indicators . StochasticOscillator ( kPeriods , kSlowing , dPeriods , maType );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 using cAlgo.API ;
using cAlgo.API.Indicators ;
namespace cAlgo.Robots
{
// This sample cBot shows how to use the Stochastic Oscillator indicator
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class StochasticOscillatorSample : Robot
{
private double _volumeInUnits ;
private StochasticOscillator _stochasticOscillator ;
[Parameter("Volume (Lots)", DefaultValue = 0.01)]
public double VolumeInLots { get ; set ; }
[Parameter("Stop Loss (Pips)", DefaultValue = 10)]
public double StopLossInPips { get ; set ; }
[Parameter("Take Profit (Pips)", DefaultValue = 10)]
public double TakeProfitInPips { get ; set ; }
[Parameter("Label", DefaultValue = "Sample")]
public string Label { get ; set ; }
public Position [] BotPositions
{
get
{
return Positions . FindAll ( Label );
}
}
protected override void OnStart ()
{
_volumeInUnits = Symbol . QuantityToVolumeInUnits ( VolumeInLots );
_stochasticOscillator = Indicators . StochasticOscillator ( 9 , 3 , 9 , MovingAverageType . Simple );
}
protected override void OnBar ()
{
if ( _stochasticOscillator . PercentK . HasCrossedAbove ( _stochasticOscillator . PercentD , 0 ) && _stochasticOscillator . PercentK . Last ( 1 ) <= 20 )
{
ClosePositions ( TradeType . Sell );
ExecuteMarketOrder ( TradeType . Buy , SymbolName , _volumeInUnits , Label , StopLossInPips , TakeProfitInPips );
}
else if ( _stochasticOscillator . PercentK . HasCrossedBelow ( _stochasticOscillator . PercentD , 0 ) && _stochasticOscillator . PercentK . Last ( 1 ) >= 80 )
{
ClosePositions ( TradeType . Buy );
ExecuteMarketOrder ( TradeType . Sell , SymbolName , _volumeInUnits , Label , StopLossInPips , TakeProfitInPips );
}
}
private void ClosePositions ( TradeType tradeType )
{
foreach ( var position in BotPositions )
{
if ( position . TradeType != tradeType ) continue ;
ClosePosition ( position );
}
}
}
}
Properties PercentD Summary
%D is 3 Period Exponential Moving Average of %K.
Signature
public abstract IndicatorDataSeries PercentD { get ;}
Return Value
IndicatorDataSeries
Examples
double result = _stochastic . PercentK [ index ];
PercentK Summary
Calculation of %K is 100 multiplied by the ratio of the closing price minus the lowest price over the last N periods over the highest price over the last N minus the lowest price over the last N periods.
Signature
public abstract IndicatorDataSeries PercentK { get ;}
Return Value
IndicatorDataSeries
Examples
double result = _stochastic . PercentD [ index ];
PersentsD Signature
public abstract IndicatorDataSeries PersentsD { get ;}
Return Value
IndicatorDataSeries
PersentsK Signature
public abstract IndicatorDataSeries PersentsK { get ;}
Return Value
IndicatorDataSeries