cBotsでカスタムインジケーターを使用する方法

cBots (自動売買)

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

新しいcBotの作成

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

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

まず、新しいcBotを作成し、それを’SMA Robot’などの情報を示す名前に変更します。cBotはSMAが強気に転じたときに買い取引を開始し、SMAが弱気に転じたときに売り取引を開始します。cBotはポジションをヘッジせず、新しいシグナルが発生するたびに反対のポジションを閉じます。

インジケーターの初期化

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

  1. Manage References‘ボタンをクリックします。
  2. 新しく表示されたウィンドウで参照したいインジケーターを見つけます。
  3. 参照したいインジケーターの横にあるチェックボックスをオンにします。
  4. Apply‘をクリックします。

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

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();
}

バックテストの実施

いつものように、ボットが私たちの代わりに取引する前に、徹底的にバックテストを行います。同じことを行うには、インスタンスを追加してから’Backtesting‘タブに切り替えます。バックテストの詳細については、ここをクリックしてください。

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

cBotsの使用と開発の詳細については、ドキュメントの他のセクションを参照し、新しいビデオが公開されたときに通知を受け取るためにYouTubeチャンネルを購読してください。

YouTubeチャンネルを購読

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

新しいcBotの作成

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

目次

このページについて