Skip to content

Functions

Summary

This class contains valuable functions that apply to DataSeries.

Signature

1
public static class Functions

Namespace

cAlgo.API

Examples

 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
 //...
 SimpleMovingAverage sma;
 protected override void Initialize()
 {
     sma = Indicators.SimpleMovingAverage(source, period);
 }
 public override void Calculate(int index)
 {
     // IsRising returns true if the current value is greater
     // than the previous value in the data series
     if (Functions.IsRising(sma.Result))
     {
         //Do something
     }
     // IsFalling returns true if the current value is less
     // than the previous value in the data series
     else if(Functions.IsFalling(sma.Result))
     {
         // Do something else
     }
     else // sma is level
     {
         Do something else
     }
     //...
 }
 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
 using cAlgo.API;
 using cAlgo.API.Indicators;
 namespace cAlgo
 {
     // This sample shows how to use the data series functions
     [Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
     public class DataSeriesFunctionsSample : Indicator
     {
         private SimpleMovingAverage _smaFast, _smaSlow;
         protected override void Initialize()
         {
             _smaFast = Indicators.SimpleMovingAverage(Bars.ClosePrices, 9);
             _smaSlow = Indicators.SimpleMovingAverage(Bars.ClosePrices, 20);
         }
         public override void Calculate(int index)
         {
             if (_smaFast.Result.HasCrossedAbove(_smaSlow.Result, 1))
             {
                 // Fast MA crossed above slow MA
             }
             if (_smaFast.Result.HasCrossedBelow(_smaSlow.Result, 1))
             {
                 // Fast MA crossed below slow MA
             }
             if (_smaFast.Result.Maximum(10) > _smaSlow.Result.Maximum(10))
             {
                 // Fast MA last 10 values maximum is larger than slow MA last 10 values
             }
             if (_smaFast.Result.Minimum(10) < _smaSlow.Result.Minimum(10))
             {
                 // Fast MA last 10 values minimum is smaller than slow MA last 10 values
             }
             if (_smaFast.Result.IsFalling() && _smaSlow.Result.IsRising())
             {
                 // Fast MA is falling and slow MA is raising
                 // IsFalling and IsRising compares last two values of the data series
             }
             if (_smaFast.Result.Sum(10) > _smaSlow.Result.Sum(10))
             {
                 // Fast MA last 10 values sum is larger than slow MA last 109 values sum
             }
         }
     }
 }

Methods

IsRising

Summary

Checks if the last value in a dataseries is greater than the previous.

Signature

1
public static bool IsRising(DataSeries series)

Parameters

Name Type Description
series DataSeries Input dataseries

Return Value

bool

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 SimpleMovingAverage sma;
 //...
 public override void Calculate(int index)
 {
     if (Functions.IsRising(sma.Result))
     {
         //Do something
     }
     //May be invoked as an extension method
     if (sma.Result.IsRising())
     {
         //Do something
     }
 }
 //...

IsFalling

Summary

Checks if the last value in a dataseries is less than the previous

Signature

1
public static bool IsFalling(DataSeries series)

Parameters

Name Type Description
series DataSeries Input dataseries

Return Value

bool

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 SimpleMovingAverage sma;
 //...
 public override void Calculate(int index)
 {
     if (Functions.IsFalling(sma.Result))
     {
         //Do something
     }
     // May also be invoked as an extension method
     if (sma.Result.IsFalling())
     {
         //Do something
     }
 }

Maximum

Summary

Finds the maximum value in a dataseries for a given period.

Signature

1
public static double Maximum(DataSeries series, int period)

Parameters

Name Type Description
series DataSeries Input dataseries
period int Input period

Return Value

double

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 public override void Calculate(int index)
 {
     if(Functions.Maximum(sma.Result,20) > MarketSeries.Close[index])
     {
         //Do something
     }
     // May be invoked as an extension method
     if (sma.Result.Maximum(20) > MarketSeries.Close[index])
     {
         //Do something
     }
 }
1
 var maxHigh = MarketSeries.High.Maximum(periods);

Minimum

Summary

Finds the minimum of a dataseries for a given period.

Signature

1
public static double Minimum(DataSeries series, int period)

Parameters

Name Type Description
series DataSeries Input dataseries
period int Input period

Return Value

double

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 public override void Calculate(int index)
 {
     if(Functions.Minimum(sma.Result, 20) > MarketSeries.Close[index])
     {
         //Do something
     }
     // May be invoked as an extension method
     if (sma.Result.Minimum(20) > MarketSeries.Close[index])
     {
         //Do something
     }
 }
1
 var minLow = MarketSeries.Low.Minimum(periods);

HasCrossedAbove (2)

HasCrossedAbove (1 of 2)

Summary

Returns true, if dataseries1 has crossed above dataseries2, over the specified Period.

Remarks

HasCrossedAbove will compare the crossing dataseries to the crossed dataseries starting from the current value of the series going back the specified period. If period is zero only the current bar values will be compared. If period is one the current bar values will be compared as well as the previous. e.g. Functions.HasCrossedAbove(sma.Result, MarketSeries.Close, 0) will only compare the current values which are not completed until the close of the bar. It is not uncommon that the function will return true and by the end of the bar the two series will uncross.

Signature

1
public static bool HasCrossedAbove(DataSeries crossingSeries, DataSeries crossedSeries, int period)

Parameters

Name Type Description
crossingSeries DataSeries Crossing dataseries
crossedSeries DataSeries Crossed dataseries
period int Period for which to check for crossing

Return Value

bool

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 public override void Calculate(int index)
 {
     if(Functions.HasCrossedAbove(sma.Result, MarketSeries.Close, 0))
     {
         //Do something
     }
     // May be invoked as an extension method as well
     if(sma.Result.HasCrossedAbove(MarketSeries.Close, 0))
     {
         //Do something
     }
 }

HasCrossedAbove (2 of 2)

Summary

Checks if dataseries1 has crossed above value, sometime within the specified period.

Remarks

HasCrossedAbove will compare the crossing dataseries to the crossed dataseries starting from the current value of the series going back the specified period. If period is zero only the current bar values will be compared. If period is one the current bar values will be compared as well as the previous. e.g. Functions.HasCrossedAbove(sma.Result, value, 0) will only compare the current simple moving average series value which is not completed until the close of the bar. It is not uncommon that the function will return true and by the end of the bar the series will uncross.

Signature

1
public static bool HasCrossedAbove(DataSeries crossingSeries, double value, int period)

Parameters

Name Type Description
crossingSeries DataSeries Crossing dataseries
value double Price value to check if crossed
period int Period for which to check for crossing

Return Value

bool

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 public override void Calculate(int index)
 {
     var value = MarketSeries.Close[index - 1];
     if(Functions.HasCrossedAbove(sma.Result, value, 1)
     {
         //Do something
     }
     // May be invoked as an extension method as well
     if(sma.Result.HasCrossedAbove(MarketSeries.Close[index-1], 1))
     {
         //Do something
     }
 }

HasCrossedBelow (2)

HasCrossedBelow (1 of 2)

Summary

Returns true, if dataseries1 has crossed below dataseries2, over the specified Period.

Remarks

HasCrossedBelow will compare the crossing dataseries to the crossed dataseries starting from the current value of the series going back the specified period. If period is zero only the current bar values will be compared. If period is one the current bar values will be compared as well as the previous. e.g. Functions.HasCrossedBelow(sma.Result, MarketSeries.Close, 0) will only compare the current values which are not completed until the close of the bar. It is not uncommon that the function will return true and by the end of the bar the two series will uncross.

Signature

1
public static bool HasCrossedBelow(DataSeries crossingSeries, DataSeries crossedSeries, int period)

Parameters

Name Type Description
crossingSeries DataSeries Crossing dataseries
crossedSeries DataSeries Crossed dataseries
period int Period for which to check for crossing

Return Value

bool

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 public override void Calculate(int index)
 {
     if(Functions.HasCrossedBelow(sma.Result, MarketSeries.Close,0)
     {
         //Do something
     }
     // May be invoked as an extension method
     if(sma.Result.HasCrossedBelow(MarketSeries.Close, 0))
     {
         //Do something
     }
 }

HasCrossedBelow (2 of 2)

Summary

Checks if dataseries1 has crossed below the value, sometime within the specified period.

Remarks

HasCrossedBelow compares the crossing dataseries to the value starting from thecurrent value of the series going back the specified period.If period is zero, only the current bar value will be examined.If period is one, the current and previous bar value will be examined.e.g. Functions.HasCrossedAbove(sma.Result, value, 0)will only compare the current simple moving average series valuewhich is not completed until the close of the bar.It is not uncommon that the function will return true and by the end of the bar the series will uncross.

Signature

1
public static bool HasCrossedBelow(DataSeries crossingSeries, double value, int period)

Parameters

Name Type Description
crossingSeries DataSeries Crossing DataDeries
value double Price value to check if crossed
period int Period for which to check for crossing

Return Value

bool

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 public override void Calculate(int index)
 {
     if(Functions.HasCrossedBelow(sma.Result, MarketSeries.Close[index], 0)
     {
         //Do something
     }
     // May be invoked as an extension method as well
     if(sma.Result.HasCrossedBelow(MarketSeries.Close[index], 0))
     {
         //Do something
     }
 }

Sum

Summary

Calculates the sum of a dataseries, over the specified period.

Signature

1
public static double Sum(DataSeries series, int period)

Parameters

Name Type Description
series DataSeries DataSeries of which values are summed
period int Period of values that are summed prior to current index

Return Value

double

Examples

1
2
3
4
5
6
7
8
 SimpleMovingAverage sma;
 //...
 public override void Calculate(int index)
 {
     //The sum of the simple moving average series of the last 20 bars
     var sumSma = Functions.Sum(sma.Result, 20);
     //...
 }