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
概要
データシリーズの最後の値が前の値より大きいかどうかをチェックします。
シグネチャ
| public static bool IsRising(DataSeries series)
|
パラメータ
戻り値
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
概要
データシリーズの最後の値が前の値より小さいかどうかをチェックします。
シグネチャ
| public static bool IsFalling(DataSeries series)
|
パラメータ
戻り値
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
概要
指定された期間におけるデータシリーズの最大値を見つけます。
シグネチャ
| public static double Maximum(DataSeries series, int period)
|
パラメータ
戻り値
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])
{
//何かを実行
}
}
|
| var maxHigh = MarketSeries.High.Maximum(periods);
|
Minimum
概要
指定された期間におけるデータシリーズの最小値を見つけます。
シグネチャ
| public static double Minimum(DataSeries series, int period)
|
パラメータ
戻り値
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])
{
//何かを実行
}
}
|
| 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つのシリーズが再度交差することも珍しくありません。
シグネチャ
| public static bool HasCrossedAbove(DataSeries crossingSeries, DataSeries crossedSeries, int period)
|
パラメータ
戻り値
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つのシリーズが再度交差することも珍しくありません。
シグネチャ
| public static bool HasCrossedAbove(DataSeries crossingSeries, double value, int period)
|
パラメータ
戻り値
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)
|
パラメータ
戻り値
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);
//...
}
|