記事一覧

バックテストに、もうプログラミングは要らない

バックテストノーコード戦略検証初心者

私は2年間、バックテストを避けていました。

概念は分かっていました。トレードルールを過去データに当てて、儲かったかどうかを見る。単純な話です。重要だということも知っていました。本にもそう書いてある。まともに勝っている人は全員そう言う。

理由は単純で、MQL4を書かなければ始まらないと思っていたからです。

「コードを書く」の本当のコスト

MT4のストラテジーテスターを使うには、EA(エキスパートアドバイザ)が要ります。EAを書くにはMQL4を学ぶ必要がある。そしてMQL4を学ぶというのは、言語の文法だけの話ではありません。

  • OnTick() がいつ呼ばれるのか
  • 同じ足で2回エントリーしないための管理
  • スリッページとスプレッドの扱い
  • ロット計算と証拠金のチェック
  • コンパイルエラーとの数時間

「移動平均のクロスで買う、を試したい」という30秒の思いつきに対して、最短でも週末ひとつ分の投資が要る計算です。

ここで起きることは決まっています。人は検証をしなくなります。代わりに「なんとなく良さそう」で実弾を入れる。私がそうでした。

ドロップダウンで組み立てる

いま使っているのは、条件を選択式で積み上げる形式です。コードは1行も書きません。

たとえばこういうルールを作るとします。

エントリー条件

  • EMA(9) が EMA(21) を上抜け
  • RSI(14) > 40

エントリー

  • 成行で買い注文

決済条件

  • 損切り: -30 pips
  • 利確: +60 pips

これを全部プルダウンから選びます。所要時間はおそらく40秒。実行すると、勝率・プロフィットファクター・最大ドローダウン・取引数・平均利益・平均損失・損益比が出ます。

Run 1: RSI onlyEUR/USD · H457%Win Rate1.64Profit Factor12.1%Max DD142TradesRun 2: RSI + EMA filterEUR/USD · H468%Win Rate2.10Profit Factor7.4%Max DD89Trades
1回目は素のアイデア、2回目はトレンドフィルタ付き。取引数は減り、期待値は上がりました。

効いてくるのは速度そのものより、速度が行動を変えるところです。40秒なら思いついた瞬間に試せる。試せるなら試す。「RSIの閾値を40じゃなくて50にしたらどうなる?」を、興味が消える前に確認できる。

週末ひとつ分かかる作業は、大半が実行されないまま終わります。

何ができないか

ノーコードの戦略ビルダーには、はっきりした限界があります。売り込む側があまり書かない部分なので、先に並べておきます。

1. 用意された条件の組み合わせしか作れない

「直近20本の高値をブレイクし、かつ前日のNY時間の値幅が平均以下で、かつ経済指標の発表から2時間以上経過している」。こうした複合条件は、選択式では表現しきれません。独自ロジックが本体である戦略なら、コードを書くほうが速い。

2. ポジション管理の細かい制御が効かない

ピラミッディング、部分決済、トレーリングストップの独自ロジックなど、注文の出し方そのものに工夫がある戦略は表現しづらい領域です。

3. 過剰最適化はむしろ簡単になる

これが一番の落とし穴です。40秒で試せるということは、40秒ごとにパラメータをいじれるということでもあります。RSIの閾値を35から65まで総当たりして、いちばん成績の良い値を採用する。それはカーブフィッティングと呼ばれる作業で、検証の反対側にあります。

速く回せる道具は、速く自分を騙す道具にもなります。私は期間を分けて(前半で作り、後半で確認する)使うようにしています。

それでも、まず回すべき理由

限界を踏まえた上で、それでもノーコードから始めるべきだと思っています。

比べる相手を間違えているからです。粗い検証が競っているのは、精緻なバックテストではありません。何もしていない状態です。

私が2年間やっていたことを正確に書くと、何もしていませんでした。その状態と比べれば、40秒で出る勝率とプロフィットファクターは、圧倒的に情報量が多い。

そして実際にやってみると、多くの思いつきは露骨に機能しません。「上位足のトレンド方向にだけエントリーする」という、あれほど正しく聞こえたルールが、自分の見ていた通貨ペアと時間軸では期待値をむしろ下げていた、というようなことが分かる。コードを書く必要はどこにもありませんでした。ただ、試さない限り永遠に分からないままだった、というだけです。

Trade #47 of 142+38 pipsEUR/USD · H4 · RSI oversold entry← PrevNext →RSI < 30EntryExit
バックテスト結果のトレードをクリックすると、その動きを1本ずつ再生できます。

結果画面から、どのトレードがどこで入ってどこで出たのかをチャート上で確認できます。数字だけ見ていると「勝率52%」で終わりますが、実際の矢印を追うと「負けの大半が特定の時間帯に集中している」といったことが見えます。

使うときの前提

Formiqのバックテストは無料プランで1日3回まで実行できます(未登録の場合は1回)。パラメータを総当たりするには足りない回数ですが、前述のとおりそれはむしろ健全な制約かもしれません。無制限に回したい場合はUnlimitedプランです。

作った戦略は保存でき、別の通貨ペアや期間で再実行できます。同じルールがUSD/JPYで機能してEUR/USDで機能しないなら、それは知る価値のある事実です。

そもそもこの2つは値幅の水準が違います(ドル円は1日平均100.5 pips、ユーロドルは77.4 pips)。同じpips幅の損切りを両方に当てていたなら、機能しなかった理由は戦略ではなくそこかもしれません。

なお、価格データはヒストリカルであり、最新のローソク足はおおむね2週間前までです。直近の相場での検証には向きません。


Formiqのバックテストを試す — 条件をプルダウンで選ぶだけ。コードは不要です。

Formiqは、リプレイ練習とノーコードバックテストをブラウザだけで使える無料のFXツールです。 チャートを開く、または無料プランでできることをご覧ください。