Indicators【cAlgo API】
5年以上前の記事です。内容が古くなっている可能性があります。
組み込みインジケータへのアクセッサ
IndicatorsAccessorインターフェース
組み込みインジケータを取得するためのインターフェースです。
public interface IIndicatorsAccessor
実体オブジェクトはRobotのプロパティのIndicatorsのみです。ここではつまりIndicatorsプロパティの使い方を説明します。
メソッド
(インジケーター型) インジケーター型名(パラメーターの羅列)
組込インジケーターを取得します。基本の使い方参照。
(インジケーター型) GetIndicator<インジケーター型>(パラメーターの羅列)
カスタムインジケーターを取得したいときに。MT4のiCustomにあたるものです。あらかじめカスタムインジケーターを参照に追加しておく必要があります。
基本の使い方
Indicatorsのメンバメソッド、インジケータ名そのままのメソッドで取得して、インジケータ名そのままの型に格納して、結果を.Result[barIndex]のように取り出します。わかりにくいと思うので例を示します
たとえば移動平均線を取得して、その結果をつかってゴールデンクロスしてるかどうか見てみましょう。
// 移動平均格納用変数
private MovingAverage _ma200;
private MovingAverage _ma75;
protected override void OnStart() {
// 200本移動平均線と75本移動平均線を取得する
_ma200 = Indicators.MovingAverage(Bars.ClosePrices, 200, MovingAverageType.Simple);
_ma75 = Indicators.MovingAverage(Bars.ClosePrices, 75, MovingAverageType.Simple);
}
protected override void OnBar() {
// 直前のBarのインデックスとその一つ前のBarのインデックスを変数に入れておく
int lastIndex = Bars.Count - 2;
int preIndex = lastIndex - 1;
// ゴールデンクロスをかどうか つまり
// 直前75本移動平均 よりも 直前200本移動平均が上 で 一つ前の75本移動平均 は 一つ前の200本移動平均より下かどうか
if(_ma75.Result[lastIndex] > _ma200.Result[lastIndex] && _ma75.Result[preIndex] < _ma200.Result[preIndex]) {
// 例:買い注文を送る
ExecuteMarketOrder(TradeType.Buy, SymbolName, 10000);
}
}OnStart()での初期化時にIndicatorsのMovingAverageというメソッドで移動平均線のオブジェクトを取得し、MovingAverage型に格納してます。
このようにインジケータ名のメソッドで取得し、インジケータ名の型に格納する形をとります。なお、初期化時に取得しておけば、リアルタイムで自動的に_ma75と_ma200も更新されます。メソッドの引数はMovinAverageの場合(基準となる価格のコレクション、期間、移動平均のタイプ)です。
OnBar()で値を使うときは.Resultプロパティからインデックスを指定してアクセスしています。結果が一つしかないインジケータは.Resultですが、結果が2つ以上ある場合は別の名前になります。例えばストキャスティクスの場合は.PercentDと.PercentKというようにわかりやすい名前がついてます。
メソッドの引数にしろ、結果にアクセスするプロパティにしろ、VisualStudioを使っていればインテリセンスが教えてくれるので迷うことはありません。使い方調べるにはIndicators.インジケータ名 で呼び出してみるのが手っ取り早いです。
GetIndicatorの使い方
自作インジケーターやcTrader Forum、当ブログなどからダウンロードしたインジケータをcBot内で使いたい場合は、まず参照に追加するという作業が必要になります。VisualStudioで開く前に組み込み環境で行ってしまいましょう。
ManageReferencesをクリックしてIndicatorsから読み込みたいインジケーターにチェックいれてApplyするだけです。
これで準備完了です。いつも通りVisualStudioで開いてください。
この通り、SampleEnvelopesCloudが使えるようになりました。
SampleEnvelopesCloud indi = Indicators.GetIndicator<SampleEnvelopesCloud>(14, 0.1);こんな風に使います。引数には外部パラメータを羅列するような形です。この場合はPeriodとdeviation。
インジケーターのソースコードがあればParameter属性の付いた変数を上から順に設定していくだけです。ソースがなければ設定画面から推測してください。若干使いにくさを感じますが、MT4のiCustomも似たようなもんだった気がします。
あとは組み込みインジケータ取得した時と同じです。.Resultかなんかの名前のメンバで結果が取り出せます。結果を表す変数名はソースコードがあればOutput属性のついた変数の名前、なければインテリセンスから探してください。
組み込みインジケータ一覧(IndicatorsAccesserのメンバ一覧)
cTraderのver3.8時点で67種類の組み込みインジケータがあります。結構マイナーなのがある一方、え?あれがないの?みたいに思うこともあります。とりあえず一覧にしておきます。有名なのだけ一般的と思われる名前入れときました。
| AverageTrueRange | ATR |
| BollingerBands | ボリンジャーバンド |
| DirectionalMovementSystem | DMIとADX |
| ExponentialMovingAverage | 指数移動平均線 |
| IchimokuKinkoHyo | 一目均衡表 |
| MacdCrossOver | MACD |
| MacdHistogram | MACDヒストグラム |
| MovingAverage | 移動平均線 |
| ParabolicSAR | パラボリックSAR |
| RelativeStrengthIndex | RSI |
| SimpleMovingAverage | 単純移動平均線 |
| StandardDeviation | 標準偏差 |
| StochasticOscillator | スロー?ストキャスティクス |
| WeightedMovingAverage | 加重移動平均線 |
| WilliamsPctR | ウィリアムス%R |
| AcceleratorOscillator | |
| AccumulativeSwingIndex | |
| Alligator | |
| Aroon | |
| AverageDirectionalMovementIndexRating | |
| AwesomeOscillator | |
| CenterOfGravity | |
| ChaikinMoneyFlow | |
| ChaikinVolatility | |
| CommodityChannelIndex | |
| CyberCycle | |
| DetrendedPriceOscillator | |
| DonchianChannel | |
| EaseOfMovement | |
| FractalChaosBands | |
| Fractals | |
| HighMinusLow | |
| HistoricalVolatility | |
| HullMovingAverage | |
| KeltnerChannels | |
| LinearRegressionForecast | |
| LinearRegressionIntercept | |
| LinearRegressionRSquared | |
| LinearRegressionSlope | |
| MassIndex | |
| MedianPrice | |
| MomentumOscillator | |
| MoneyFlowIndex | |
| NegativeVolumeIndex | |
| OnBalanceVolume | |
| PolynomialRegressionChannels | |
| PositiveVolumeIndex | |
| PriceOscillator | |
| PriceROC | |
| PriceVolumeTrend | |
| RainbowOscillator | |
| Supertrend | |
| SwingIndex | |
| TimeSeriesMovingAverage | |
| TradeVolumeIndex | |
| TriangularMovingAverage | |
| Trix | |
| TrueRange | |
| TypicalPrice | |
| UltimateOscillator | |
| VerticalHorizontalFilter | |
| Vidya | |
| VolumeOscillator | |
| VolumeROC | |
| WeightedClose | |
| WellesWilderSmoothing | |
| WilliamsAccumulationDistribution |
組み込みインジケーターはもちろんチャート画面から追加することもできるので、どんなインジケーターか知りたい場合はコードで呼び出すよりもまずは実際にチャートに表示してみましょう。
MovinAverageType列挙型
Indicatorsで組み込みインジケーターを取得しようとすると結構頻繁に求められるのがこの型の引数です。移動平均の計算方法を表します。
| Simple | 単純移動平均 |
| Exponential | 指数移動平均 |
| Weighted | 加重移動平均 |
| Hull | ハル移動平均(加重移動平均を滑らかにしたもの) |
| TimeSeries | TimeSeries移動平均(線形回帰をもとにした移動平均) |
| Triangular | 三角移動平均(期間の真ん中の加重を大きくした移動平均) |
| VIDYA | 可変インデックス動的平均(相場に応じて期間を自動で変更する指数移動平均) |
| WilderSmoothing | ワイルダーの移動平均(ほぼ期間を長くした指数移動平均と同じ) |