アルゴリズム取引 — 個人投資家のための最初の一歩

最終確認日: · 普遍的な内容
リスク警告 · YMYL この記事は教育目的のみのものであり、投資助言を構成するものではありません。Forex取引には資金を失う高いリスクが伴います — ESMAによれば、個人投資家口座の74〜89%が損失を出しています。

個人投資家のアルゴリズム取引とは、役割を入れ替えるだけの単純な仕組みです。トレーダーがルールを定義し、コンピューターがそれを実行します。「短期移動平均が長期移動平均を上抜け、直近20本のATRが上昇していれば、資金の1パーセントで買いを建て、ストップをエントリーの1.5 ATR下に置く」――本質的にはこれが定義のすべてです。それ以外のVPSや言語、フレームワークは、単なる足場にすぎません。

アルゴリズム取引とは何か、そして何ではないのか

アルゴリズムとは二つのものが一体になったものです。一つは精密に定義された戦略、もう一つは感情にひるむことなくそれを発火させる仕組みです。エントリー、エグジット、ポジションサイズ、損失管理の条件一式を曖昧さのない言葉で書き出せるトレーダーは、仕事の半分を終えています。残りは、その文書をMQL5、Python、あるいは単なるアラートへ翻訳するだけです。その規律を欠くトレーダーは、まず構文の学習から始め、後になってコード化すべき具体的なものが何もないことに気づきます。システム取引に関するまともな本はどれも同じ助言を繰り返しています――まず戦略を手作業で運用可能にし、自動化はその次だ、と。けれども「199ドルでボットを」とうたう週末講座は、それを無視します。アルゴは魔法のような不労所得の源でもありません。今日機能する戦略は、ある特定の市場の規則性がまだ成り立っているから機能しているのであり、それが消えた瞬間、ボットは裁量トレーダーと同じだけ確実に負けます。しかも「何かがおかしい」という感情的な警告すら伴わずに。

アラートから完全自動化まで――四段のはしご

自然な道筋は四つの段を通ります。第一段は、TradingViewやMetaTraderのプラットフォームアラートです。エントリー条件が満たされると、音やメールで知らせてくれます。トレーダーはまだ自分で注文をクリックしますが、戦略をプラットフォームが表現できるほど正確なルールへ翻訳することを強いられます。多くの個人トレーダーはこの段を離れず、また離れる必要もありません。1日あたりのシグナル数が少なければ、アラートと規律で十分だからです。第二段は、MetaTrader向けのMQL5で書いた単純なEA(Expert Advisor)です。多くは移動平均のクロスオーバーにトレイリングストップを付けたもの、あるいはATRブレイクアウトです。こうしたEAは200〜400行程度で、数週間で組み上がります。EAの基礎は実践カテゴリーの記事群で扱っています。第三段は、pandas・NumPy・backtraderを使うPythonのバックテスターです。ここではトレーダーは一晩で数十通りの戦略バリアントを反復検証します。第四段(任意)は、Interactive BrokersやOANDAとREST、あるいはFIXで直接つなぎ、仲介層としてのMetaTraderを引退させる段階です。

必要なスキルと言語の選択

リストは短いものです。最も重要なのは統計的な思考です。勝率、プロフィットファクター、期待値の違いを把握し、50回のトレードで描いたエクイティカーブはまだ何も証明しないと知っていることです。これなしでは、きれいなコードでさえ「直近6回が勝ちトレードだったから戦略は機能する」という形の結論を生みます。それは分析ではなく帰無仮説です。第二に来るのは、検証サイクルへの忍耐です。アイデア、コーディング、バックテスト、ウォークフォワード、デモ口座で3〜6カ月、そしてようやく実際の資金です。第三はプログラミングの基礎です。変数、ループ、関数、pandasのDataFrame。ソフトウェアエンジニアである必要はありません。他人のEAを読み、全体を壊さずにパラメーターを変えられれば十分です。言語の選択は一点にかかっています――トレーダーはMetaTraderの内側にとどまるのか、それとも外へ出るのか。MQL5はMT5の母国語で、執行レイテンシは1桁ミリ秒の単位、Strategy Testerは初めからまずまずのバックテストを提供します。PythonはMetaTraderの外側の世界そのものです。データ処理にpandasとNumPy、バックテストにbacktraderやvectorbt、Interactive BrokersやOANDA向けのRESTクライアント。リスク管理の考え方そのものは、リスク管理カテゴリーの解説とあわせて押さえておくとよいでしょう。

