コンテンツにスキップ

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

この記事とその対応するビデオでは、cTrader AlgoでcBotを迅速に作成する方法を説明します。 作成するcBotは、three white soldiersとthree black crowsと呼ばれるシンプルな取引戦略を実装します。 この戦略について詳しくは、当社のナレッジベースをご覧ください。

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

新しいcBotの追加

cTrader Algoで新規ボタンをクリックして、新しいcBotの作成を開始します。 名前を入力し、C#とPythonの間でプログラミング言語を選択し、コードエディタが開くまで続けます。

cBot設定の追加

取引戦略を実装する前に、基本的なcBotのパラメータとメソッドを見ていきます。 また、当社のドキュメントを参照して、さまざまなパラメータとメソッドの機能を確認することもできます。

  • cBotパラメーター – 取引高や損切り/利食いの距離など、設定可能な属性を定義できます。

  • cBotメソッド – 特定のイベントが発生したときのcBotの動作を定義します。 cTrader cBotを開発する際に処理する必要がある4つの主要なイベントがあり、それぞれはcTraderが提供する対応するメソッドによって管理されます。 これらのメソッドは、C#のOnStart()OnTick()OnBar()OnStop()とPythonのon_start()on_tick()on_bar_closed()on_stop()です。 C#のOnBar()とPythonのon_bar_closed()メソッドは、デフォルトのコードテンプレートには含まれていないことに注意してください。

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

C# Python 目的
OnStart() on_start() cBotインスタンスが動作を開始したときにトリガーされます。 cBotで使用する予定の変数(インジケーター、カウンター、イベントハンドラー、タイマーなど)を初期化するために使用されます。
OnTick() on_tick() 取引チャート上でcBotインスタンスが実行されている際に、ティック(価格更新)ごとにトリガーされます。 リアルタイムデータに基づいた高速なエントリーまたはエグジットロジックに一般的に使用されます。 このメソッド内では、新しいティックが到着したときに実行するカスタムのエントリーおよびエグジット条件や、その他の補助関数をプログラムできます。
OnBar() on_bar_closed() 各バーの終了時にトリガーされます。 このメソッド内では、新しいバーが形成されるたびに実行するカスタムのエントリーおよびエグジット条件や、その他の関数をプログラムできます。
OnStop() on_stop() cBotが停止したときに呼び出されます。 ポジションのクローズ、状態の保存などの最終操作を実行するために使用されます。

取引ロジックを追加する

ここで、取引戦略のコードを追加します。 私たちのcBotは、チャート上で3つの緑のバーが形成されたときに買いポジションを開き、3つの連続した赤いバーが形成されたときに売りポジションを開くようにします。

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

  1. 各取引の取引高。
  2. pips単位の損切り。
  3. pips単位の利食い。

クラス宣言(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; }

注意

Python cBotは、.csファイルで宣言されたカスタマイズ可能なパラメータを使用します。

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()またはon_bar_closed()メソッドに以下のコードを貼り付けます。 このメソッドは、新しいバーが形成されるたびに呼び出されることを覚えておいてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//Three White Soldiers
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);
}
            
//Three Black Crows
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);
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Three White Soldiers
if (close.Last(1) > open_.Last(1) and
    close.Last(2) > open_.Last(2) and
    close.Last(3) > open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

# Three Black Crows
elif (close.Last(1) < open_.Last(1) and
      close.Last(2) < open_.Last(2) and
      close.Last(3) < open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

ここで、コードを詳しく見ていきましょう。 cTraderはチャートの過去のバーへのアクセスを提供しており、最後の3つのバーがすべて緑または赤であるかどうかを確認できます。 上記のC#のOnBar()およびPythonのon_bar_closed()メソッドでは、まず最後の3つのバーがすべて緑であるかどうかを確認します。 次に、これらのバーがすべて赤であるかどうかを評価します。

2つの条件のいずれかが真である場合、ExecuteMarketOrder()メソッドを使用してマーケット注文を出します。 これにはいくつかの入力(引数)が必要で、最も重要なのは取引方向、シンボル、取引高、損切り、利食いです。

この場合、注文方向(TradeType.BuyTradeType.Sell)は取引戦略の条件によって決定されます。 シンボル名は、cBotが実行されているチャートから直接取得されます(SymbolName)。 取引高、損切り、および利食い(C#のVolumeStopLossTakeProfitおよびPythonのVolumeInLotsStopLossInPipsTakeProfitInPips)は、定義したcBotのパラメータからすべて取得されます。

cBotをビルドして実行する

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

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

Image title

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

Image title

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

Image title

cBotが正常にビルドされたら、使用を開始できます。 必要なのは、取引チャート上にインスタンスを追加することだけです。 これを行うには、cBotの名前の右側にある+アイコンをクリックします。 cBotを実行できるすべてのシンボルのリストが表示されます。

Image title

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

また、取引チャートの直下にあるパラメータータブに、コーディングしたパラメーターが表示されます。

Image title

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

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

Image title

インスタンスを起動するには、このボタンを押します。 または、cBotリストのインスタンスの右側にもこのボタンのコピーがあります。 これらのボタンのいずれかを押すと、cBotが開始されます。

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

cBotをバックテストする

実際の取引チャートでは、cBotがポジションを開くのに時間がかかる場合があります。 ここでは、過去のデータで動作を確認するためにクイックバックテストを実行します。 これを行うには、バックテストタブを開きます。

Image title

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

スライダーを1か月前に戻します。 再生ボタンをクリックして、選択した過去のデータでcBotを起動します。

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

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

サマリー

この記事が、cTraderを使用して自動取引ロボットを作成する方法を説明するのに役立つことを願っています。

Image title