cBotの作成と実行

cBots (自動売買)

アクションマップ

以下の図は、新しいcBotを作成して実行する際のアクションフローを示しています。

  • 新しいcBotを追加
  • サンプルコードを編集
  • cBotを保存してビルド
  • cBotインスタンスを作成してカスタマイズ
  • cBotインスタンスを実行

新しいcBotを追加

検索バーの右側にある ‘新規‘ ボタンをクリックします。以下のウィンドウが開きます。

cBotの名前を入力し、2つのオプションから選択します。

  • 空白‘。このオプションを選択すると、新しいcBotには基本テンプレートのみが含まれます。
  • リストから‘。このオプションを選択し、リストからcBotを選択すると、新しいcBotには選択したアルゴリズムの全コードが含まれます。リストにある既製のcBotは、さまざまなcBotタイプと自動化アクションをカバーしています。

サンプルリポジトリ

リストから‘オプションのコードサンプルは、git@github.com:spotware/ctrader-automate-samples.git リポジトリから取得されます。アクセスするには、ここをクリックしてください。

作成‘をクリックして、ボットの設定を完了します。

同様のアルゴを異なる名前で作成したい場合、複製機能を使用することができます。

サンプルコードを編集

新しいボットをクリックして、コードエディタウィンドウを開きます。前のステップで ‘空白‘ を選択した場合、以下のコードが含まれます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  using System;
  using System.Linq;
  using cAlgo.API;
  using cAlgo.API.Indicators;
  using cAlgo.API.Internals;
  using cAlgo.Indicators;
 
  namespace cAlgo.Robots
  {
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class NewcBot : Robot
    {
        [Parameter(DefaultValue = 0.0)]
        public double Parameter { get; set; }

        /* このメソッドは、cBotが起動したときに選択したアクションを実行します。 */
        protected override void OnStart()
        {
            // 初期化ロジックをここに記述します
        }

        /* このメソッドは、cBotが停止したときに選択したアクションを実行します。 */
        protected override void OnTick()
        {
            // コアロジックをここに記述します
        }

        /* このメソッドは、cBotが停止したときに選択したアクションを実行します。 */
        protected override void OnStop()
        {
            // 終了ロジックをここに記述します
        

}
    }
  }

前のステップで ‘リストから‘ を選択した場合、cBotはすぐに使用可能です。詳細なトレーディングロジックとカスタムパラメータが含まれます。

以前に説明したように、cBot属性RobotおよびTimeZoneAccessRightsなどのオプションプロパティは、cBotクラス(NewcBot)の宣言に先行します。

OnStart()メソッドは、cBotのインスタンスが起動するたびに呼び出されます。次に、OnTick()メソッドは毎ティックごとに呼び出されます。最後に、OnStop()メソッドは、cBotのインスタンスが停止するたびに呼び出されます。

OnTick()メソッドは毎ティックごとにアクションを実行するため、CPU負荷が高いことに注意してください。特に株式や指数を取引する場合、毎ティックごとに取引操作を実行する必要があるケースは少ないです。

代わりに、OnTick()メソッドをOnBar()メソッドに置き換えることができます。その名前が示すように、このメソッドは各バーの開始時にのみ呼び出され、CPU負荷を大幅に軽減します。

これらはcBotの動作を設定するために使用できる唯一のメソッドではありませんが、C#の初心者にとっては最も簡単に使用できる方法です。

cBotのコーディングに使用できるクラス、メソッド、プロパティについては、’リファレンス‘セクションをご覧ください。また、C#と.NETのイントロダクションで示したように、カスタムメソッドを書くこともできます。

学んだことをもとに、に示されているサンプルを参考にしながら、cBotのコードを編集して要件に合わせてください。

Image title

スクリーンショットを再現するには、名前空間の宣言後に以下のコードをコピーして貼り付けてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    [Robot()]
    public class Sample_cBot : Robot
    {
        protected override void OnStart()
        {
            var result = ExecuteMarketOrder(TradeType.Buy, SymbolName, 10000);

            if (result.IsSuccessful)
            {
                var position = result.Position;
                Print("Position entry price is {0}", position.EntryPrice);
            }
        }
    }

cBotを保存してビルド

コードエディタウィンドウの上部にある ‘保存‘ ボタンをクリックしてコードを保存します。あるいは、Ctrl+S を押します。コードエディタ内の任意の場所を右クリックし、新しく開いたメニューから ‘保存‘ を選択することもできます。

Image title

コードを使用する前に、それを動作するcBotに変換する必要があります。cBotをビルドするには、コードエディタの上部またはcBotメニューにある ‘ビルド‘ アイコンをクリックします。このアクションのキーボードショートカットはCtrl+Bです。

ビルドが成功すると、‘ビルド結果’ビューアに確認メッセージが表示されます。ビ ルドが失敗した場合、このウィンドウにはビルドアクション実行時に発生したすべてのエラーの概要が表示されます。’ビルド結果‘ビューア内のエラー説明をクリックすると、そのエラーが発生しているコードの正確な場所が表示されます。

最後のビルド以降にコードに変更があった場合、’ビルド‘アイコンの横に赤いアスタリスクが表示されます。この場合、ボットを実行する前に再度ビルドしてください。

cBotインスタンスの作成とカスタマイズ

上記のすべてのアクションを正常に完了した場合、cBotは使用準備が整っているはずです。次のいずれかのアクションを実行して、新しいインスタンスを作成します。

  • 拡張名の右側にある ‘+’ アイコンをクリックします。表示されるメニューで、取引したいシンボルを選択します。

Image title

  • cBot名の右側にある ‘三つのドット’ アイコンをクリックし、’インスタンスを追加‘ を選択します。cTraderは自動的にEURUSDシンボル(または類似のシンボル)を使用して、新しいインスタンスを作成し、インスタンスが実行されるローソク足チャートの時間枠をh1に設定します。

cBotの下に新しいインスタンスが表示されます。

Image title

コード内にカスタマイズ可能なパラメータを指定した場合、それらは ‘取引監視’ 表示の左側にある ‘パラメータ‘ タブにリストされます。インスタンスを実行する前に、これらのパラメータが要件に合っていることを確認してください。

Image title

現在のパラメータ値をローカルに保存された.cbotsetファイルに保存するには、’保存‘アイコンをクリックします。また、すでに存在する.cbotsetファイルからパラメータ値をアップロードするには、’フォルダー‘アイコンをクリックします。

cBotインスタンスを実行

新しく作成したインスタンスを実行するには、インスタンス名の右側にある ‘cBotを開始‘ ボタンを押します。cBotを初めて使用する場合、警告ウィンドウが表示されます。"アルゴリズム取引の仕組みを理解しています..."フラグをチェックし、’OK‘ を押します。必要に応じて、cBotに必要なアクセス権を提供します。

Image title

新しく作成したインスタンスを停止するには、’停止‘ボタンを押します。現在選択されているインスタンスのシンボルや時間枠を変更することはできますが、実行中のインスタンスの場合は不可能です。実行中のインスタンスのパラメータを変更することはできません。

このページについて