ジェネレーティブAIが急速に進化しており、コードを一行も書かずにcBotを作成することは夢ではありません。それは現実です。この記事と対応する動画では、ChatGPTを使用してcBotを作成する方法を紹介します。また、ChatGPTが提供するcBotコードを評価し、AI生成のボットが数分で動作するようにする方法も示します。
正しいプロンプトの作成
このビデオでは、GPT-3.5モデルを使用します。これは誰でも無料で利用でき、新しいGPTモデルに比べて機能は少ないものの、優れた結果を生み出します。
ChatGPTで素晴らしいcBotを作成する最初のステップは、正しいプロンプトを入力することです。良いプロンプトのためのいくつかのルールを以下に示します:
- ChatGPTがプロのcBot開発者の役割を果たすように促す。
これを達成するには、"Let's play or game where you are a qualified algo developer for cTrader..."
や"Pretend to be a professional developer of cBots for cTrader..."
といった初期プロンプトを入力します。
- 具体的にする。
ChatGPTに提供する詳細が多いほど、結果は良くなります。"Create a profitable cBot for me..."
のようなプロンプトは、AIを混乱させるだけです。
cBotの各部分をできるだけ具体的に指定することをお勧めします。パラメータ、反応する条件、実行する取引操作を考慮してください。カスタムトレーディングパネルを作成する場合は、UI要素がどこに配置されるべきかを考えてください。
- 礼儀正しく、敬意を持つ。
これは驚くかもしれませんが、礼儀正しくすることでChatGPTの出力品質が向上することが研究で示されています。"I would appreciate it if..."
、"It would be nice if..."
などのフレーズを含めると良いでしょう。
カラー取引cBotの作成
まず、各バーのオープンで新しいマーケットオーダーを出すシンプルなcBotを作成します。オーダーの方向は、前のバーが緑か赤かに依存します。バーが赤の場合、売り注文を出し、緑の場合、買い注文を出します。
以下に、正しいプロンプトを提供する方法を示します。
- 開始文:
"Pretend to be a professional developer of cBots for cTrader, Write very simple and understandable code"
- 具体的な要件:
"Create a cBot. On every bar, it should place a new market order with no protection mechanisms. The order volume (in units) should be a customisable parameter. A buy order should be placed if the previous bar was green. A sell order should be placed if the previous bar was red"
- 礼儀:
"I would really appreciate it if you do this task, thank you!"
ChatGPTが出力する正確なコードは異なるかもしれませんが、いずれにせよコードエディタウィンドウにコピーして貼り付け、正しいかどうか、希望するロジックが実装されているかを確認できます。
通常、修正が必要な非クリティカルなエラーがいくつかあります。今回の場合、修正が必要だった唯一の点は、ExecuteMarketOrder
メソッドのSymbol
オブジェクトをSymbolName
文字列に変更することでした。以下は、すべてを実行した後の最終コードです。
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 |
|
通常通り、ボットを保存してビルドします。’取引‘アプリケーションでは、ボットのインスタンスをチャートに追加し、意図通りに機能するか確認します。ボットは問題なく動作し、過去のバーの色に反応して新しい注文を出します。注文量もカスタマイズ可能なパラメータです。
注記
ChatGPTが出力したコードを読む必要さえありませんでした。コードエディタに表示された警告をすべて修正し、その後ボットを起動しただけです。
トレンド取引cBotの作成
先ほどのcBotは素晴らしいものでしたが、単純なロジックを使用しており、市場のトレンドを考慮していませんでした。同じプロンプトのアプローチを使用して、より複雑なものを作成してみましょう。
- 開始文:
"Let's imagine you are a skilled cBot developer for cTrader. I will be your client"
- 具体的な要件:
"Create a cBot. On every bar, it should check whether the 50-day moving average is above or below the 200-day moving average. If it is above, the bot should place a buy order. If it is below, the bot should place a sell order. The bot should not place an order if there already exists an open position in the same direction. The order volume should be a customisable parameter"
. - 礼儀:
"Thank you for the help!"
再び、ChatGPTから提供されたコードをそのままコードエディタウィンドウにコピーしてボットをビルドしてみます。以下は、取得したすべてのビルドエラーです。
- コードが古い
MarketSeries
APIメンバーを使用しているため、Bars.ClosePrices
コレクションに置き換えます。 - 再び、
Symbol
引数をSymbolName
に置き換える必要があります。 ExecuteMarketOrder
メソッドの不要な引数を削除する必要もあります。
また、ロジックがどのように実現されたかも見てみましょう。OnStart()
メソッドでは、移動平均を初期化しています。ChatGPTは移動平均期間をカスタマイズ可能なパラメータにしていますが、これによりコアロジックに影響はないため、そのままにしておきます。
しかし、OnBar()
メソッドでは、ポジションが存在しない場合にのみ新しい注文を出します(Positions.Count ==0
)。これは、ポジションの方向も確認する必要があるため、望ましいものではありません。コードを少し変更して、次のようなボットを作成します。
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 |
|
指定されたラベルのすべてのポジションを取得し、その数を計算するためにPositions.FindAll(string label)
メソッドを使用しました。
ボットをビルドすると、チャートに追加できます。50日と200日の移動平均も追加して、cBotの動作を評価します。しばらく待つと、ボットが期待通りに機能することがわかります。新しい注文が必要に応じて出されますが、同じ方向に複数のオープンポジションは存在しません。
まとめ
ChatGPTは、正確に定義されたロジックで迅速にcBotを作成する必要がある場合に価値のあるツールです。ChatGPTは多少のエラーを生成しますが、通常は重要でなく、すぐに修正できます。この記事とビデオが役立ったことを願っています。新しいビデオを公開するたびに通知を受け取るために、YouTubeチャンネルを登録してください。