自動売買システム

EAにできる事 できない事

EAにできる事できない事
yuki
yuki
FX-EAラボはEAやインジケータを作成の依頼を多くいただくのですが・・
カオチャイ
カオチャイ
実はトレンドラインや水平線などはEAやインジケータとして作成することはできないんです
yuki
yuki
ご自身のロジックをお持ちの方はたくさんいらっしゃると思うのですが、それをそのままEA化というわけにはいかないんですね
カオチャイ
カオチャイ
今日はその辺りを、開発のえみっぽぬさんを交えてお話したいと思います
えみっぽぬ
えみっぽぬ
ペンギンだけどわかりやすく説明しますね!
投資で勝つための本
noteや商材で勝てない人におすすめの必読本今回はバイナリーオプションでなかなか勝てない人のほとんどがすっぽり抜けている投資の知識をピンポイントで得られるおすすめの書籍紹介です。 すべてFX-EAラボが精査したもので難解なものも混ざっていますが、逆に言えばこれらを理解せずに投資の勝ちは難しいとも言えるものです。...

自動売買で水平線やトレンドラインは引けない

EAというのは人が指示したとおりに24時間動き続けて自動で売買してくれる便利な仕組みです。

その魅力に取り憑かれて多くのシステムトレーダーさんが日々活用されているのですが、ある程度市場に出回っているEAやインジなどを試すと、これなら「自分で作成したい」っていう欲がでてくるんですよね。

EAやインジケーターは数値化できるものなら全て自動売買化が可能です。本当になんでも可能なんですが・・・

yuki
yuki
まず最初に、「数値化する」ということを具体例を交えてえみっぽぬさんにご紹介してもらいましょう
えみっぽぬ
えみっぽぬ
はい!では簡単なボリンジャーバンドの逆張りのロジックの説明からいきますね!

ボリンジャーバンドを自動売買化(数値化)すると・・

ボリンジャーバンドこんなところでロングするロジックです

 

えみっぽぬ
えみっぽぬ
ここではボリンジャーバンドの-3σにタッチしたら逆張りロングのエントリーをするロジックを説明しますね

 

まずローソク足の終値とボリンジャーバンドの-3σの値を比較します。

ローソク足の終値 < ボリンジャーバンドの-3σの値

という式が成り立てば、-3σにタッチした(抜けた)と判断できます。

-3σにタッチした(抜けた)状態でローソク足が確定したら、BUYエントリーします。

 

えみっぽぬ
えみっぽぬ
これは簡単に数値化ができましたね!しかし実際の開発の現場ではこんなにあっさり終わる事は殆どありません

 

次に水平線を自動売買化してみましょう

水平線こちらの赤い水平線を数値化します

 

まず水平線をひいて、それをブレイクしたらエントリーというロジックであれば、先ほどのボリンジャーバンドの例と同じようにできますね。

簡単な例ですと、ロングだったら・・・

水平線が引いてある価格<ローソク足の終値とかでできちゃいます。

それでは、その水平線をひく作業を自動化する場合、どこに引くかの判断はどうしますか?

明らかに反発したところ、とか明らかに抵抗線があるところ・・・これって数値化できますか?

明らかに反発したって、上ヒゲはローソクの実体の何%だとそう言えるんでしょう?大陽線の後に大陰線がでて一気に押し返したら明らかに反発ですか?大陽線の後にローソク足10本かけてじわじわ下げた場合は反発ではない?

「明らかに反発」って言葉一つとっても、それは人間にとって明らかなのであって、全て数値で判断するプログラムにとっては全然あきらかじゃないんです。

人が目で見ているものを数値に落とし込んで機械に理解させるのって実は凄く難しいんです。

 

トレンドラインはここで詰まる

トレンドライン
yuki
yuki
人気のトレンドラインも実は数値化が苦手です

 

トレンドラインは始点と経過点が必要です。

始点はどこにしますか?という問題であれば、XXXX年XX月XX日以後の最安値、なんて言えるかもしれませんが、そこが最安値かどうかは、そのXX日からかなりの数のローソク足が経過しないとわかりません。

百歩譲って最安値を決めたとしましょう。じゃあ経過点はどこにしますか?

次の安値?安値の定義ってなんですか?その前の足と次の足より安値が低いローソク足?でもそんなのすぐ出てきますよ。そんな定義でトレンドラインひいたら即ブレイクですよ。

じゃあなかなかブレイクしない安値でひいたら?それは一生ブレイクしないなんの意味もないトレンドラインが引けますね。

えっ?トレンドラインはそのライン上でなんどもビタビターするから効いてるってわかるので何度もビタビタする線を引けばいいですって?