具体例――最初の戦略を着想からバックテストまで

EUR/USDのH1足でクロスオーバー戦略を取り上げます。EMA 21がSMA 55を下から上抜けし、かつ直近14本のATRが50期間平均を上回っているとき、買いを建てます。ストップはエントリーの1.5 ATR下、利確(テイクプロフィット)は2.5 ATR上、ポジションサイズは資金の1パーセントです。ステップ1――トレーダーはMT5上で、直近6カ月のデータに対して40回のエントリーを手作業で執行し、勝率と平均勝ちトレード・平均負けトレードを計算します。仮に結果が勝率38パーセント、プロフィットファクター1.4だったとしましょう。ステップ2――MQL5でEAをコード化し、5年分のヒストリーにわたってStrategy Testerにかけます。結果は手作業の数値に収束するか、あるいは系統的にずれるはずです。後者の場合、ルールを正しく書き出せていなかったか、手作業の執行の一部を直感的に解釈していたかのどちらかだと分かります。ステップ3――同じEAを、現実的なスプレッドとスリッページを含めたDukascopyのデータで、Pythonのbacktraderを使ってテストします。ステップ4――数値が安定していれば、ウォークフォワードへ進みます。すべての数値は説明のためのもので、約束ではなく順序を示しています。

“アルゴリズムトレーダーの最大の敵はデータスヌーピング・バイアスです。バックテストで見事に見えるモデルが実取引で失敗するのは、戦略が間違っているからではなく、評価に使ったのと同じデータでそれを最適化してしまったからなのです。” — Ernest P. Chan, Algorithmic Trading: Winning Strategies and Their Rationale, Wiley, 2013

なぜ個人のアルゴ案件はたいてい失敗するのか

理由は二つあり、どちらもプログラミングの腕とは関係ありません。第一は、自動化する価値のある市場のエッジ(優位性)が存在しないことです。トレーダーはバックテスターを書き、直近5年のデータにパラメーターを当てはめ、現実が決して生み出せないほど美しいエクイティカーブにたどり着きます。実取引に移り、お金を失い、「もっとよい戦略」が要ると結論づけ、同じループを繰り返します。最初の1行を書く前にエッジを切り出して検証する方法は、戦略カテゴリーの記事で掘り下げています。第二の理由は、「あなたの戦略にはエッジがない、製図板に戻りなさい」という結論を受け入れたがらないことです。たいていのトレーダーはそれを聞くより、パラメーターを過剰に最適化するほうを選びます。アルゴリズムはそのメッセージを和らげてはくれません。ただ、より速く繰り返すだけです。インフラの面では、現実は地味なものです。VultrやHetznerのVPSは月5〜20ユーロ、MetaTraderとPythonは無料、Dukascopyのデータも無料です。参入障壁は月に数千ユーロではなく、数十ユーロです。ボトルネックはお金ではなく、時間と統計的思考です。VPS上でEAを動かす実務的な手引きは、ForexMechanicsのプラットフォームとツールのセクションにあります。

