cTrader Automate【CLI】

cTrader CLI は、「Automate」アプリと関連機能に機能を絞った cTrader Desktop のコンソール版と考えることができます。以下は、ctrader-cli で作業中にできることの非網羅的なリストです。

  • cTrader Desktop自体にアクセスすることなく、アルゴリズムの起動と停止が可能
  • 口座とシンボルデータにアクセスする

cTrader CLI を簡潔にまとめると次のようになります。

  • アルゴリズムを使用する際、cTrader Desktopアプリケーションを起動する必要がなくなり、RAMとCPUのリソースを節約できます。
  • cTrader CLI は、cBot インスタンスを手動で行う代わりに、コマンドで開始および停止できます。
  • cTrader CLIを使用して取引アルゴをプログラムで管理する、「cBot管理用のカスタムツール」を作成できます。
  • cTrader CLIをAIツールと統合し、自然言語を使用してアルゴリズムにコマンドを発行することもできます。
  • ctrader-cli を使用すると、多くの cTrader デスクトップアプリケーションを開くことなく、異なる取引口座で cBot を実行できます。
  • コマンドラインのスキルは必要ありません。コマンドラインに何も入力しなくても、cTrader Desktopから外部プロセスでcBotを起動できます。

cTrader CLIは、最新の.NET 6アルゴのみをサポートしています。
cTrader CLI は cTrader 4.8 およびそれ以降のバージョンで利用可能です。

cTrader CLI のコマンド

他のコマンドラインツールと同様に、cTrader CLIは、ユーザーがコマンドラインインターフェースに特定の定義済みコマンドを発行することで操作できます。

例えば、以下のコマンドを入力すると、取引アルゴリズムが実行可能なすべてのチャート期間のリストが表示されます。

ctrader-cli.exe periods

コマンドには、名前付きオプションと名前なし引数を指定できます。

  • オプションは通常、–(その後に完全なオプション名が続く)または-(その後に短縮オプ ション名が続く)で始まります。
  • 引数の値は、名前や表記を追加することなく、「そのまま」タイプされます。

引数が1つのコマンドの例

ctrader-cli.exe metadata C://Users/{username}/Documents/cAlgo/Sources/Robots/mycoolcbot.algo

このコマンドは、metadataコマンドの後にファイルパスを指定したアルゴリズムに関する重要なメタデータを出力する。この情報には、アルゴリズム名、タイプ、パラメータ、最終ビルド時間が含まれます。

2つの名前付きオプションを持つコマンドの例

ctrader-cli.exe accounts --ctid=test@email.com --pwd-file=C:/password/password.pwd

コマンドは、指定されたcTIDにリンクされているすべてのアカウントに関するデータを出力する必要があります。

コマンドの全リストとサポートされている引数については、以下の表を参照してください。

指定されたコマンドの必須でないオプションは、すべて[角括弧]で示しています。

コマンド定義サポートされるオプションと引数
-h | --help利用可能なコマンドとその引数のリストを表示する。なし
periods利用可能なすべてのチャート期間を表示する。なし
accountscTIDにリンクされたアカウントを表示する。--ctid | -c--pwd-file, [--broker], [--environment-variables | -e]
symbols利用可能な記号をすべて表示する。--ctid | -c--pwd-file--account | -a, [--broker], [--environment-variables | -e]
metadata特定のアルゴリズム(cBotまたはインジケーター)に関するメタデータを表示する。<cbot.algo>
run特定のシンボルで特定のcBotを指定された期間で実行する。<cbot.algo>, [<params.cbotset>], --ctid | -c--pwd-file--account | -a, [--broker], [--environment-variables | -e], --symbol--period, [--full-access], [<params.cbotset>], [--CustomParameter1], …, [--CustomParameterX]

以下は、各オプションと引数の説明です。

  • |:—|:—| | –version | -v| cTrader CLI の現在のバージョン(ctrader-cli.exe –version で表示できます)。| cTID に割り当てられたニックネームまたは電子メール。|
  • | –pwd-file | 指定されたcTIDのパスワードを含むファイルへのパス。|
  • --account | -a | アカウント番号。|
  • | –broker | 特定のブローカーの名前(cTIDが異なるブローカーの下で登録され、同じ番号の複数のアカウントを持っている場合にのみ指定する必要があります)。|
  • | –symbol | -s | アルゴリズムが動作するシンボル。|
  • | –environment-variables | -e | 指定された場合、他のオプション(例:-c)の値は、明示的に入力するのではなく、環境変数から取得することができます。|
  • <cbot.algo> | メタデータを受け取ったり実行する.algoファイルへのパス。実行コマンドとメタデータ・コマンドでは、このパラメータを最初に指定する必要があります。|
  • | –full-access | 指定すると、アクセス権の制限なしにアルゴリズムを実行します。|
  • <params.cbotset> |実行するアルゴリズムのパラメータ値を含む.cbotsetファイルへのパス。runコマンドでは、このパラメータはの直後に指定する必要があります。|
  • | –CustomParameter1 | CustomParameter1と一致する名前のカスタムパラメータの値。|

パスワードを含む.pwdファイルを作成するには、拡張子が.pwdの新規テキストファイルを追加するだけです。その後、そのファイルを開き、不要な空白を避けてパスワードを入力/貼り付けしてください。

