インジケーターのお悩み

【その水平線は引けません】サインツールや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
他に自動化が難しいロジックとして良く言われるものが「レンジ」や「トレンド」の判断ですね、これは人間の主観が思いっきり入っていて機械の判断は非常に難しいです
カオチャイ
カオチャイ
AIにチャート画像を学習させるタイプのものもあるにはあるのですが、一般には出回っておらず、コストもウン百万円の世界でして、実際に使えるようになるかは不明です

 

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

 

カオチャイ
カオチャイ
これはフィボナッチを引くときなどにも当てはまりますね
えみっぽぬ
えみっぽぬ
そうなんです。実際にロジックにするためにはガチガチにルールを決めないといけないのですが、それだと融通がきかなくて思ってたのと違う・・ってなりやすいところなんですよね

 

ローソク足の実態は情報を持っていません

ローソク足の実体

よくあるエントリー条件の1つに、「ローソク足のヒゲを除く実体が移動平均線から乖離したらエントリー」という条件があります。

この条件ですが、始値&終値と移動平均線の比較でしたらできるのですが、ローソク足の実体と移動平均線との比較だと実は実装することが出来ません。

例えば上の画像ですと、ローソク足の始値・終値は移動平均線から離れていますが、ローソク足の実体は移動平均線に触れています。

しかしこの実体はデータとして何も情報を持っておらず、MT4が四本値に沿って表示しているだけのものです。そのため、

ローソク足の実体

上記の画像のようにチャートの縮尺を変えるとローソクの実体と移動平均線の角度や触れている面積は変化しますので、例え実装できたとしても不安定なロジックになってしまいます。

これに近い判断ができる対応方法としては、「ローソク足の実体が移動平均線から最低でも何pips離れていたらサインを出すか」を指定できるパラメータをつけるという方法などで対処します。
例えば「1」と設定すれば「1pips以上移動平均線から離れないと乖離と見なさない」といった具合です。

 

未来予測を入れちゃダメ

トレンド中のロジック

お客さんからのご要望の中には、たまに未来を予測する要求がはいってきます。まさに神の領域ですね。

例えば「トレンドの終わりかけで利確するように制作して下さい!」なんてご要望ですが、トレンドが終わるかどうかというものは「トレンドが終わってから」でないと判別ができません。

しかしそこを諦めきれず、なんとしてもトレンドの終わりを掴みたい!という人は、例えば上昇トレンド中に陰線が連続ででたり、レンジになったり、ローソク足パターンがでたり、長い上ヒゲがでたりしたら・・というとロジックを採用しようとします。

しかしですね、もしこのロジックでトレンドの終わりに対応しますと、上記画像の黄色い◯の箇所は全てトレンドの終わりとしてロジックは判断しますので、一番最初の◯で利確終了で、「全然上昇トレンドに乗れてない!思ってたのと違う!」ってなること間違いなしです。

なので制作ご依頼前に、ご自身のロジックに未来予測が含まれていないかの確認をお願いします。

 

販売するならコピー防止機能などが必要

自作のEAやインジケーターですが、完成して良い成績がでると、「あれ?これって売れるんじゃないの?」と考えることはよくあります。

販売に関してはFX-EAラボは賛成の立場ですし、実際に弊社に開発依頼をされて世に出ている有料インジケーターは100以上存在します。

しかしその時に気をつけたいのが「コピーをどうやって防ぐか」という部分です。

良い成績のEAやサインツールというのはそれ専門の商材屋がおり、コピー防止の機能が無いツールはあっという間にコピーされ、ヤフオクや自社サイトなどで配布されてあっという間に寿命を迎えてしまうのがオチです。

対策方法はいくつか存在しますが、詳しくはこちらで解説してあります。

 

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ラボの開発部門はこちら

バイナリーオプション自動売買システムならAutoMultiTrader
バイナリーオプション自動売買システムAutoMultiTraderとは?
バイナリーオプション自動売買システムAutoMultiTrader(AMT)徹底解説 https://fx-ea-labo.com/amt_fee AutoMultiTrader(AMT)とは? AutoMul...
AutoMultiTrader(AMT)ダウンロードとご利用料金バイナリーオプション自動売買システムAMTのダウンロードページです。 FX-EAラボ経由のご利用で様々な特典がご利用できます。...
バイナリーオプション自動売買システム AutoMultiTrader_V1(AMT)簡単マニュアル https://fx-ea-labo.com/amt_fee 自動売買に必須なMT4(MT5)とサインツール ①...
バイナリーオプション取引所Bi-Winning
バイナリーオプション取引所「Bi-Winning」とは? Bi-Winningとは? Bi-Winning(バイウィニング)は2021年4月にオープンした海外のバイ...
ABOUT ME
YUKI
MT4をこよなく愛する開発者です。FX-EAラボの他に、サヤ取りを追求した株ラボ、MT4、MT5のツール制作に特化したシストレファクトリー、EAやインジケーターに認証やペイパル決済機能が付けられるMQLAuthシステムなどの開発にも関わっています。 YUKIプロフィール