今すぐやるべきこと

  1. トレード記録(トレードジャーナル)を開き、1週間にわたって、執行するすべてのエントリーを「もしXかつYなら、Zを建てる」という曖昧さのないルールの形で書き留めてください。「たいてい」「しがちだ」「そんな気がする」といった言葉を追放するのです。週の終わりに、どの判断もそうしたルールに書き換えられないなら、あなたが持っているのは自動化すべき戦略ではなく、反応の寄せ集めにすぎません。
  2. FX会社から無料のMetaTrader 5をダウンロードし、デモ口座を開き、TradingViewまたはMT5標準のアラート機能で、最も単純なルールに対して三つのアラートを設定してください。2週間にわたり、そのアラートが、あなたが手作業で選んだであろう瞬間と同じタイミングで発火するかどうかを観察します。
  3. 3週目にはmql5.comに登録し、MT5に同梱されたMetaEditorを開き、最も単純なEA――EMA 21とSMA 55のクロスオーバーに1.5 ATRのトレイリングストップを付けたもの――を、MQL5 Referenceのドキュメントに頼りながら書いてください。目標は40〜80時間で最初の動くEAを作ることであり、利益の出るEAではありません。
  4. 2カ月後にPython 3.11以降をインストールし、pip installでpandas、NumPy、backtraderを追加し、Backtrader Quickstart Guideをひととおりこなしたうえで、先のMQL5のEAをbacktraderの戦略として再実装してください。同じデータでバックテスト結果を比べ、数パーセントを超える食い違いがあれば、どこかに隠れた前提が潜んでいることを意味します。
  5. EAをVultrやHetznerのVPS上のデモMetaTraderアカウントに載せるのは、5カ月目か6カ月目になってからにしてください。3カ月与えます。デモの成績がウォークフォワードのバックテストと一致して初めて、失っても月々の家計を揺るがさない資金での実口座を検討します。最初のイテレーションでは500〜2,000ユーロ、それ以上は出さないことです。
Jarosław Wasiński
著者について

Jarosław Wasiński

MyBank.pl 編集長 · 金融・市場アナリスト

金融業界で20年以上の経験を持つ独立系アナリスト兼実務家です。2004年から運営されているポータルサイト MyBank.pl の創設者であり編集長を務めています。2007年から外国為替市場とマクロ経済のファンダメンタル分析を行っています。グローバル市場の視点から執筆し、欧州(ESMA)および日本(金融庁/FSA)の規制枠組みにも目を配っています。

出典・参考文献

  1. MetaQuotes MetaTrader 5 — Automated Trading · oficjalny opis automatycznego handlu w MetaTraderze, ścieżek pozyskania robota i miejsca strategy testera w warsztacie www.metatrader5.com ↗
  2. MetaQuotes MQL5 Reference — programming language for algorithmic trading · dokumentacja referencyjna języka MQL5 i pięciu typów aplikacji (EA, indykatory, skrypty, serwisy, biblioteki) www.mql5.com ↗
  3. Backtrader Backtrader Quickstart Guide · podręcznik startowy frameworka backtrader w Pythonie — strategie, indykatory, optymalizacja parametrów www.backtrader.com ↗
  4. BIS BIS Quarterly Review, December 2019 — FX trading rises to $6.6 trillion per day · omówienie elektronicznej egzekucji i roli niebankowych principal trading firms w obrocie walutowym — kontekst dla retail algo www.bis.org ↗

よくある質問

個人投資家のアルゴリズム取引とは、本当のところ何なのか――そして、明らかに何ではないのか。

個人投資家のアルゴリズム取引とは、執行のレイヤーをコンピューターに委ねることです。トレーダーはルールを曖昧さのない条件として定義します(「21期間の移動平均が55期間の移動平均を上抜け、直近20本のATRが上昇していれば、資金の1パーセントの買いポジションを1.5 ATRのトレイリングストップ付きで建てる」)。すると、ソフトウェアはその条件の成立を認識し、ためらわず、Telegramを確認せず、直前の負けトレードにひるむこともなく注文を発火させます。アルゴリズムが明らかにそうではないのは、三つの次元を同時に満たす魔法のような不労所得エンジンだということです。存在しなかったエッジ(優位性)を生み出しはしません――手作業でトレーダーが負けるなら、ボットはより速く、より安く負けます。相場のレジーム変化からも守ってくれません――構築のもとにしたヒストリーがトレンド相場で、いまはレンジなら、エクイティカーブは裁量トレーダーと同じだけ効率よく溶けていきます。そして戦略そのものの論理的な欠陥を直しもしません――ただ、より一貫してそれをコード化するだけです。

