
プログラミングの素人がAIの助けを借りてCFDトレード用Pineスクリプトを作った
以前のnoteで日足を使ったCFDスイングトレードについて書いた。
日足の他に3分足なども試したが、短い時間足ではPCの前でじっと座っているのはしんどい。4時間足なら比較的楽だが、エクセルを使ってバックテストをやった結果では、日足とあまり違いがなさそうという結論になった。
そういうわけで、当初のやり方に戻った形になったが、過去に遡って定量的に実力を検証してみたいと思った。
TradingViewのPineスクリプトを書いてみる
FXトレーダーがTradingViewのPineスクリプトを使ったバックテストをやっていたので参考にした。トレード手法をChatGPTに伝え、出来上がったスクリプトに修正を加えて完成させていくという内容。
私の場合はドル円のFXではなく、日経平均先物miniのCFD。
ChatGPT-4に以下のような内容で指示した。
・対象は日経平均先物ミニCFD
・エントリーは以下の条件
・ローソク足が終値ベースで日足の13MAを上抜けたらトリガー発動
・その次のローソク足が陽線なら、さらにその次の始値でエントリー
・ロング(買い)のみ
・利確は値幅で500円
・損切りは、トリガー発動前の日足3本分の最安値に設定。ただし、その損切りの値幅が300円を超える場合は、300円に設定する。
・エントリーから決済までの最大日数は12日とする。期限に到達したら、その日の引けで決済する。
ささっと考えて、こんなスクリプトを出力してくる。

最初に出してきたスクリプトにはいくつかエラーがあるが、エラーメッセージをコピペして提示すると修正してくれる。

ChatGPTが提示してきたスクリプトをTradingViewのPineエディタにコピペ。なんやかんやと修正を繰り返して、一応スクリプトが動くところまで持ってきた。

検証結果
2020年から2024年までのバックテスト結果は、勝率80.95%、 プロフィットファクター2.053という結果だった。これはすごい!!と思ったが、トレード履歴を見ると、エントリータイミングや利確・損切りなど、こちらの意図とは違う運用をしていて、ちょっと残念。
ChatGPTに間違いを指摘して何回か修正を行ったが、そうこうするうちに本日のリソースを使い果たしてしまい終了(無料版なので仕方ない)。続きは後日となった。完成版を披露することが目的ではないので、とりあえず今回はこれで投稿する。
以下は出力結果の一例。





所感
タイトルにあるとおり、私はプログラミングの素人で、Pineエディタも触ったことはない。今までは日足のCSVデータをダウンロードし、エクセルの関数やフィルタ機能を使ってバックテストを行ってきた。それがAIの力を借りれば驚くほど簡単にスクリプトが書け、バックテストができてしまう。まだ不完全であり、完成には時間がかかるが、これはすごいことだと思う。
今回は日経225先物miniを扱ったが、同じ考え方でドル円やNYダウもできる。パラメータを少しいじるだけ。応用範囲が広いので、今後も検討を続けていこうと思う。
関連動画
今回やろうと思ったきっかけはこれ。トレード手法をChatGPTに伝えてPineスクリプトを書かせた。ドル円の過去50年間のバックテスト結果がなかなかすごい。動画の主が言うように、鵜呑みは禁物だが。
こちらはPineスクリプトの解説。ネイティブにしては聞き取りやすい英語。リスニングの勉強になるかも。設定で自動翻訳の日本語も出せる。

ソースコードとバックテスト結果(2/13追記)
一部ルールを変更して、スクリプトを完成させた。買いのみのトレード。利確や損切りの具体的な値は決めず、直近の安値を使う。
・エントリーの必要条件:
「ローソク足が終値ベースで日足の13MAを上抜けること」
これを「トリガー」とする。
・エントリー:
「トリガー」の次のローソク足の「始値」で「買い」エントリーする
・損切り:
「トリガー」より過去の6本のローソク足の最安値を損切りポイントとする。損切りポイントを終値で割った時点で決済を行う。
・利確:
「トリガー」での13MAの値と「トリガー」より過去の6本のローソク足の最安値との差分を取る。それを「トリガー」での13MAの価格に上乗せした価格を利確ポイントとする。利確ポイントに到達した時点で決済を行う。
・エントリーから決済までの最大日数は8日とする。損切りや利確がない状態で期限に到達したら、その日の「終値」で決済する。



バックテストを実施。2024年の実績は以下のとおり。トレード回数は11回だが、1回あたりの平均獲得値幅は669円と、まぁまぁ大きい。勝率81.82%、プロフィットファクター6.098はなかなか見事。

2018〜2024年の6年間で見るとこうなる。
2021〜2022年の下落相場が足を引っ張っている。やはりAIにお任せではなく、相場の状況を把握し自分で考える作業は必要。
