コンテンツにスキップ

cTraderでcBotを作成する

この記事では、PythonまたはC#でアルゴリズム取引用の取引ロボットを作成し、ロボットをデプロイしてcTraderで実行するための手順を説明します。

ヒント

cTrader WindowsまたはMacを使用して、取引ロボットを素早く作成したり、AIのサポートを受けたりすることができます。

AlgoアプリのcBotsタブで、Newボタンをクリックしてアルゴリズム作成ウィザードを開きます。

cBotの名前を入力し、C#Pythonのいずれかのプログラミング言語を選択します。

以下から作成方法を選択します:

  • 一から - 新しい取引ロボットには基本的なテンプレートのみが含まれます。

  • テンプレートの使用 - Python#またはC#テンプレートのリストから、幅広いcBotタイプと自動取引アクションをカバーする既製のアルゴリズムを選択できます。

注意

既製のアルゴリズムにはすでに取引ロジックとカスタマイズ可能なパラメーターが含まれています。 このようなcBotは、保存してビルドすればすぐに実行できます。

作成をクリックすると、コードエディターが開き、取引ロボットのコードの編集を開始できます。

コードを編集する

選択した作成方法に応じて、取引ロボットのサンプルには以下の要素の1つ以上が含まれています:

 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
38
39
40
41
42
43
44
45
46
47
48
49
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class SupercBot : Robot
{
    // === Fields ===
    // Declare indicators, variables or parameters, state flags, etc. here

    protected override void OnStart()
    {
        // Called once when the cBot starts
        // Initialize indicators, variables, parameters, or subscribe to events
    }

    protected override void OnTick()
    {
        // Called on every market tick
        // Useful for high-frequency strategies (but may be CPU-intensive)
    }

    protected override void OnBar()
    {
        // Called at the start of each new bar (candle)
        // Preferred for most strategies to reduce CPU load
    }

    protected override void OnStop()
    {
        // Called when the cBot is stopped
        // Useful for cleanup, logging, or resetting state
    }

    // === Custom Methods ===
    // Add your own helper methods below to modularize your logic

    private void ExampleMethod()
    {
        // A placeholder for your custom logic (e.g., strategy evaluation)
    }

    private void ClosePositions()
    {
        // Example of a method that could close open positions
    }

    private bool CheckCondition()
    {
        // Example of a method that could return a boolean condition
        return false;
    }
}

cBotのRobot属性と、TimeZoneAccessRightsなどのオプションのプロパティは、cBotクラス(SupercBot)の宣言の前にあります。

これらのメソッドはデフォルトで含まれることが多いです:

  • OnStart()メソッドは、cBotのインスタンスが起動するたびに呼び出されます。
  • OnTick()メソッドは、すべてのティックで呼び出されます。
  • OnBar()メソッドは、すべてのバーで呼び出されます。
  • OnStop()メソッドは、新しいcBotのインスタンスが動作を停止するたびに呼び出されます。

OnTick()メソッドは、すべてのティックで特定のアクションを実行するため、CPUに負荷がかかります。 多くの取引ケースでは、各ティックで取引操作を実行する必要はほとんどありません。 OnBar()メソッドを使用する方が実用的です。

上記の例スニペットに示されているメソッドとコードタイプは、ボットの動作を設定および構成する唯一の方法ではありません。 ただし、コーディングを始めたばかりの場合は、これらが最も扱いやすいです。 アルゴリズムについてさらに学ぶには、C#の基本から始めて、cBotのコード例を探索してください。

注意

リファレンスには、cTraderでアルゴリズムを構築するためのすべてのクラス、イベント、メソッド、変数などが含まれており、完全なアルゴリズムの例とテンプレートはGitHubリポジトリで利用できます。"

 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
38
39
40
class SupercBot():
    # === Fields ===
    # Declare indicators, variables, state flags, etc. here
    # self.example_indicator = None
    # self.some_flag = True

    def on_start(self):
        # Called once when the cBot starts
        # Initialize indicators, variables, parameters, or subscribe to events
        pass

    def on_tick(self):
        # Called on every market tick
        # Useful for high-frequency strategies (but may be CPU-intensive)
        pass

    def on_bar_closed(self):
        # Called at the start of each new bar (candle)
        # Preferred for most strategies to reduce CPU load
        pass

    def on_stop(self):
        # Called when the cBot is stopped
        # Useful for cleanup, logging, or resetting state
        pass

    # === Custom Methods ===
    # Add your own helper methods below to modularize your logic

    def example_method(self):
        # A placeholder for your custom logic (e.g., strategy evaluation)
        pass

    def close_positions(self):
        # Example of a method that could close open positions
        pass

    def check_condition(self):
        # Example of a method that could return a boolean condition
        return False

これらのメソッドはデフォルトで含まれることが多いです:

  • on_startメソッドは、cBotのインスタンスが起動するたびに呼び出されます。
  • on_tickメソッドは、すべてのティックで呼び出されます。
  • on_bar_closedメソッドは、すべてのバーで呼び出されます。
  • on_stopメソッドは、新しいcBotのインスタンスが動作を停止するたびに呼び出されます。

on_tickメソッドは、すべてのティックで特定のアクションを実行するため、CPUに負荷がかかります。 多くの取引ケースでは、各ティックで取引操作を実行する必要はほとんどありません。 on_bar_closedメソッドを使用する方が実用的です。

上記の例スニペットに示されているメソッドとコードタイプは、cBotの動作を設定および構成する唯一の方法ではありません。 ただし、コーディングを始めたばかりの場合は、これらが最も扱いやすいです。 アルゴリズムについてさらに学ぶには、Pythonの基本から始めて、cBotのコード例を探索してください。

新しい知識を適用して、取引ロボットのコードを編集し、ニーズに合わせて調整してください。

保存とビルド

コードエディターの上部にある保存ボタンをクリックするか、Ctrl+Sショートカットを使用してコードを保存します。

cBotを使用する前に、cBotプロジェクトをビルドしてコードを検証する必要があります。 コードエディターの上部にあるビルドボタンをクリックするか、Ctrl+Bを押します。

コードエディターの上部にある保存アイコンをクリックするか、Cmd+Sショートカットを使用してコードを保存します。

cBotを使用する前に、cBotプロジェクトをビルドしてコードを検証する必要があります。 コードエディターの上部にあるビルドアイコンをクリックするか、Cmd+Bを押します。

ビルドが成功すると、ビルド結果に確認メッセージが表示されます。 ビルドが失敗した場合は、発生したすべてのエラーの概要が代わりに表示されます。

最後のビルド以降にコードに変更がある場合、ビルドアイコンの横にアスタリスクが表示されます。 この場合、cBotのインスタンスを開始する前に、再度cBotをビルドする必要があります。

cBotのビルドが成功すると、cBotは実行可能な状態になりますが、インスタンスを開始した時点で初めて動作を開始します。

Image title