cAlgo API リファレンス

Indicators【cAlgo API】

2020年10月22日

組み込みインジケータへのアクセッサ

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 ワイルダーの移動平均(ほぼ期間を長くした指数移動平均と同じ)

 

-cAlgo API リファレンス
-,

© 2021 cTrader's Life Powered by AFFINGER5