トレード備忘録 & MT4/MT5インディケータ及びEAの開発

日々のトレード備忘録及びMT4/MT5に関する事項

MT4/MT5のバイブル的教科書

2018-01-30 12:02:09 | 投資

 先日、以前に紹介したMT4/MT5共通ライブラリがLibEAmqh(180128版)として更改された。171202版が既に完成版として機能していたから、今回の更改はマイナー・チューンアップといえるものだ。 

 メタトレ利用者にとってうれしいことは、このライブラリは互換性がなく越えがたいとされていたMT4(MQL4)とMT5(MQL5)とに事実上互換性を持たせてくれたといってもよい優れものである。しかも、その名の通りこのライブラリでプログラムすれば、MT4でもMT5でも作動するEAが作成できる。コンピュータ言語に疎いトレーダーにとっては魔法のようなツールであるとともに「メタトレーダー4入門」や「メタトレーダー4実践プログラミング」と同様バイブル的存在となることは疑いない。もし、英訳されれば、海外のメタトレトレーダーにとっても福音となることであろう。再び、開発者豊嶋教授には敬意を表する次第である。 

 ただし、この完成版を理解するには、その前提として電子本「新MT4実践プログラミング」(Kindle版500円)を用意することが必要である。この電子本はbuild600以降大きく変わった現行MT4(新MT4)の教本として出版された。新MT4では多くの関数群がMT5仕様となったことから、この新MT4に対応したものであった。その際、将来のMT5への統合化を想定して、全ての関数や仕様をMT5と共通化できるライブラリを事実上開発されていたのである。 

 その後、昨年9月β版共通ライブラリとして発表されて以降、11月、12月とアップグレードされ、今回の更改に至った。経緯は豊嶋教授のブログで詳説されているとともに、件のライブラリも無料でダウンロードできるようになっている。今回の更改で、ほぼ完成されたといってよいので、ぜひ「メタトレ入門」や「メタトレ実践」のように紙本で出版していただきたいと願うばかりである。電子本では、座右の書としては不十分であるとともに、ベッドで読めないのが難点。

豊嶋教授ブログ

http://forex.toyolab.com/ 

 


ビットコイン(Bitcoin)もメタトレ(MT4/5)で

2018-01-26 11:48:17 | 投資

  年末年始ビットコインの話でもちきりだった。「ビットコインってなに?」とは今更他人に訊けない盛り上がり方だ。一般のトレーダーの中には、分けの分からないものに手出しをするものかと決めている方も多いが、この仮想通貨が既にMT4/5で取引されていると知れば、いささか雰囲気も変わってくるのではないか。現実は人の理解などお構いなしで、どんどん先に進んでいる。 

 そもそも仮想通貨という形容詞が頭についているのが気になる。よく考えてみれば、我々が使っている円、ドル、ユーロといった法定通貨(legal tender)も全部仮想通貨なのだ。単なる紙切れが1万円とか100ドルとか称されているに過ぎないのである。ユーロなんて誕生して間もない仮想創作物ともいうべき最も胡散臭い通貨だ。これ等がまかり通っている理由はただ一つ、国家や中央銀行が法律でもって強制している一方、健全な現代国家であれば、その通貨の強制的交換価値を保全するために不断の政策的努力を重ねることにより、国民の信頼を得ているからに他ならない。 

 日本政府と日本銀行がある日突然、紙幣や硬貨を廃止してしまった状況を想像してみるとよい。紙幣やコインの代りに全国民にスマートフォンのような電子デバイスが配給される。手のひらに小さなチップが生みこまれることになるかもしれない。買い物や商取引等すべての決済はパソコンを含む電子デバイスを通じて決済される。それら全部の決済記録は日銀が一貫してコンピュータ管理する。こうなるともはやビットコインとの区別はつかなくなる。 

 ビットコインには政府や日銀という強制力を持った管理者は存在しない。そんな後ろ盾のない通貨なんて誰が信頼するだろうか。日銀に代る者が管理する電子記録などハッカーの絶好の標的となるのではないか。でも、その疑問はビットコインの世界では解決済みだという。絶対に破られない暗号とブロックチェーンという特殊コンピュータ技術で保護されており、しかも参加者全員がすべての電子記録を監視するシステムで成り立っていて、およそ改竄が起こりえないシステムだという。素人にも「どうやらその通りらしい」という信頼感が徐々に醸成されていった。ビットコインを使ってみたいという人が増えるにしたがって、その価値が高まっていった。需要と供給の関係で数千円のビットコインが2百万にまで跳ね上がる狂乱バブルの世界が展開されている。自分の財産状態を日銀や政府に知られたくないという人々には、安全という保障があればビットコインの方がはるかに魅力的であろう。 

 海外のメタトレ業者では、既にビットコイン等の取引システムがFXと同様のMT4/5環境で提供され始めている。今のところ対米ドルの商品として提供されているので、その通貨ペア名は、BTCUSDである。取引単位は0.1、スプレッドは1単位につき40~60ドル、スワップは手数料として1日当たり売り買いとも1単位につき$5程度。レバレッジは最大で10倍程度。スワップコストが高くオーバーナイト取引には不向き、デイトレがお勧めである。ボラティリティが尋常でないので、スプレッドの広いのは何とか許容範囲。 

 MT4採用業者ではないが、日本でも同様の商品が提供され始めた。対円取引であるので、通貨ペア名はBTCJPYである。条件はBTCUSDと似たり寄ったり。スプレッドがやや広い感じがする。

