こんにちは!
シェリーです。
今回はFXのバックテストにプログラミングは必要なのか?について書きました。
今回のテーマは、
・バックテストにプログラミングスキルは必要なのか?
・バックテストは重要?
・バックテストの効果的なタイミングはいつ?
・そして類似の性能テストであるフォワードテストとの違いは何か?
と言ったことを中心にお話しています。
FXのEAのプログラミングについてどんなものなのかを知りたい方にとって、きっと参考になるのではないでしょうか。
それではEAのバックテストを取るにはプログラミングスキルが必要かという話題からお話ししていきましょう。
この記事の目次
FXのEAのバックテストを取るにはプログラミングスキルが必要?
バックテストを取るにはプログラミングスキルが必要か、
結論を言うと必ずしも必要ではありません。
基本的にバックテストを取る場合はプログラミングによって行いますが、外注をしたり、ツールを使えば自分にプログラミングスキルがなくとも十分バックテストを取ることができるのです。
ただ、プログラミングスキルは不要でも可能であればあった方が望ましいといえます。
なぜなら、自分の思った通りにバックテストの細かい微調整ができるからです。
EAのインジケーター設定や、利確損切りと言ったEAの判断基準を自由に調整することができるため、自分の手元にあるEAの性能をこまめなバックテストを行うことによって引き出すことができます。
確かにプログラミングスキルがなくともこういったことは可能ですが、外注であればお金が余計かかりますし、ツールだと柔軟に対応できるかどうかは不明です。
こういった点があるため、基本的に自分でプログラミングするのが望ましいといえます。
ちなみに外注する場合は、基本的にはクラウドソーシングサービスなどを利用してエンジニアにバックテストの代行などを行ってもらうことになります。
自分が行わなくとも気軽にバックテストが取れるのですが、1回当たり数千円の報酬を支払う必要があるため、金銭的にやや障壁があります。
また、手持ちのインジケーターを自動売買化するツールを使ってバックテストをすることでも実証をすることは可能です。
こちらのツールは基本的に利用しやすいものが多いですが、それぞれ操作方法が異なるため、そういったことを知って利用する必要があります。
あとはやはり、外注の場合は自分でプログラミングする場合と比べてしまうとどうしても設定に限界がありますから、本腰を入れて繰り返しバックテストを取りたい場合は、やはり自分でプログラミングを覚えることをおすすめします。
最近ではオンラインのプログラミングスクールなどもあるので、それを利用してプログラミングを覚えるというのがおすすめの方法です。
FXのEA(自動売買)におけるバックテストの重要性とは?
EAにおいてバックテストは重要です。
このバックテストを利用しないことにはそもそもEAが動くかどうか、ひたすら損害を出すシステムになっているかどうかを検証することが出来ません。
こういった意味では重要性がありますが、ここでは以下の二点についてお話ししていきましょう。
・FXのEAのバックテストの重要性
・裁量におけるバックテストの重要性
ちなみに裁量とは裁量取引のことで、EAを使わない手動での取引のことです。
これらについて、まずEAのバックテストの重要性から解説します。
EA(自動売買)におけるバックテストの重要性
EAのバックテストはとても重要です。
簡単に言えば、そのEAのロジック(取引パターン)に優位性があるかどうかを調べるために必須と言えます。
EAを作ってみた、あるいは手元にEAがあるといった場合、そのEAはそもそもどんな結果が期待できるのか、あるいはこれらをどう設定すれば期待値が一番高いのか、と言った疑問に答えてくれるのが過去のチャートを利用してデモトレードするバックテストなのです。
このバックテストでシステム通りに動かない、あるいはどんどん損失が積み上がっていくというようなEAでは、実際のトレードにおいても十分な運用成績を残すことはできません。
EAの設定や条件を変えることで、バックテストの成績を見て、また変更を行う。
そして、それを繰り返すことによってEAの完成度を高めていく、という意味ではEAにおけるバックテストはとても重要と言えますね。
しかし、EAの実力を把握する際に、EAを販売しているサイトに掲載されているバックテスト結果はほとんど参考になりませんし、参考するべきとは考えていません。
なぜならばバックテストの目的は、
「実運用の前に自分の取引環境に合わせてテストするもの」
だからです。
バックテストは確かに重要ですが、見方を間違えるとまるで意味がない、ので気をつけましょう。
裁量におけるバックテストの重要性
EAのバックテストは重要だということはお話しました。
では、裁量取引においてはどうでしょうか。
答えは重要ではありますが、EA程ではないという結論です。
ユーザーの判断によって取引を行う裁量取引をバックテストで行うのは、確かに参考になることもあります。
自分の投資パターンが見えてくるからです。
しかし、裁量取引はどんな優秀なトレーダーであっても、その場の雰囲気やその時の心身のコンディションによって取引に若干の感情が入ってきます。
その結果、取引のパターンも若干変化するのです。
つまり、バックテストと同じ運用パターンで実際に動くとは限らないといえます。
自分の取引のクセを何となく知ることができるかもしれませんが、EAにおけるバックテストに比べると、その重要性はどうしても低くなりがちです。
また、もう一つのデメリットとして膨大な時間がかかります。
裁量のバックテストは一つのパターンを検証するのに、場合によっては数か月かかることも少なくありません。
大相場に注目して短時間で行うという手段もありますが、そうなると正確性がやや失われます。
とにかくEAのバックテストに比べると、重要性が落ちるばかりか、非常に時間もかかり大変な作業が要するというのが裁量におけるバックテストなのです。
FXのEA(自動売買)でバックテストを取る効果的なタイミングとは?
EAでバックテストを取る効果的なタイミングは、フォワードテストを行う前や実際に導入する前です。
そもそもEA導入の際は取引を行うかどうか、ちゃんとシステム通りに動くのかどうかを最初にチェックする必要があります。
つまり、EAが出来上がった、あるいは手に入ったという導入前の最初期段階のタイミングで行うのが効果的なタイミングといえるでしょう。
もし可能であれば、開発段階や、そもそも開発される前のタイミングであっても効果的です。
実際に利用する直前や、最後のテスト時に行うというのはタイミングとしては遅いので、早めにバックテストを取るのをお勧めします。
FXのバックテストとフォワードテストの違いとは?
EAにはバックテスト以外にも、フォワードテストがあります。
このテストは、EAを稼働させる前に実際に少額の証拠金を投入して、現在進行の相場に合わせてテストを行うというものです。
このフォワードテストとバックテストの違いは、現在の相場を使うか、過去の相場を使うかの違いです。
そして、使う場面においてもこの二つは全く違います。
バックテストを使う場面
バックテストは、開発段階や、ちゃんとシステム通りに動くかどうか、使えるかどうかの判断をするという場面で使います。
先ほども触れましたが、EAを実際に使う前のかなり早い初期段階で利用するのが、正しいバックテストを使う場面と言えるのです。
また、EAを公開して他のユーザーに使ってもらう場合の実績として使っている方を利用している方を多く見受けますが、EAのバックテストは購入にあたっての何の根拠にもなりません(笑)
EAのバックテストには「カーブフィッティング」が存在します。
カーブフィッティングとは?
カーブフィッティングとは、システムを過去の相場にぴったり合うように過剰に最適化することです。過去の相場に合うようにシステムを作るので、バックテストの成績は優秀になります。しかし、実際の取引で使うと過去と未来は同じではありませんので、大抵の場合、バックテスト通りに行きません。
例えば、ドル円が115円から120円の間を往復しているだけの期間があったとします。115円で買って、120円で決済してドテンで売り、115円になったら決済してドテンで買いというルールのシステムを作った場合、この期間だけでは物凄く優秀な成績のシステムが出来ます。
勿論、このシステムはこの横ばいの期間が終われば、役に立たないシステムになります。流石にここまで極端なカーブフィッティングをしている人はいないと思いますが、似たようなことをしている人はたくさんいると思います。
例えば、移動平均の期間をより利益を上げる期間に変更する、MACDのパラメーターを色々と変えてみる、単体のルールではダマシによく引っかかるからフィルター(売買ルールの限定条件)を追加してみる、RSIの買いの条件を40%以下から20%以下にしてみる等です。
ある程度、テクニカル指標を使っている人ならば思い当たる節があると思います。このように少しでもバックテストで利益を上げようとパラメーターを最適化して行って、行き過ぎるとカーブフィッティングになります。
カーブフィッティングされたシステムは、過去の相場にぴったり合うように作られているので、未来の相場では役に立たないことが多いです。「システムはシンプルな方が良い」とよく言われますが、あまり複雑になるとカーブフィッティングする可能性が高いので、このように言われる一因になっています。
つまり、自分のEAをとにかく過去の相場で勝てるようなスペックに仕上げ、「めっちゃ結果出てますよ」という根拠を示すことで、ユーザーの信用を勝ち取ろうとするわけです。
この「過去の相場で勝てるようにする」というのが本末転倒な話なんですね。
もっと詳しく知りたい方は、現在期間限定無料公開をしているメルマガにてEAについても触れておりますので、是非ご覧ください。
フォワードテストを使う場面
フォワードテストは、2つの場面で使います。
・一つは実際に使う直前
・もう一つは、より厳密な実績を公開する場面です。
EAをいざ使おうという直前のシーンで、本当に使えるものなのか、最近の相場の傾向を利用して検証する場面です。
もう一つがEAを公開した後に、より厳密な実績を公開する場合です。
これは提供者側の視点で見る場面ですね。
バックテストは改ざんすることも可能で、多くのユーザーはそこまで信用の材料にはしていません。
そのため、それらのユーザーに対して、より説得力のあるものとしてフォワードテストを行い公開する、ということですね。
こうすることによって多くのユーザーから信用を得ることができ、利用してもらえるというのがこの場面で使うメリットとなります。
ただし、画像データや一部を切り取っただけのフォワードテストデータは全く意味がありません。
全てのフォワードテストを公開していないEAに手を出すのは危険なのでやめておきましょう。
FXのバックテストにおけるプログラミングのやり方とは?
EAのバックテストはMT4という取引ツールを使い、MQLプログラミングを行う必要があります。
MQLプログラミングを使うことによって初めてバックテストを行うことができます。
そしてMQLプログラミングでバックテストを取る方法としては、自分で行う方法と外注する方法の2つがあります。
これら2つの方法について紹介していきましょう。
プログラミングスキルを身に付ける
プログラミングスキルを身につけるにはMQLプログラミングが必要ですが、このプログラムはC++言語をベースとしたもので、オンラインのプログラミングスクールを受講すれば1~2か月程度でマスターできます。
※一応独学でも可能ですが、とても時間がかかります。プロにレクチャーしてもらった方がずっと早くできます。
思った以上に敷居は低いと感じた方は多いのではないでしょうか?
しっかりと受講すれば意外と早く身に付けられます。
興味がある方は、是非一度挑戦してみることをオススメします^^
プログラマーに外注依頼する
EAのためにプログラミングを覚えている暇はない、もっと簡単にバックテストをしたい
という方は、MQLができるエンジニアにバックテストを代行してもらうのが良いでしょう。
この外注依頼を行えば、自分にプログラミングスキルがなくともプロの技術であっという間にバックテストを実施してもらえます。
ちなみに僕もバックテストはもちろんインジケーターの作成なども出来ますので、エンジニアをお探しの方は是非お声がけください^^
FXのEAのバックテストのやり方とは?
EAのバックテストのやり方は、一番簡単な方法で言うと先ほど取り上げたMT4にEAのデータを読み込ませて行うものがあります。
これは簡易的なものであり、やや自由度は少ないのですが、簡単な方法としてオススメです。
大まかな流れとしては、MT4でテストしたいEAを選び、通貨ペアの設定やバックテストで検証するための過去のチャートを読み込ませ、FXの口座をデモ口座にして最小単位での取引を行わせるのが大まかな流れです。
大まかな流れとしてはこういった設定を行い取引を開始させると、読み込ませた過去のデータを元にバックテストを開始してくれるのです。
ちなみにMT4を使わない場合は、先ほど紹介したプログラムを自作・外注したり、MT4以外のツールを使った検証方法があります。
いずれの方法も一長一短ありますので、自分に合った方法を採用すると良いでしょう^^
FXのバックテストはスマホで出来る?
結論から言うと、本格的なバックテストに関してはほぼ行うことはできません。
その理由として、過去のデータをスマホで読み込ませることができないことが挙げられます。
パソコンの場合は自由にデータを扱うことができるのでMT4を使った簡易的なテストを行うことができますが、スマホ版のMT4ではこういった設定に制限があるので、読み込ませられないからです。
しかし、昨今のスマホの進歩により、簡易的なツールであればバックテストを行うことができるようになりました。
パソコンのような本格的なバックテストはできませんが、大まかな目安となる運用結果や、そもそも動くのかと言ったテストに関してはスマホ上でも可能です。
ただ、この結果をもとに微調整を行う場合は、どうしてもパソコンを使って再度EAの設定を変えるといった対応を行う必要はあるのでご注意ください。
まとめ
EAのプログラミングは、基本的に取引ツールMT4で動かせるようなC++ベースのMQLを利用する必要があります。
このMQLというプログラミング言語を自力で覚える以外にも、簡易的なツールの使用や、プロに外注するといった方法でバックテストを行うことは可能です。
このようなバックテストをしっかり勉強し、EAの機能を十分に検証してから実際のFXに投入することをオススメします。
また、バックテストや、その他プログラミングに興味がある方は一度MQLプログラミングを学ぶことも良いでしょう。
先ほどもお話しましたが、オンラインのプログラミングスクールを受講すれば1~2か月程度で習得可能なため、本業がある方でも安心して習得が可能です^^