AI 一本釣り EURJPY
-
概要
AIで相場分析を行い、AIでソースコードの大部分を開発したEAです。ナンピンやマーチンゲールは行わず、ポジションは1つだけしか取りません。相場のボラティリティのある時だけを狙って、まるで「一本釣り」の用に、相場の大海から利益を釣り上げるEAです。
ポジションを建てるのは、売りと買い、それぞれで毎週1回(合計2回)だけです。年間約100回程度のトレードしか行いません。
しかし、8年間のバックテスト(Auto Lotsモード)において、プロフィットファクター1.79、リカバリーファクター15.0、最大ドローダウン20.60%、勝率39.10%という数値を出しています。しかも、初期証拠金100万円のスタートで、純益が1億1087万円に達する「億超えEA」になっています。
トレーダーなら、是非一本持っていると良いと考えられるEAです。
なお、「AI 一本釣り EA」は、一連のシリーズEAとして、今後随時リリースしていく予定ですので、ご期待ください。また、MT4用とMT5用EAの双方を発売して行く予定です。
相場の荒波からAIで利益を釣り上げるイメージ図です。
-
AIによる相場分析
大規模言語モデル(LLM:Large language Models)としてChatGPT4を使用しました。最初は、ローソク足の1分足データ、10年分をChatGPTに投げてみたのですが、さすがに、1分足では、データ量が多すぎて、ChatGPTが固まってしまいました。数十行までは、データを読み込んで、分析を開始してくれるのですが、「分析中にエラーが発生しました・・・」を繰り返し、前へ進めません。
そこで、データ量を減らして、2年分の1時間足データでAI分析を実施することにしました。
結果は次の通りです。
曜日別の価格変動範囲
週の中では、木曜日が一番価格変動幅が多く、次に金曜日が多くなっています。逆に月曜日の変動幅が最も少ない傾向にあるようです。
時間別の価格変動範囲
上の図は、時間別のグラフですが、大きな山が3つあることが明らかです。これは、東京市場、欧州市場、ニューヨーク市場の、それぞれのオープン時間に、市場売買が活発となり、価格変動幅が増えたものと考えられます。(なお、サーバーの時間としてGMT-3を使用しています。日本時間(GMT-9)は、6を加えて換算してください。)
日本時間で読み替えると、朝9時の東京市場オープンで価格変動が増大、午後4時の欧州市場、夜9時から11時のニューヨーク市場にそれぞれ対応して変動幅が増えているのが確認できます。
ポジションを建てる時間と保有する時間の最適解を求める
何曜日の何時にポジションを建てた場合に、何時間保有すれば、最も利益が得られるかをAIに分析してもらいました。
AIが無かった頃は、Excelにデータを落とし込んでから、ピボットテーブルでグリグリと手動で何度もパラメータを変えながら最適解を求めたものです。AIなら、かなり複雑な組み合わせであっても、難なく最適解を教えてくれます。(本当に、良い時代になったものです。)
一例ですが、「買いポジションを建てるのであれば、月曜の4時にポジションを建て、決済は96時間後にすると良い。」という情報をAIが短時間で教えてくれるのです。
- 最適解からEAを作る
次に、EAのソースコードそのものをAIに作成してもらうことにします。
ところが、ここが、かなり試行錯誤した部分となりました。AIは、はっきり言って「バカ」なのです。ちゃんとしたプロンプトを与えないと、とんでもないミスを犯します。ChatGPT側も、毎回必ず次のメッセージを出してきます。
「ChatGPT が間違いを犯す可能性があります。重要な情報を確認するようにしてください。」
以前ChatGPT3が発表された頃に、MT4用のソースコードを生成させてみたのですが、はっきり言って、そのままでは全く使い物にならない代物でした。しかしChatGPT4になり、日々改善され、進化してきたので、結構使える物にはなってきています。
AIがコード生成 → エラー発生 → AIにエラー修正指示
AIが修正コード生成 → エラー発生 → AIにエラー再修正指示
これを延々と繰り返すことになりますが、しかし、ここに大きな落とし穴があり、負のスパイラルループに嵌ってしまうことがあります。AIは、結局のところ、ロジックを正しく認識しているのではなく、大規模言語モデルの中から、それらしい回答を出してくるだけなのです。プロンプターがロジックを正しく認識して、AIに伝えるという技術が必須になります。
さんざん悪戦苦闘して、EAのコンパイルエラーも無くなったので、いざEAを走らせてみると、全く違った予想外の挙動をすることもありました。 総じて、AIによるEAの作成は、使いかたによっては、ものすごく省力化になるものであると評価しています。
この「AI 一本釣り EA」は、ソースコードの90%以上は、AIが作成したものをそのまま使用しています。残りの10%は、手作業で直した部分になります。
-
EAの設定パラメータ
[買いトレード 有効]と[売りトレード 有効]は独立してon/offできます。買いトレードのみを行う場合は、[売りトレード 有効]をfalseにしてください。買い、売りともfalseになっていると、トレードを行いません。
[自動ロット 有効] trueで自動ロットが有効になります。固定ロットで運用される方は、ここをfalseにしてください。
[固定ロット数] 上の[自動ロット 有効]をfalse設定にした場合に、ここで指定した固定ロット数でトレードを行います。
[最大損失割合%] SLの設定値と、この最大損失割合設定値から自動ロット計算を行います。(デフォルトは1.8%)
[最小維持率%] SLの値が極端に小さい場合、自動ロット計算でロット数を計算すると、計算結果が大きくなりすぎる場合があります。証拠金維持率の下限値%を設定します。
なお、固定ロットの場合であっても、指定したロット数が大きすぎて、証拠金維持率下限%を下回る場合は、ロット数を自動的に縮小修正される仕様にしてあります。
[SL/TP 有効] ストップロスと利確幅を有効にするかどうかの設定です。通常はtrueにしておきます。
[By Stop loss] 買いのストップロス設定値(point)
[By Take profit] 買いの利益幅設定値(point)
[Sell Stop loss] 売りのストップロス設定値(point)
[Sell Take profit] 売りの利益幅設定値(point)
[トレーリングストップ 有効] トレーリングストップの有効on/off
[トレーリングを開始する利益幅] これ以上の含み益が発生してから、トレーリングを開始します。(point)
[トレール幅] トレーリングストップの幅を設定します。(point)
買いの場合、現行レートより下に離して(売りの場合、現行レートより上に離して)SLを設定します。
[トレール刻み幅] この刻み幅以上にレートが離れてから新しいSLを設定します。(これ以下の小さなレートの変動に対してトレールをしません。)
※トレール刻み幅を0に設定することもできますが、トレールの更新頻度がテック毎になることがあります。
[直近勝率ファクター有効] Auto_Lotsモードで、これをonにすると、直近の勝率に応じて、ロット数を自動調整する機能が有効になります。なお、固定ロット(Auto_Lots=false)の場合は、これがonになっていても機能しない仕様になっています。
[直近勝率の計算範囲] 直近何回のトレードの結果を反映させるかの回数指定です。指定範囲は1から20までです。
[想定平均勝率] 長期トレードの平均勝率を指定します。この勝率よりも短期勝率が高い(または低い)場合に、ロット数を自動調整します。
[直近勝率による倍率係数] この係数で、ロット数が自動調整されます。値が1より大きい場合は、短期勝率が平均勝率よりも高い場合にロット数を増やすように作用します。値が1より小さい場合は、短期勝率が平均勝率よりも高い場合にロット数を減らすように作用します。
[Buy Entry hour] 買いトレードのエントリー時間
[Buy Hold time] 買いトレードのポジション保有時間
[Sell Entry hour] 売りトレードのエントリー時間
[Sell Hold time] 売りトレードのポジション保有時間
[スリッページ] スリッページを指定します。
[マジックナンバー] マジックナンバーを指定します。
[フォントサイズ] フォントサイズを指定します。
[行の幅] データ表示の行の幅を指定します。
[Buy 表示色] 買いデータの表示色です。
[Sell 表示色] 売りデータの表示色です。
[Buy 含み益表示色] 買いが含み益になった場合の表示色です。
[Sell 含み益表示色] 売りが含み益になった場合の表示色です。
[ポジション無し 表示色] ポジション無しの場合の表示色です。
[無効 表示色] false設定にした場合の表示色です。
[累積損益 表示色] 累積損益行の表示色です。
画面表示説明図
1行目が、買いポジション情報です。
2行目が売りポジション情報です。
3行目が通算利益、最大ドローダウン、通算勝率を表示します。
4行目が短期勝率を表示します。
-
バックテスト結果(固定ロット)
ロット数を0.1に固定して、2016.1.1から2024.4.30の期間(8年4ヶ月)でバックテストを行いました。結果は以下の通りです。
初期証拠金 \1,000,000
プロフィットファクター 1.57
純益 \ 1,261,210.57
最大ドローダウン \99,075.93(8.55%)
勝率 39.10%
ロット 0.10(固定)
リスクリターン率 12.73
推奨証拠金 \270,000
ロット0.01の場合なら、1/10になるので、資金\30,000からトレードができます。
固定ロットによるバックテストの結果
※GogoJungle計算式(一万通貨単位×取引通貨の日本円レート÷25×ロット数平均÷0.1×最大ポジション数+最大損失(含み損込み)×2)
1EUR=\167.75と仮定して
10,000×167.75÷25×0.1÷0.1×1 + 99,075×2 = 265,250
GogoJungleの計算式から、推奨証拠金が27万円となるので、初期ロットが0.01からスタートするのであれば、必要な資金は約3万円になります。
-
バックテスト結果(自動ロット)
ロット数を自動にして、同様に2016.1.1から2024.4.30の期間(8年4ヶ月)のバックテストを行いました。結果は以下の通りです。なお、最大損失を資金の1.8%にする設定で、自動ロット計算を行っています。
プロフィットファクター 1.79
純益 \ 110871039.31 (1億超え)
最大ドローダウン \ 7,381,403.96 (20.60%)
勝率 39.10%
ロット Auto(自動設定)
リスクリターン率 15.0
自動ロットでは、総利益が1億1,087万円となり、初期証拠金の111倍に増えています。プロフィットファクターとリスクリターン率も、自動ロットの方が、固定ロットより良い値になっています。
(なお、バックテストを実施したFXTFでは、ロット数の上限が10ロットなので、途中から数量が頭打ちになっています。ロット数の上限が大きいブローカーなら、さらに総利益が増えるものと考えられます。)
自動ロットによるバックテストの結果
-
本EAの特徴(その1)
本EAの特徴その1は、「買い」「売り」などのパラメータをそれぞれ独立に選択できることです。
買いをtrue、売りをfalseにすると、買い動作だけのEAになります。
買いをfalse、売りをtrueにすると、売り動作だけのEAになります。
両方がfalseだと、売買を行いません。
パラメータ設定によっては、買いと売りの両方のポジションを一時的に同時に持つ場合があります。両建てができない証券会社の場合には、[売りトレード 有効]をfalseにして、買いだけのトレードを行うこともできます。
バックテスト(始値のみの条件)で、[買いトレード 有効] 、[売りトレード 有効]をtrue,falseに変えた場合の4通りの結果です。
買いだけですと、総取引回数が半減しますが、プロフィットファクターやドローダウンの値が良い結果となっています。
SLTPがfalseだと、SL/TPを設定しません。(0に設定されます)
SLTPはtrue設定の方が、良い結果が得られます。
TRAIL_ONがfalseだと、トレーリングストップ動作を行いません。
TRAIL_ON はtrue設定の方が、良い結果が得られます。
SRWR_ONがfalseだと、直近の勝率に応じたロット数変更を行いません。
SRWR_ONは、true設定の方が、良い結果が得られます。
SRWR_ONの効果は著しく、falseの場合の約2.2倍の損益になります。
-
本EAの特徴(その2)
本EAの特徴は、「動的にパラメータを変えるEA」であることです。自動ロット(Auto_Lots)の場合で、SRWR_ONに設定すると、直近の勝率に応じて、ロット数をEAが動的に変更する機能があります。
元々は、直近の相場状況にEAが適合しない場合に、ロット数を自動で減らすことを意図してこの機能を付加したものです。ドローダウンが大きくなった場合に、ロット数を減らし損失を抑えて、次のチャンスが来るまでEAが待つ、言わば「冬眠モード」の発動を想定していました。
しかし、バックテストでパラメータの最適化を行ってみると、係数が0.12になりました。係数が1よりも小さいということは、直近の勝率が想定した平均勝率よりも良い場合には、ロット数を減らし、逆に勝率が低い場合に、ロット数を増やすことになります。想定した「冬眠モード」の動作とは、真逆になるのですが、過去8回のトレードで結果が良い場合は、ロット数を抑え、結果が悪い場合にはロット数を増やすような動作になります。
-
直近の攻めのバックテスト
直近(2024/01/01~2024/05/24)のバックテストを、総資金10万円で始めて、ギリギリに攻めてみたらどうなるかをテストしてみました。
パラメータはデフォルトのままで、最小維持率%のみ、102%のギリギリまで落としました。マージンコールの発生を防ぐ為、証拠金維持率が100%を割らないロット数になるように自動調整しています。
結果は、次の通りです。
期間 1時間足(H1) 2024.01.02 00:00 – 2024.05.23 23:00 (2024.01.01 – 2024.05.24)
モデル 全ティック (利用可能な最小時間枠による最も正確な方法)
初期証拠金 \100,000
プロフィットファクター 3.25
純益 \ 156,710.37
最大ドローダウン \ 73639.07 (22.29%)
勝率 47.37%
ロット Auto_Lots
リスクリターン率 2.13
純益が15万円超で、総資金が\256,710となり、元の資金の2.5倍に増えました。最大ドローダウンが約7万円(22%)に対し、純益が15万円というのは、嬉しいですね。
ちなみに、デフォルト設定のまま(最小維持率150%)ですと、純益が\93,886、プロフィットファクターが2.97、最大ドローダウンが\36,208 (15.74%)、勝率が47.37%になります。
この例は、あくまでもギリギリに攻めたらどうなるかというテスト結果です。実際のトレードに関しては、自己責任でお願いします。
-
最後に
「AIで作成」した、「億超えEA」はいかがでしたか。
少額資金の方でも、十分使用に耐える汎用性の高いEAに仕上がっていると思います。「ぜひ、欲しい!」という方は、ご購入をご検討ください。
なお、本EAに関するサポートは、一人一人に対応した懇切丁寧で、かつ、回数無制限のサポートを行っていきますので、ご安心ください。ご質問はいつでも、何度でもお受けします。
詳細・購入