BTCUSD(日足)チャート


MT5プログラムの難しいところ

2018-01-13 11:43:58 | 投資

 最新のMT5ランゲージMQL5では、問題となってきた様々な欠点が解決されている。現在ではMT4と全く変わらない環境が、より高度に装備化して提供されている。MetaQuotes社が自信をもって、MT5への統合を宣言していることも頷けるのである。

 

 ただ、これまでMT4でなんとかEAやインジケータを作成してきた人でもなかなか理解し難いところがある。筆者の経験から申し上げると、一つは、組込みテクニカル関数の扱い方であり、あと一つはトレード関数それ自体の難しさだ。特にトレード関数の難解さは、MT4とは比較できない複雑さであり、そのままの状態ではとても使えた代物ではない。今回は、トレード関数について少し述べてみたい。

 

 そもそも、MT5のトレード関数は、

OrderSend(MqlTradeRequest& request, MqlTradeResult& result)

ただ一つである。これでMT4OrderSend()OrderModify()OrderClose()等全てのトレード系の命令を代用してくれというのだ。引数は、requestresultの二つとなっている。一つの引数の中身は15個程からなる構造体であり、見ただけで嫌気を誘う。とても読む気にはならないが、参考までにrequestの中身は次のようになっている。

struct MqlTradeRequest

{

 ENUM_TRADE_REQUEST_ACTIONS  action;

  ulong                                 magic;

  ulong                                 order;

  string                                 symbol;

  double                                volume;

  double                                price double                               

   double                                stoplimit;

 double                                sl;

 double                                tp;

 ulong                                 deviation;

 ENUM_ORDER_TYPE                 type;

 ENUM_ORDER_TYPE_FILLING       type_filling;

 ENUM_ORDER_TYPE_TIME          type_time;

 datetime                              expiration;

 string                                 comment;

};

 

 実際にこの関数を使って成り行き注文を発するとすれば、actionにはTRADE_ACTION_DEALpriceにはasktpには利確値を等々書き込まなくてはならない。待機注文を出す場合には、記入すべき項目も異なってくる。見ただけでプログラミングを諦めてしまう人も出てこよう。

 

 MT5側でもこのことは十分予想していて、その解決策として各種ライブラリを用意してincludeファイルに配置している。ライブラリとは平たく言えば、エクセルのマクロみたいなものだ。ライブラリを使えば、先ほどのOrderSend(reuest, result)が書けるようになっている。ところが、これらのライブラリの使いかたの説明が無いに等しいので、とても素人には対処できない。どれがどれに対応しているのか、構造体を初めて知る人にとっては、皆目わからない。

 

 MT4/MT5の日本での草分けでもある豊嶋久道教授にとっても思いは同様だったようで、2013年には教授開発の統合ライブラリが発表された。そして201712月には最新のMT5にも対応したライブラリLibEA.mqhを公開され、ここにMT5MT4同様の快適さで利用することが可能となったのである。このライブラリ、実はMT4にも対応している。より正確には、MT4を学びつつ実はMT5にも対応していたというのが教授の配慮でもあった。

 

 LibEA.mqhトレード関数のマクロ的仕組みを述べてみよう。

中心となる関数は、MyOrderSend()であり、これはMT4OrderSend()と酷似しているので違和感がない。成り行き注文の場合、

MyOrderSend()命令が出ると、OrderSendMarket()が呼び出されここでOrderSend(request, result)の各構成要素(メンバー)に必要な数値等が計算、その結果をOrderSend(request, result)に代入して同関数を送りだすという仕組みである。違和感のないMyOrderSend()を書くことだけで、複雑なOrderSend(request, result)に繫げているのである。

 

 ライブラリの仕組みを理解するには少し時間が必要だが、先ずはプログラムにチャレンジしてみることだ。MT4と同じ感覚でプログラミングができるように工夫されている。構造体の仕組みを理解している必要もない。MT4の理解があれば十分に対応できる。

ライブラリの詳しい使いかたは、http://forex.toyolab.com/を参照されたい。

 

 もう一つの難解さは組込みテクニカル指標(含むiCustom)にもあったが、この点もLibEA.mqhで解決された。次回で取り上げたい。