5分でcTrader用のcBotを作成する方法

この記事と対応する動画では、cTrader AlgoでcBotを迅速に作成する方法について説明します。今回作成するcBotは、’三兵線と三羽烏‘と呼ばれるシンプルなトレーディング戦略を実装します。この戦略について詳しくは、ナレッジベースで学べます。

手順に従う前に、公式サイトからcTrader Desktopアプリケーションをダウンロードしてインストールしてください。起動して、左側のパネルからcTrader Algoセクションに移動します。’Algo‘タブをクリックすると、cTrader Algoセクションが表示されます。

新しいcBotを追加

新しいcBotを作成するには、’新規‘ボタンをクリックします。次に、’空白‘を選択し、選択を確認します。

新しいcBot‘という名前で新しい項目がcBotのリストに追加されます。このボットを選択すると、右側のコードエディターウィンドウに開始するためのコードテンプレートが表示されます。

次のステップは、新しいcBotの名前を変更することです。右クリックして’名前変更‘を選択するか、F2キーを押します。新しい名前として’三兵線と三羽烏‘を使用します。完了したら、Enterキーを押します。これで新しいcBotが正常に作成され、戦略のコーディングを開始する準備が整いました。

cBotの設定を追加

トレーディング戦略を実装する前に、基本的なcBotのパラメータとメソッドを確認します。また、ドキュメントを参照して、さまざまなパラメータとメソッドが何をするのかを確認できます。

  • cBotのパラメータは、取引量やストップロス/テイクプロフィット距離などの設定可能な属性を定義します。
  • cBotのメソッドは、特定のイベントが発生したときにcBotがどのように動作するかを定義します。cTrader cBotを開発する際に処理する必要がある4つの主なイベントがあり、それぞれがcTraderによって提供される4つの異なるメソッドで処理されます。これらのメソッドはOnStart()OnTick()OnBar()、およびOnStop()です。OnBar()メソッドはデフォルトのコードテンプレートには含まれていないことに注意してください。

次の表は、これらの4つのメソッドを詳細に定義しています。

メソッド名定義
OnStart()このメソッドはcBotインスタンスが操作を開始したときにトリガーされます。インジケーター、カウンター、イベントハンドラー、タイマーなど、cBotで使用する変数を初期化するために使用されます。
OnTick()このメソッドは、cBotインスタンスが実行されているトレーディングチャートの各インカミングティックごとにトリガーされます。OnTick()メソッドの中で、新しいティックが到着したときに実行する必要があるカスタムエントリーおよびエグジット条件やその他の補助機能をプログラムできます。
OnBar()このメソッドはOnTick()メソッドに似ていますが、cBotが実行されているチャートに新しいバーが描画されたときにのみトリガーされます。OnTick()と同様に、新しいバーが形成されるときに実行する必要があるカスタムエントリーおよびエグジット条件やその他の機能をプログラムするために使用できます。
OnStop()このメソッドはcBotインスタンスが停止したときにトリガーされます。ポジションをクローズするなどの最終操作を実行するために使用されます。

トレーディングロジックを追加

次に、トレーディング戦略のコードを追加します。cBotは、チャートに3つの緑のバーが形成されたときに’買い‘ポジションを開き、3つの連続する赤いバーがあるときに’売り‘ポジションを開く必要があります。

まず、cBotのパラメータを定義する必要があります。これらのパラメータは、cTrader UIから完全にカスタマイズ可能です。cBotに3つのパラメータを定義します。

  1. 各取引のボリューム。
  2. ピップスのストップロス。
  3. ピップスのテイクプロフィット。

次のコードをクラス宣言の後の中括弧のすぐ下にあるコードエディタに貼り付けます(public class NewcBot : Robot)。

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

次に、トレーディング戦略のロジックを実装する必要があります。次のコードをOnBar()メソッドに貼り付けます。このメソッドは、新しいバーが形成されるたびに呼び出されます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//三兵線
if(Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) > Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) > Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Buy, SymbolName, Volume, "", StopLoss, TakeProfit);
}
            
//三羽烏
if(Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) < Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) < Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Sell, SymbolName, Volume, "", StopLoss, TakeProfit);
}