手作業のクリックからボットの稼働まで、現実的なはしごはどのようなものか。

第一段はTradingViewやMT5のプラットフォームアラートで、エントリー条件が満たされると音やメールで知らせます。トレーダーはまだ自分で注文をクリックしますが、戦略を曖昧さのないルールへ翻訳することを強いられます。第二段はMetaTrader向けのMQL5で書く単純なExpert Advisorで、多くは移動平均のクロスオーバー、あるいは保ち合いからのブレイクアウトにトレイリングストップを付けたものです。第三段はpandas・NumPy・backtraderを使うPythonのバックテスターで、エクイティカーブやリスク指標を一瞬で計算します。第四段(任意)は、Interactive BrokersやOANDAとREST、あるいはFIXで直接つなぎ、仲介層としてのMetaTraderを後にする接続です。現実的な時間軸は、Udemyの週末講座ではなく、夜の時間を使った12〜24カ月の作業です。

実際にはどんなスキルが必要なのか――そしてそれは「プログラミングを学べば金持ちになれる」という神話とどう違うのか。

重要なのは三つ、この順序です。第一は統計的思考です。勝率、プロフィットファクター、期待値の違いを理解し、50回のトレードで描いたエクイティカーブがまだ何も証明しない理由を知っていることです。これなしでは、きれいなコードでさえ「直近6回が勝ちだったから戦略は機能する」といった結論を生みます。第二は検証サイクルへの忍耐です。アイデア、コーディング、バックテスト、ウォークフォワード、デモ口座で3〜6カ月、そしてようやく少額の実資金。このサイクルは何カ月にもおよび、たいていのトレーダーは2〜3回のイテレーションで脱落します。第三はプログラミングの基礎です。変数、ループ、関数、制御構造、そしてpandas DataFrameが何をするかについての多少の感覚。ソフトウェアエンジニアである必要はありません――他人のEAのコードを読み、全体を壊さずにパラメーターを変えられれば十分です。「Pythonを学べば金持ちになれる」という神話は、最も難しく、最も見栄えのしない部分を飛ばしています。すなわち、自動化する価値のある市場のエッジを持っていることです。それがなければ、コードは口座資金をより速く溶かす手段にすぎません。

なぜ個人のアルゴ案件の多くは失敗するのか――そして、成功確率を高める前提条件はあるのか。

アルゴ案件が失敗するのはコードのバグのせいではありません――もっとも、始めのうちはバグが山ほどありますが。失敗するのは、自動化すべきエッジ(優位性)がないからです。トレーダーはPythonを学び、バックテスターを書き、直近5年のデータにパラメーターを当てはめ、現実が決して生み出せないほど美しいエクイティカーブを手にします――古典的なカーブフィッティングです。実取引に移って損を出し、「もっとよい戦略」が要ると結論づけ、ループを繰り返します。成功確率を劇的に高める前提条件は、最初の1行を書く前にエッジが存在していることです――裁量取引でも、ヒストリカルデータ上の純粋な算術でも、直近の相場だけでなく複数の市場レジームにわたって正の期待値を生むほど単純なルールです。長続きする案件を一回限りの試みと分けるもう一つの点は、「あなたの戦略にはエッジがない、製図板に戻りなさい」という答えを受け入れる覚悟です。たいていのトレーダーは、それを聞くより、パラメーターを過剰に最適化するほうを選びます。アルゴリズムはそのメッセージを和らげてはくれません。ただ、より速く繰り返すだけです。インフラの面では現実は地味で、VultrやHetznerのVPSは月5〜20ユーロ、MetaTraderとPythonは無料、Dukascopyのデータも無料です。具体的な税務の判断が必要なときは、税理士に相談してください。なお国内のFX会社は金融庁の登録を受けた業者を選び、無登録の海外業者には注意してください。

さらに深く · 完全ガイド