cTrader CLIの起動方法

cTrader CLIは、通常の cTrader Desktop と共にデフォルトでインストールされます。

以下の3通りの方法でアクセスできます。

① cTraderから

ctrader-cli 経由で cBot インスタンスを実行するには、cTrader デスクトップで、そのインスタンスを右クリックします。

クリックすると以下のメニューが表示されます。

「外部プロセスで開始」をクリックすると、ctrader-cliが起動します。起動すると、サービスは元々アタッチされているチャート上で選択したインスタンスを実行します。

リソース消費量の削減

ctrader-cli を使用して外部プロセスで cBot インスタンスを起動した後、CPU と RAM の消費を節約するために cTrader Desktop を自由に閉じることができます。

② コマンドラインから

ctrader-cliには、適切なコマンドラインインターフェイス(Windowsの検索バーに「cmd」と入力するなど)を開いてアクセスできます。

インターフェイスで、ctrader-cli.exeファイルのあるフォルダに移動します。通常、このパスはWindowsマシンでは以下のようになります。

C:\Users\{username}\AppData\cTrader\{installationId}

正しいフォルダに移動したら、コマンドラインインターフェイスで有効なコマンドを入力して実行します。

③ PATH変数経由

最後に、Windowsの場合、ctrader-cliをPATH環境変数に追加することができます。

どのフォルダにいても、適切なコマンドラインインターフェイスでctrader-cliコマンドを使用できるようになります。

以下の操作を行います。

  1. Windowsの検索バーに’env’と入力し、’Edit the system environment variables’を選択
  2. 新しく表示されたウィンドウで、「環境変数」をクリック
  3. ユーザー名}のユーザー変数」セクションで「パス」を選択し、「編集」をクリック
  4. 「新規」ボタンを押し、ctrader-cli.exeファイルのフルパスをテキストフィールドに貼り付け

その後、適当なコマンドラインインターフェイスを開きます。これで、どのフォルダからでもctrader-cliコマンドを実行できます。

コマンド構文

PATH 変数に cTrader CLI を追加した場合、すべてのコマンドの前に ctrader-cli.exe ではなく ctrader-cli を指定する必要があります。

一般的な使用例

以下は、一般的な操作を実行するために実行できる一般的なコマンドのリストです。

すべてのシンボルの取得

ctrader-cli.exe symbols --ctid=test@email.com --pwd-file=C:/password/password.pwd

アルゴのメタデータを取得する

ctrader-cli.exe metadata C:/RSI_cBot.algo

metadataコマンドを実行したときに得られる出力の例です。ご覧のように、この出力には、cBotパラメータの名前(これらの名前は–CustomParameter1オプションで使用できます)、タイプ、デフォルト値など、すべての重要な情報が表示されます。

{
  "Name": "RSI_cBot",
  "Type": "cBot",
  "AccessRights": "None",
  "BuildTime": "2023-05-11T16:42:56.7421508+03:00",
  "Parameters": [
    {
    "PropertyName": "Quantity",
    "FriendlyName": "Quantity (Lots)",
    "GroupName": "Volume",
    "Type": "Double",
    "DefaultValue": 1.0,
    "MinValue": 0.01
    },
    {
    "PropertyName": "Source",
    "FriendlyName": "Source",
    "GroupName": "RSI",
    "Type": "DataSeries",
    "DefaultValue": {
        "OwnerId": "00000000-0000-0000-0000-000000000000",
        "FriendlyName": "Close",
        "IsStandard": true
    }
    },
    {
    "PropertyName": "Periods",
    "FriendlyName": "Periods",
    "GroupName": "RSI",
    "Type": "Integer",
    "DefaultValue": 14
    }
  ]
}

デフォルトのパラメータでcBotを実行する

ctrader-cli.exe run C:\mycoolbot.algo -c=test@email.com --pwd-file=C:\password\password.pwd --account=1209201 --symbol=EURUSD --period=h1 

カスタムパラメータでcBotを実行する

ctrader-cli.exe run C:\mycoolbot.algo -c=test@email.com --pwd-file=C:\password\password.pwd --account=1209201 --symbol=EURUSD --period=h1 --ConsolidationPeriods=3 --Periods=15 

保存されたプリセットのパラメータを使用してcBotを実行する

ctrader-cli.exe run C:\mycoolbot.algo C:\coolbotsettings.cbotset -c=test@email.com --pwd-file=C:\password\password.pwd --account=1209201 --symbol=EURUSD --period=h1 

cTrader CLI のAutomate API

以下の表は、特定の Automate API メンバーでのcTrader CLI の動作をまとめたものです。

アルゴAPIメンバーcTrader CLI の動作
MessageBox`` | ReturnsMessageBoxResult.None`.
`Window“すべてのメソッドは無視され、ウィンドウは表示されなくなります。
Notifications.PlaySound無視されてます。
Chart.TakeChartshotnullを返します。

要約

cTrader CLIは、コマンドライン(と対話できる任意のカスタムインターフェース)を使用してcBotを管理できるため、アルゴリズム取引の範囲を拡大したい人にとって不可欠な機能です。

種々のAPIと併用したり、サードパーティのサービスと併用したり、様々な活用方法があります。