バックテストに、もうプログラミングは要らない
私は2年間、バックテストを避けていました。
概念は分かっていました。トレードルールを過去データに当てて、儲かったかどうかを見る。単純な話です。重要だということも知っていました。本にもそう書いてある。まともに勝っている人は全員そう言う。
理由は単純で、MQL4を書かなければ始まらないと思っていたからです。
「コードを書く」の本当のコスト
MT4のストラテジーテスターを使うには、EA(エキスパートアドバイザ)が要ります。EAを書くにはMQL4を学ぶ必要がある。そしてMQL4を学ぶというのは、言語の文法だけの話ではありません。
OnTick()がいつ呼ばれるのか- 同じ足で2回エントリーしないための管理
- スリッページとスプレッドの扱い
- ロット計算と証拠金のチェック
- コンパイルエラーとの数時間
「移動平均のクロスで買う、を試したい」という30秒の思いつきに対して、最短でも週末ひとつ分の投資が要る計算です。
ここで起きることは決まっています。人は検証をしなくなります。代わりに「なんとなく良さそう」で実弾を入れる。私がそうでした。
ドロップダウンで組み立てる
いま使っているのは、条件を選択式で積み上げる形式です。コードは1行も書きません。
たとえばこういうルールを作るとします。
エントリー条件
- EMA(9) が EMA(21) を上抜け
- RSI(14) > 40
エントリー
- 成行で買い注文
決済条件
- 損切り: -30 pips
- 利確: +60 pips
これを全部プルダウンから選びます。所要時間はおそらく40秒。実行すると、勝率・プロフィットファクター・最大ドローダウン・取引数・平均利益・平均損失・損益比が出ます。
効いてくるのは速度そのものより、速度が行動を変えるところです。40秒なら思いついた瞬間に試せる。試せるなら試す。「RSIの閾値を40じゃなくて50にしたらどうなる?」を、興味が消える前に確認できる。
週末ひとつ分かかる作業は、大半が実行されないまま終わります。
何ができないか
ノーコードの戦略ビルダーには、はっきりした限界があります。売り込む側があまり書かない部分なので、先に並べておきます。
1. 用意された条件の組み合わせしか作れない
「直近20本の高値をブレイクし、かつ前日のNY時間の値幅が平均以下で、かつ経済指標の発表から2時間以上経過している」。こうした複合条件は、選択式では表現しきれません。独自ロジックが本体である戦略なら、コードを書くほうが速い。
2. ポジション管理の細かい制御が効かない
ピラミッディング、部分決済、トレーリングストップの独自ロジックなど、注文の出し方そのものに工夫がある戦略は表現しづらい領域です。
3. 過剰最適化はむしろ簡単になる
これが一番の落とし穴です。40秒で試せるということは、40秒ごとにパラメータをいじれるということでもあります。RSIの閾値を35から65まで総当たりして、いちばん成績の良い値を採用する。それはカーブフィッティングと呼ばれる作業で、検証の反対側にあります。
速く回せる道具は、速く自分を騙す道具にもなります。私は期間を分けて(前半で作り、後半で確認する)使うようにしています。
それでも、まず回すべき理由
限界を踏まえた上で、それでもノーコードから始めるべきだと思っています。
比べる相手を間違えているからです。粗い検証が競っているのは、精緻なバックテストではありません。何もしていない状態です。
私が2年間やっていたことを正確に書くと、何もしていませんでした。その状態と比べれば、40秒で出る勝率とプロフィットファクターは、圧倒的に情報量が多い。
そして実際にやってみると、多くの思いつきは露骨に機能しません。「上位足のトレンド方向にだけエントリーする」という、あれほど正しく聞こえたルールが、自分の見ていた通貨ペアと時間軸では期待値をむしろ下げていた、というようなことが分かる。コードを書く必要はどこにもありませんでした。ただ、試さない限り永遠に分からないままだった、というだけです。
結果画面から、どのトレードがどこで入ってどこで出たのかをチャート上で確認できます。数字だけ見ていると「勝率52%」で終わりますが、実際の矢印を追うと「負けの大半が特定の時間帯に集中している」といったことが見えます。
使うときの前提
Formiqのバックテストは無料プランで1日3回まで実行できます(未登録の場合は1回)。パラメータを総当たりするには足りない回数ですが、前述のとおりそれはむしろ健全な制約かもしれません。無制限に回したい場合はUnlimitedプランです。
作った戦略は保存でき、別の通貨ペアや期間で再実行できます。同じルールがUSD/JPYで機能してEUR/USDで機能しないなら、それは知る価値のある事実です。
そもそもこの2つは値幅の水準が違います(ドル円は1日平均100.5 pips、ユーロドルは77.4 pips)。同じpips幅の損切りを両方に当てていたなら、機能しなかった理由は戦略ではなくそこかもしれません。
なお、価格データはヒストリカルであり、最新のローソク足はおおむね2週間前までです。直近の相場での検証には向きません。
Formiqのバックテストを試す — 条件をプルダウンで選ぶだけ。コードは不要です。
Formiqは、リプレイ練習とノーコードバックテストをブラウザだけで使える無料のFXツールです。 チャートを開く、または無料プランでできることをご覧ください。