ビタビタってどれくらいの誤差を許すんですか?0pips?0.1pips?0.2pips?通貨によってボラが違うのにきっちり定数で決めちゃうんですか?

トレンドライン自体が、開始時間と(現時点での)終了時間を決めたうえで引き、その後ブレイクしたかを見るものなので、開始時間と終了時間を決めないことには自動的に引くことは不可能です。

じゃあ開始時間と終了時間を自動的に決めるのはどうしたらいいですか?

皆さんはどうやってトレンドラインを引く開始時間と終了時間を決めていますか?

適当でしょ?チャートの形がキレイだからでしょ?ん?ほら、大きな声で言ってみて?

「はい。そうです」って。

 

yuki
yuki
・・・なんかえみっぽぬさん怒ってませんか?
カオチャイ
カオチャイ
なんか無茶振りするお客さんが多いらしくストレス溜まってるみたいですね・・
えみっぽぬ
えみっぽぬ
すみません。取り乱しました・・

 

MT4のUIから逸脱する機能もだめ

トラリピUIっていうのは、こういった見た目のことですね

 

上の画像はトラリピで有名なM2Jさんの注文画面ですが、プログラマーさんがどれだけ頑張ってもMT4では上記のようなグラフィカルな画面は作れません。

EAで使えるのはボタンに色付けるたりテキストボックス置いたりとかくらいでしょうかね。見た目がよくて使いやすいUIっていうのはMT4ですとなかなか難しいです。

Twitterで有名な◯◯◯◯さんの「ほぼ聖杯」がかっこいい見た目をしていますけど、ああいったグラフィカルなものは見た目だけで、実際にクリックしたら何かを設定できるとかの機能は残念ながらありません。つまりお客さんを呼び込むために装飾しているだけのものですね。

MT4でパラメータ変えるにはあのEAおなじみの古風なパラメータ画面しかないんですよね。

 

カオチャイ
カオチャイ
薄々気がついていましたが、縛りが多いんですね・・・

DLLやURLの許可はなんのため?

MT4の設定MT4の設定でこのような画面がありますね

 

yuki
yuki
たまにMT4の設定でDLLやURLの許可を要求するアプリがありますよね。これはいったいなんのためにおこなうのでしょう?
えみっぽぬ
えみっぽぬ
これはですね、MT4の外部からデータを持ってくるために必要なことなのです

 

MT4は他のサイトや外部のデータベースからデータをひっぱってくることがデフォルトではできません(禁止されています)。おそらくMT4を外部からいじれるようにしたらいくらでも悪さできちゃう(されちゃう)からです。

外部との通信を可能にするのが、DLLという「外部プログラム」との連携です。

DLLの中には通常の取引プログラムだけでなく、外部との通信を行うプログラムも書けます。

そして、「DLLの使用を許可する」にチェックをいれたら、外部との通信が行えるようになるのです。

それを使えば、MT4に保存されている口座情報や個人情報を外部データベースにアップロードすることもできます。

「WebRequestを許可するURLリスト」のチェック項目も似たようなものです。外部サイトにアクセスし、そこにある情報を拾ってきます。

悪意ある情報が書かれたサイトにアクセスするとDLLと同じように情報を抜き取られたり、無限に損をする売買シグナルを受信させられたりします。

なので実績がないプログラムでDLLを使えるようにするのはおすすめしませんよ。

 

実際のコードはこんな感じです

EAのコードMT4のプログラミング言語であるMQLはC言語がベースになっていますよ。

 

えみっぽぬ
えみっぽぬ
上のコードはサマータイムかどうかを判断するコードです
yuki
yuki
一般の人にはまったくわかりませんね
カオチャイ
カオチャイ
MT4のロジック開発ができる人が少ない理由もわかりますねぇ・・

 

EAにできる事 できない事 まとめ

yuki
yuki
というわけで、EAを作るにあたって数値化は思ったよりも難しいということがご理解いただけましたでしょうか?
カオチャイ
カオチャイ
ちなみに水平線やトレンドラインは利用する人が多いので、最終手段として線を手動で引いて配信するといった半自動のEAもたくさん存在します!
えみっぽぬ
えみっぽぬ
まあここを読んでいただいて、EA開発依頼の時にお話が上手く伝わりやすくなることを祈ってますよ! 

エミッポぬさんへ開発依頼はこちら

EAは儲かる?
FXやバイナリーの自動売買は本当に儲かるのか?FXやバイナリーの自動売買で大きな被害をだした案件を例にあげ、逆説的に自動売買で勝てる条件をご紹介します。...