自動売買システム

【その水平線は引けません】サインツールやEAを作るときの注意

EAにできる事できない事
yuki
yuki
FX-EAラボはMT4で動くサインツール作成依頼を多くいただきますが・・
カオチャイ
カオチャイ
多くのお客様が望まれるトレンドラインや水平線などを自動化してEAやサインツール搭載する事は非常に難しいのです
yuki
yuki
ご自身のトレードロジックをお持ちの方はたくさんいらっしゃると思うのですが、それをそのままサインツール化というわけにはいかないんですね
カオチャイ
カオチャイ
今日はその辺りを、開発のえみっぽぬさんを交えてお話したいと思います
えみっぽぬ
えみっぽぬ
ペンギンだけどわかりやすく説明しますね!

MT4のインジケーター作成FX-EAラボがお客様のMT4オリジナルインジを開発します

EAやサインツール製作には制約があります

EAやサインツールは、ロジック通りに24時間動き続けて自動売買してくれる便利な仕組みです。

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

そしてツールのロジックですが、これは言語化できるものなら全て自動売買化が可能です。本当になんでも可能なんですが・・・

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

 

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

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

 

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

 

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

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

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

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

 

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

 

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

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

 

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

簡単な例ですと、Highエントリーだったら・・・

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

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

人間が見たらひと目で分かる「明らかに反発したところ」とか「明らかに抵抗線があるところ」・・・これって数値化できますか?

「明らかに反発」するというのは、上ヒゲはローソクの実体の何%だとそのように判断できるのでしょうか?

大陽線の後に大陰線がでて一気に押し返したら明らかに反発だけど、大陽線の後にローソク足10本かけてじわじわ下げた場合は反発ではない?

「明らかに反発」って言葉一つとっても、それは人間にとっては明らかだと判断できますが、全て数値で判断するプログラムにとっては「明らか」と判断するのが難しいんですね。

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

 

トレンドラインも自動売買化は難しい

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

 

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

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

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

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

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

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

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

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

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

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

実は「適当」ではないでしょうか?

チャートの形で良いところで反発が何度か見られたからそこに線を引いてみました。

つまりそれって「適当」なんです。

 

yuki
yuki
・・・なんかえみっぽぬさん顔色悪くなってませんか?
カオチャイ
カオチャイ
なかなかこの辺りの難しさがお客さんには伝わらないみたいで大変みたいですね・・
えみっぽぬ
えみっぽぬ
そうなんです。適当に作って下さいと依頼されてもここはちょっと無理なところなんですよね・・・
yuki
yuki
「適当」に作ってしまうと、後から必ず「思ってたのとは違う」と修正依頼が来てしまいますからね。難しいところなのです

 

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

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

 

上の画像はトラリピで有名なM2Jさんの注文画面ですが、プログラマーさんがどれだけ頑張ってもMT4では上記のようなグラフィカルな画面は作れません。そもそもMT4はとっても古いプログラムなのでビジュアル面の装飾機能が少なすぎるんです。

サインツールで使えるのはボタンに色付けるたりテキストボックス置いたりとかくらいでしょうかね。見た目がよくて使いやすいUI(ユーザーインターフェイス)っていうのはMT4ですとなかなか難しいです。

サインツール製作はそんな制約の中でおこなっているのですが、販売目的でサインツールを依頼してくるお客さんは見た目を派手にしてほしいとの注文が多いのですが、残念ながら無理なんです。

 

カオチャイ
カオチャイ
見た目を派手にしたほうが売りやすいというのはわかるんですけどね・・

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

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

 

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

 

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

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

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

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

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

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

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

なので個人営業のプログラマーや実績がない会社にツールの制作依頼は少々リスクが発生するのです。

カオチャイ
カオチャイ
過去にはツール制作を格安で請負って、そこに忍ばせた悪意あるプログラムで収集した個人情報を別の人に売っていたプログラマーもいましたからね

 

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

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

 

えみっぽぬ
えみっぽぬ
上のコードはサマータイムかどうかを判断するコードです
yuki
yuki
一般の人にはまったくわかりませんね
カオチャイ
カオチャイ
MQLはマイナー言語なので勉強方法もしっかりと確立されていませんから、MT4のロジック開発ができる人が少ない理由もわかりますねぇ・・

 

【その水平線は引けません】サインツールやEAを作るときの注意 まとめ

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

MT4のインジケーター作成FX-EAラボの開発部門はこちら

ABOUT ME
YUKI
MT4をこよなく愛する開発者です。FX-EAラボの他に、サヤ取りを追求した株ラボ、MT4、MT5のツール制作に特化したシストレファクトリー、EAやインジケーターに認証やペイパル決済機能が付けられるMQLAuthシステムなどの開発にも関わっています。 YUKIプロフィール