販売されているほとんどが中身の見えないEA。
もし、理解しようとしても何がなんだか分からない……。
そんな初心者のために、実力派EA開発者として名高いhokutoさんに、EAのサンプルを見せてもらいながら、ソースコードの意味を解説していただきました。
これを見ればEAの「よく分からないからコワイ」というイメージが払拭できるはずです。
hokuto(ほくと)氏プロフィール
開発歴5年超のEA開発者にして、EAトレーダー。 SNSでは日々収支報告を公開している。
聞き手・本文◉荻田里佳
EAは難しいものじゃない。分解すれば意味が分かる
─EAの中身を見せてもらう前にお尋ねしたいのですが、EAを「購入する」のと「自分で組む」のはどちらが良いと思いますか?
hokuto 一長一短あると思います。EAを購入した場合はコードの知識がなくても使えるのがメリットですが、どんなロジックなのか見えないものがほとんどですよね。だから「ここでエントリー(または決済)してほしいのにしてくれない」ということが起こり得るのがデメリット。一方で、自作のEAは自分の作りたいように作れるのがメリットです。自分の願望を叶えてくれるので作り甲斐はあります。
─メリットを聞くと魅力的に感じますが、EAは難しいイメージがあってなかなか手が出せないんです。
hokuto 最初は何が書いてあるか分からないかもしれませんが、一つ一つ分解して見ていけば難しくはありません。特にMT4やMT5を使用する場合は、インジケーターのコードがパーツのように準備されていますし、やっているうちに覚えるので身構えないでください。
─そもそもhokutoさんが自動売買を始めるきっかけは何だったんですか?
hokuto 兼業トレーダーとしてチャートと向き合っていたんですが、その時間を確保するのが難しいと感じていたんです。狙いたい時間帯にトレードできないことがあって、それが致命的だなって。裁量トレードでは負けていたわけではありませんでしたが、機械的にやった方が自由な時間も増えますし、気持ち的にも余裕が生まれました。
─裁量トレードでは時間はもちろん、チャートと向き合うための体力も必要ですよね。
hokuto それに加えて気力も要ると思います。また、裁量トレードはうまい人を真似しても必ずしも同じ結果になるとは限りません。その点、EAは再現性が高くなるので、裁量でトレードをやっているけれど時間が取れず、やっとトレードができても負けが続いているという人にこそお勧めです。
各個撃破していくことで理解を深めていく
─全部が関数に見えるんですが、理系じゃなくても大丈夫ですか?
hokuto 私も文系だったのでそこは大丈夫です。最初の三行も一見すると難しそうですが、読んでいくとCopyrightなど、よく耳にする英語も記述されており、そのまま著作権情報が書いてあると分かります。
また、次のエリアで「グローバル変数エリア」と少し難しい言葉が出てきますが、ここは「他のエリアに対して指示を出す権利を持った場所」と覚えてください。
─グローバル変数エリアにLotsとあるので、ロット数を決めるという意味ですよね。
hokuto そうです。後ほど説明しますが、エントリーのコードでもLotsが出てくるのですが、ここでの数字が反映されるようになっています。
条件を定めてロジックを組む
─今回は移動平均線を使ったEAですよね。
hokuto まず、インジケーターを設定するには、それぞれの定型コードを最初に入れます。「このインジケーターを使う」と定めるイメージです。インジケーターの呼称(移動平均線はiMAなど)は、ネットで検索すれば出てくるので覚えなくても大丈夫。
売買に関連するコードの流れとしては、「インジケーターの定型コードを入れる→決済→エントリー」となります。また、EAを作るときによくつまづくのが「for(int」から始まる部分。「保有しているポジション」または、「エントリーを予約しているポジション」のマジックナンバー、通貨ペア名などを確認するエリアです。これらが設定条件と合えば次の動きへ。ここについては初心者の場合、何が書いてあるかを理解できれば十分だと思います。
そして、次はいよいよ決済指示へ。今回は分かりやすいようにローソク足が移動平均線より上か下かで決済するコードを組みました。ローソク足の書き方・読み方はコードを組むときにたくさん出てくるので一通り覚えておくとスムーズですよ。
EA運用で月利100%超え。自由な時間を手に入れた
─決済コードでも登場した「for(int~」は初心者がつまづきやすい箇所でしたね。
hokuto そうです。このエリアではポジションを持っていなければエントリーへ進むこと、取引通貨ペア、マジックナンバーなどを確認しています。
次が移動平均線を使った売買指示のコード。エントリーも、分かりやすいように移動平均線よりもローソク足が上にあるか、下にあるかで売買するロジックを組んでいます。また、ストップロスとテイクプロフィットを置きたい場合は「0」と記載している値を変更して設定します。
─複数のインジケーターを使えば細かく設定できそうですね。
hokuto 細かい設定で機械的にトレードができることこそEAのメリットです。私の場合は朝方にエントリーをして、24時間以内に決済するようにコードを組んでいます。チャートに張り付く必要がないので自由な時間が確保できるのは良いですね。また、感情的になりやすい人も機械的なエントリー・決済の方が勝率も上がるかもしれません。
─hokutoさんの戦績はどれぐらいですか?
hokuto FXなのでロット数次第ではありますが、今年初めは月利100%を超え、9月現在の年率は80%超えです。時にはマイナスになる日もありますが、やはりトータルで見るとプラスなんです。どんなコードを組むかによりますが、EAで年率50%は難しい数字ではないと思います。
─裁量をしてマイナス続きで行き詰まっている人こそ、EAを試す価値がありそうですね。
hokuto 上手な裁量トレーダーは資金を順調に増やすことができると思いますが、誰もがそれを真似できるわけではありません。その点、EAは再現性の高いトレードができるのが魅力的ですよね。ただ、中身の見えないEAを使うにしてもロジックをある程度理解し、バックテストを行ってから運用するのが大事なことだと思います。
EAの全体構造はこうなっている!
【1】EAの基本情報を記述するエリア
※EAの基本情報が記述されているエリアで、コピーライトやリンク、バージョン情報、グローバル変数と呼ばれる、EAの中で使われる設定数値、EA起動時と終了時にそれぞれ一度だけ実行される内容などが記述されている。
【2】決済の条件を指示するエリア
※void OnTickより下の部分は、新しいティック(価格更新)ごとに上から順番に実行される。その下には、使用するテクニカル分析(ここでは移動平均線)のパラメーターが設定されている。このEAでは、エントリー注文より先に決済注文が記述されている点も押さえておこう。
【3】エントリーの条件を指示する
※決済注文より下のエリアに、エントリー注文の条件が記述されている。ポジションがない状態で、移動平均線を基準に、条件を満たしていたらエントリーを実行する。
【まとめ】EAの中身を分解する!
①冒頭には著作権・リンクなど制作者の情報を載せられる |
②グローバル変数のエリアでロット数やマジックナンバーを設定可 |
③OnInitとOnDeinitはそれぞれ一度きりの指定を記述 |
④使用したいインジケーターはOnTickのエリアで定型コードを入れて条件を定められる |
⑤決済する注文番号、マジックナンバー、取引通貨ペアなどを確認する |
⑥このEAの場合、エントリーより先に決済のロジックを記載 |
⑦エントリーの前にポジションの有無、取引通貨ペア、注文番号を確認 |
⑧エントリーのロジックを決済の後に記述 |
⑨エントリーのエリアでストップロス・テイクプロフィットを設定できる |
⑩EAを使うときは必ずバックテストを行う! |
FX雑誌「外国為替」vol.12
発売:2024年8月22日(木)
定価:980円(本体891円)