次に、コードを詳しく見てみましょう。cTraderはチャートの履歴バーにアクセスできるため、直近の3つのバーがすべて緑であるか、すべて赤であるかを確認できます。上記のOnBar()メソッドでは、まず直近の3つのバーがすべて緑であったかどうかを確認します。次に、これらのバーがすべて赤であったかどうかを評価します。

いずれかの条件が真である場合、ExecuteMarketOrder()メソッドを使用してマーケットオーダーを出します。このメソッドは、取引方向、シンボル、取引量、ストップロス、およびテイクプロフィットなど、いくつかの入力(引数)を取ります。

今回の場合、オーダーの方向(TradeType.BuyTradeType.Sell)はトレーディング戦略の条件によって定義されます。シンボル名は、cBotが実行されているチャートから直接取得されます(SymbolName)。取引量(Volume)、ストップロス(Stop Loss)、およびテイクプロフィット(TakeProfit)はすべて定義したcBotパラメータから取得されます。

cBotをビルドして実行

次に、cBotが正常にビルドされるかどうかを確認する必要があります。デフォルトでは、ビルド結果ウィンドウはコードエディタのすぐ下に配置されています。表示されない場合は、cTrader UIの最上部のバーにある’レイアウト‘ボタンをクリックし、’ビルド結果‘を選択します。このアクションのキーボードショートカットはCtrl + Wです。

その後、cTrader UIの最上部のバーにある’ビルド‘ボタンを押します。あるいは、cBotを右クリックし、表示されたメニューで’ビルド‘をクリックするか、Ctrl + Bキーを押します。

Image title

ビルドが成功すると、コードエディタの下部にある’ビルド結果’領域に緑色のメッセージが表示されます。

Image title

逆に、コードに問題がある場合は、赤色のメッセージとすべてのビルドエラーの詳細な要約が表示されます。

Image title

cBotが正常にビルドされた後、使用を開始できます。トレーディングチャートにインスタンスを追加するだけです。これを行うには、cBotの名前の右側にある’プラス’アイコンをクリックします。実行できるすべてのシンボルのリストが表示されます。

Image title

ここではEURUSDを選択します。シンボルを選択すると、新しいcBotインスタンスが追加されます。cBotのリストにシンボル名と取引したいタイムフレームが表示されます。

また、トレーディングチャートのすぐ下の’パラメータ‘タブに、コーディングしたパラメータが表示されます。

Image title

これらのパラメータは自由に変更できますが、デフォルト値のままにしておくこともできます。

さらに、EURUSDチャートの上部に’再生‘ボタンが表示されます。

Image title

このボタンを押してインスタンスを起動します。あるいは、リスト内のインスタンスの右側にも同様のボタンがあります。どちらのボタンでもcBotを起動できます。

いずれかのボタンをクリックすると、オレンジ色に変わり、cBotのインスタンスが起動したことを意味します。’ログ‘タブには、cBotが起動したことを示す新しい行も表示されます。

cBotをバックテスト

実際のトレーディングチャートでポジションを開くまでには時間がかかる場合があります。歴史データで動作を確認するために、クイックバックテストを実行します。’バックテスト‘タブを開きます。

Image title

画面上部のカレンダーのスライダーを使用して、バックテストに使用したい日付範囲を選択します。’ビジュアルモード‘フラグを有効にして、バックテストの結果をリアルタイムで追跡します。

ここではスライダーを1か月前に戻します。選択した歴史データでcBotを起動するには、’再生‘ボタンをクリックします。

その後、トレーディングチャートの直下、’パラメータ‘セクションの右側のタブで、新しいポジションが開かれたり閉じられたりするのが見えるはずです。具体的には、コーディングした2つのパターンのいずれかを検出すると、cBotが’買い‘注文または’売り‘注文を出します。

バックテストを実行することで、cBotが正しく動作しているかどうかを分析するのに役立ちます。

まとめ

この記事が、cTraderを使用して自動トレーディングロボットを作成する方法を示すのに役立ったことを願っています。詳細については、豊富なドキュメントを参照するか、フォーラムに質問を投稿してください。

また、新しい動画を投稿したときに通知を受け取るために、YouTubeチャンネルを登録してください。

私たちのYouTubeチャンネルを登録してください

目次

このページについて