コンテンツにスキップ

cBot でインジケーターを使用する方法

この記事と対応する動画では、カスタムインジケーターを参照して cBot で使用する方法を紹介します。 そのために、サンプルのカスタムインジケーターの出力を使用して取引操作を実行する取引アルゴリズムを開発します。

新しい cBot を作成する

現在マシンにインストールされているすべてのカスタムインジケーターを確認するには、Algo アプリに切り替えて Indicators タブに進みます。

ここに1つ以上のカスタムインジケーターが表示されている場合、それらを他のアルゴリズムで自由に使用できます。 このチュートリアルでは、Sample SMA インジケーターを使用し、単純移動平均の方向に基づいて取引する cBot を開発します。

まず、新しい cBot を作成 し、「SMA Robot」などの情報量のある名前に変更します。 SMA が強気になったときに買い取引を実行し、SMA が弱気になったときに売り取引を実行します。 この cBot はポジションをヘッジしないため、新しいシグナルごとに反対のポジションが決済されます。

インジケーターを初期化する

カスタムインジケーターに関しては、まずカスタムインジケーターへの参照を追加する必要があります。 カスタムインジケーターを参照するには、次の手順を実行します。

  1. Manage references ボタンをクリックします。
  2. 新しく開いたウィンドウで参照したいインジケーターを探します。
  3. 参照したいインジケーターの横にあるチェックボックスを選択します。
  4. 適用をクリックします。

インジケーターが参照された後、そのタイプのインスタンス変数を作成できます。

1
SampleSMA _sma;

注意

インジケーターのタイプは、インジケーターのクラス名と同じである必要があります。 これは、インジケーターのファイル名とは異なる場合があります。

次のステップは、OnStart() メソッドでインジケーターを初期化することです。 ただし、その前に、カスタム SMA インジケーターで使用される期間を設定できるパラメーターを cBot に追加します。

1
2
[Parameter(DefaultValue = 14)]
public int Periods { get; set; }

Indicators.GetIndicator<>() メソッドを使用して、参照しているカスタムインジケーターを初期化できます。 インジケーターのタイプを定義し、インジケーターのパラメーターをカンマで区切って渡す必要があります。

注意

パラメーターは、インジケータークラスで宣言された順序で渡す必要があります。

この場合、タイプは SampleSMA であり、このインジケーターのソース値(この場合はバーの終値)と Period パラメーターを渡します。

1
_sma = Indicators.GetIndicator<SampleSMA>(Bars.ClosePrices, Periods);

取引ロジックを実装する

インジケーターが初期化されたら、取引ロジックを実装できます。 カスタム SMA インジケーターは、移動平均値を Results コレクションに保存します。 Results コレクションには、IsRising()IsFalling() という2つの便利なメソッドがあります。 これらのメソッドを使用して、インジケーターの結果が上昇しているか下降しているかを確認できます。

これらのメソッドを使用して、取引条件を実装します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {        

    }
    else if(_sma.Result.IsFalling())
    {

    }
}

if ステートメントを記述します。 移動平均が上昇している場合、すべての売りポジションを決済し、買いポジションを開きます。 移動平均が下降している場合、すべての買いポジションを決済し、売りポジションを開きます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {
        Close(TradeType.Sell);
        Open(TradeType.Buy);
    }
    else if(_sma.Result.IsFalling())
    {
        Close(TradeType.Buy);
        Open(TradeType.Sell);            
    }
}

コードでは、API がデフォルトで提供していない2つの新しいメソッドを使用しました。 Open() メソッドは、定義された方向と数量に基づいて新しいポジションを開きます。 Close() メソッドは、定義された方向のすべてのポジションを決済します。

Open() メソッドの定義方法は以下の通りです。

1
2
3
4
5
private void Open(TradeType tradeType)
{
    if(Positions.Count == 0)
        ExecuteMarketOrder(tradeType, SymbolName, Volume, InstanceId);
}

Open() メソッド内で注文を実行するには、Volume パラメーターも追加する必要があります。

1
2
[Parameter(DefaultValue = 10000)]
public int Volume { get; set; }

あとは、Close() メソッドを定義するだけです。

1
2
3
4
5
private void Close(TradeType tradeType)
{
    foreach (var position in Positions.Where(p => p.TradeType == tradeType))
        position.Close();
}

バックテストの実施

いつものように、cBotに代わって取引を行う前に、しっかりとバックテストを行います。 これを行うには、インスタンスを追加してからバックテストタブに切り替えます。

cBotをさらにテストするために、参照したカスタムインジケーターをインスタンスがアタッチされているチャートに追加し、ポジションのエントリーポイントがインジケーターの出力と一致するかどうかを確認します。

cBotの使用と開発についてさらに学びたい場合は、ドキュメントの他のセクションを自由に閲覧し、新しい動画が公開された際に通知を受け取るためにYouTubeチャンネルに登録してください。

この記事と付随する動画では、cBotでカスタムインジケーターを参照して使用する方法を紹介します。 そのために、事前に作成されたカスタムインジケーターの出力を使用して取引操作を行う取引アルゴリズムを開発します。

新しいcBotの作成

現在マシンにインストールされているすべてのカスタムインジケーターを確認するには、Algoアプリケーションに切り替えて「インジケーター」に進みます。