関数

cBots (自動売買)

概要

このクラスには、DataSeriesに適用される有用な関数が含まれています。

シグネチャ

1
public static class Functions

 

名前空間

cAlgo.API

 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がtrueを返すのは、現在の値がデータシリーズの前の値より大きい場合
     if (Functions.IsRising(sma.Result))
     {
         //何かを実行
     }
     // IsFallingがtrueを返すのは、現在の値がデータシリーズの前の値より小さい場合
     else if(Functions.IsFalling(sma.Result))
     {
         // 別の操作を実行
     }
     else // smaが水平の場合
     {
         別の操作 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
 {
     // このサンプルでは、データシリーズの関数の使用方法を示します。
     [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))
             {
                 // 高速MAが低速MAを上抜けした
             }
             if (_smaFast.Result.HasCrossedBelow(_smaSlow.Result, 1))
             {
                 // 高速MAが低速MAを下抜けした
             }
             if (_smaFast.Result.Maximum(10) > _smaSlow.Result.Maximum(10))
             {
                 // 高速MAの過去10本の最大値が、低速MAの過去10本の最大値よりも大きい
             }
             if (_smaFast.Result.Minimum(10) < _smaSlow.Result.Minimum(10))
             {
                 // 高速MAの過去10本の最小値が、低速MAの過去10本の最小値よりも小さい
             }
             if (_smaFast.Result.IsFalling() && _smaSlow.Result.IsRising())
             {
                 // 高速MAが下降し、低速MAが上昇している
                 // IsFallingとIsRisingはデータシリーズの最後の2つの値を比較します
             }
             if (_smaFast.Result.Sum(10) > _smaSlow.Result.Sum(10))
             {
                 // 高速MAの過去10本の合計が、低速MAの過去10本の合計よりも大きい
             }
         }
     }
 }

メソッド

IsRising

概要

データシリーズの最後の値が前の値より大きいかどうかをチェックします。

シグネチャ

1
public static bool IsRising(DataSeries series)

 

パラメータ

名前説明
seriesDataSeries入力データシリーズ

戻り値

bool

 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))
     {
         //何かを実行
     }
     //拡張メソッドとしても呼び出すことができます
     if (sma.Result.IsRising())
     {
         //何かを実行
     }
 }
 //...

IsFalling

概要

データシリーズの最後の値が前の値より小さいかどうかをチェックします。

シグネチャ

1
public static bool IsFalling(DataSeries series)

 

パラメータ

名前説明
seriesDataSeries入力データシリーズ

戻り値

bool

 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))
     {
         //何かを実行
     }
     //拡張メソッドとしても呼び出すことができます
     if (sma.Result.IsFalling())
     {
         //何かを実行
     }
 }

Maximum

概要

指定された期間におけるデータシリーズの最大値を見つけます。

シグネチャ

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

 

パラメータ

名前説明
seriesDataSeries入力データシリーズ
periodint指定期間

戻り値

double

 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])
     {
         //何かを実行
     }
     // 拡張メソッドとしても呼び出すことができます
     if (sma.Result.Maximum(20) > MarketSeries.Close[index])
     {
         //何かを実行
     }
 }
1
 var maxHigh = MarketSeries.High.Maximum(periods);

Minimum

概要

指定された期間におけるデータシリーズの最小値を見つけます。

シグネチャ

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

 

パラメータ

名前説明
seriesDataSeries入力データシリーズ
periodint指定期間

戻り値

double

 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])
     {
         //何かを実行
     }
     // 拡張メソッドとしても呼び出すことができます
     if (sma.Result.Minimum(20) > MarketSeries.Close[index])
     {
         //何かを実行
     }
 }
1
 var minLow = MarketSeries.Low.Minimum(periods);

HasCrossedAbove (2)

HasCrossedAbove (1 of 2)

概要

dataseries1がdataseries2を指定された期間内で上回った場合、trueを返します。

備考

HasCrossedAboveは、指定された期間の間、交差したデータシリーズの現在の値から遡って比較します。期間が0の場合、現在のバーの値のみが比較されます。期間が1の場合、現在のバーと前のバーの値が比較されます。例えば、Functions.HasCrossedAbove(sma.Result, MarketSeries.Close, 0)は、バーが閉じるまで完了しない現在の値のみを比較します。バーの終了時点で2つのシリーズが再度交差することも珍しくありません。

シグネチャ

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

 

パラメータ

名前説明
crossingSeriesDataSeries交差するデータシリーズ
crossedSeriesDataSeries交差されたデータシリーズ
periodint交差を確認する期間

戻り値

bool

 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))
     {
         //何かを実行
     }
     // エクステンションメソッドとしても呼び出すことができます
     if(sma.Result.HasCrossedAbove(MarketSeries.Close, 0))
     {
         //何かを実行
     }
 }

HasCrossedAbove (2 of 2)

概要

dataseries1が指定された期間内に特定の値を上回った場合を確認します。

備考

HasCrossedAboveは、交差するデータシリーズと値を指定された期間で比較します。期間が0の場合、現在のバーの値のみを比較します。期間が1の場合、現在のバーと前のバーの値が比較されます。例えば、Functions.HasCrossedAbove(sma.Result, value, 0)は、バーが閉じるまで完了しない現在の単純移動平均シリーズの値のみを比較します。バーの終了時点で2つのシリーズが再度交差することも珍しくありません。

シグネチャ

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

 

パラメータ

名前説明
crossingSeriesDataSeries交差するデータシリーズ
valuedouble交差を確認する値
periodint交差を確認する期間

戻り値

bool

 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)
     {
         //何かを実行
     }
     //拡張メソッドとしても呼び出すことができます
     if(sma.Result.HasCrossedBelow(MarketSeries.Close[index], 0))
     {
         //何かを実行
     }
 }

Sum

概要

指定された期間にわたって、データシリーズの合計を計算します。

シグネチャ

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

 

パラメータ

名前説明
seriesDataSeries合計されるデータシリーズ
periodint現在のインデックスまでに合計される期間

戻り値

double

1
2
3
4
5
6
7
8
 SimpleMovingAverage sma;
 //...
 public override void Calculate(int index)
 {
     //直近20本のバーの単純移動平均の合計
     var sumSma = Functions.Sum(sma.Result, 20);
     //...
 }
目次

このページについて