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

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

MT5(MetaTrader5)急がば回れの学び方(2)

2017-09-26 11:31:04 | 投資

 学び方(1)では、MetaTrader4(MT4)がFX取引プラットフォームの世界標準となるに至った経緯、そして現在、そのMT4がMT5として衣替えの途上にあることまでを述べた。同時に、MT4のプログラム言語(MQL4)とMT5のプログラム言語(MQL5)が互換性を欠くことから、MT4で蓄積されてきた膨大な数のソフト(IndicatorやEA等)をMT5のソフトとして書き直す必要があること、そしてソフト利用者個人がその作業を自ら行うには、新しい言語(MQL5)を学ばなければならないこと等に言及した。 

 MT4とMT5のプログラム言語に互換性がないとしたが、厳密に表現すると、現行のMT4(新MT4)とMT5の間には、一部関数等には互換性があるが、他の部分には互換性がないとするのが正しい表現になる。MT4、MT5の両サイドで、できる限り互いに近づけるための更新を続けてきたからである。半面、トレード関数 OrderSend()等には、全く互換性が達成されていない。 

 ここから、MQL5の学び方の本論に入る。

1)テクニカル指標(以下インジ)の作成

 MT4を学ばれた方の中には、テクニカル指標(インジ)の作成より前に自動売買プログラム(EA)作成から入られた人の方が多いのではないかと思う。MT5では先ずインジの作成から入るのが断然有利である。なぜなら、インジの作成では、MT4とMT5では互換性がある部分があることに加え、MT5の基礎に係る約束事が何ら加工しない素の形で学べるからである。EA作成においては、複雑な工夫や加工が必要となるので、こちらの学習はひとまず後回しにするのが賢明であろう。 

例 単純移動平均線SMAのインジ作成

 単純移動平均線のインジを作成する方法としては、指標そのものを数式で計算し、これを配列に適用するという正攻法ともいえる方式と組み込みテクニカル指標であるiMA()等の配列をそのまま適用する簡易な方法とが考えられる。簡易な方法といっても、このiMA()、関数名は酷似しているがMT4とMT5の間で互換性がない。組み込み指標関数を使ったインジの作成には、MT5独特のプログラム技術が用いられている。それゆえ、MQL4とMQL5の基本的な違いを理解するための格好の教材ともなっている。 ここを糸口にしてMT5の習得を始めるのがお勧めである。

① 指標を計算式からプログラム化する方法

 「FXメタトレーダー 4 & 5」95ページには、「MQL5のカスタム指標プログラム」の書式のひな型が記載されている。一見して簡単そうであるが、いきなりこのひな形に数式を当てはめるだけではインジは完成できない。20ページに亘る説明を読んで内容をよく理解する必要がある。下記のSMA.mq5は実際に筆者が計算式から書き下ろした単純移動平均線のソースコードである。試行錯誤を繰り返してようやくチャート上問題なく作動するようになった。 

//プリプロセッサー命令

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_plots 1

#property indicator_type1 DRAW_LINE

#property indicator_color1 clrRed 

//指標バッファー用の配列の宣言

double Buf0[]; 

//外部パラメータ

input int MAPeriod = 20; 

// 初期化関数

int OnInit()

  {

     //--- indicator buffers mapping

     SetIndexBuffer(0, Buf0, INDICATOR_DATA);

     ArraySetAsSeries(Buf0, true);

     return(INIT_SUCCEEDED);

  }

//Custom indicator iteration function                              |

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

     // close[]を時系列配列にセット

     ArraySetAsSeries(close, true);    

     //カスタム指標の範囲    

     int limit = rates_total - prev_calculated;

     if(limit == 0) limit = 1;    

     //カスタム指標の計算

     for (int i=limit-1; i>=limit-MAPeriod-1; i--) Buf0[i] = EMPTY_VALUE;
     for (int i=limit-MAPeriod; i>=0; i--)
     {
       Buf0[i] = 0;
       for (int j=0; j<MAPeriod; j++)
       {
         Buf0[i] += close[i+j];
       }
      
         Buf0[i] /= MAPeriod;
     }
 
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

② 一方、組み込み指標関数 iMA()からインジを作成するには、より深いMT4とMT5の違いの理解が必要であり、その詳細は、「FXメタトレーダー 4 & 5」の93 ~ 156ページでじっくり学んでいただきたい。MT5の基礎的知識が理解できるようになる。こちらも、一度使い方を会得すれば、MT5標準搭載の組み込み指標関数やiCustom()を自由に使いこなせるはずである。 

最後に

 自動売買プログラム(EA)は前ブログで紹介の通り、ライブラリー LibEA.mqhの開発により、MT5でのEA作成も簡易にできるようになった。また、これまでの説明の通り、テクニカル指標の作成も少しの学習で身につくことも分かった。MT5恐れるに足らずということである。

 MT5のEA作成については、先ずは前ブログ(MT4及びMT5の両方で稼働するEAを作ろう)で取り上げたライブラリー LibEA.mqh を使って、種々のEAの作成に挑戦してみることだ。いかなるEA作成にも簡易に対応できる仕組みと工夫が用意されている。繰り返すが、難解なライブラリーの中身は、個々のレベルに応じて徐々に勉強していけばよい。インジ作成で培った知識が、ライブラリー理解にも役立つ筈である。(完)

(注意)

「FXメタトレーダー 4 & 5」の自動売買プログラム(EA)作成に係る部分では、MyPosition.mqhというライブラリーが使われているが、MT5のアップデイトで、ポジションのオーダー別管理(両建てを含む)ができるようになった現在、このライブラリーは妥当しなくなっている。MT5では、ライブラリーの使用は不可避ではあるが、LibEA.mqhのように完成度が高くなると、その中身がブラックボックス化することにも繋がる。MyPosition.mqhはMQL5学習にはほどよく出来上がっていたので、個人的にはこれの改訂版(Hedge版)が公開されることを望んでいる。

 MyPosition.mqhに基づくEAについても、MT4/5共通ライブラりーLibEA.mqhで作動させるためのプログラム修正方法をToyolabにて発表されている。 


MT5(MetaTrader 5)急がば回れの学び方(1)

2017-09-24 13:49:31 | 投資

 余資の運用或いは一寸したゲーム感覚でFXを始めた人も、数ヶ月も経てばそのトレードの難しさや不確実性に翻弄されることになる。FXは2国通貨間の交換レートであり、その本質は当該2国の相対的なマクロ経済比較で決定されるはずなのだが、現実の為替レートの動きは、一見そのような分析とは無縁であるかのような動きをみせる。最終的には、購買力平価等のマクロ経済分析(ファンダメンタル)で均衡が達成されることになるはずだが、その実現は2年先になるのか、3年先になるのか、現実の為替市場は何も教えてくれない。 

 デイトレに代表される短期取引ないしはせいぜい数週間単位の中期FX取引では、現在及び過去の為替レートの動きを分析すること(テクニカル分析)で近未来の動きを予測することが重要になってくる。FXトレーダーにとって、テクニカル分析の中心であるチャート分析なしには、売買戦略は考えられない。上記のファンダメンタルによる将来予測も、通貨の需給要因も、市場参加者の心理的要因も、それらのすべてが現在の為替レートに反映されているとみるのである。 

 FX会社(ブローカー)は例外なく自前のチャートシステムを提供している。そして、どの会社も代表的なテクニカル指標を20個程度搭載している。例えば、移動平均線、ボリンジャーバンド、RSI、一目均衡表などがその中心である。ところが、世の中には何百、何千というテクニカル指標が存在するから、そのすべてを網羅することはできない。また、会社ごとに採用するテクニカル指標が異なっているので、個々のトレーダーが取引をする会社に自分が好むテクニカル指標が搭載されているという保証はない。 

 この問題を解決してくれたのが、メタトレーダー 4(MT4)であった。MT4は汎用性・拡張性に優れていて、極言すると世の中に存在するありとあらゆるテクニカル指標をそのチャートシステムに取り込むことが可能なのだ。それだけではない。もし、貴方の脳裏にあるトレードアイデアが閃いたとしたら、その考えに基づくテクニカル指標を簡単にプログラムにできるような環境が提供されている。自分だけのテクニカル指標を作ることも可能なのである。その結果、テクニカル分析は無料で使用できるMT4システム上で行い、実際の取引は各自が口座を有するFX会社で行うトレーダーが多くなってきた。 

 トレーダーの夢は尽きない。ある手法に基づくFX手法が好成績を収めているとする。それならば、「その手法そのものを自動売買プログラム化してシステムで勝手に取引させることができないか」という夢であろう。MT4では、こんな夢も既に現実となって久しい。出来上がったプログラムが過去の実相場に照らして、実際に利益を生み出すのかどうかの事前検証まで可能になっている。この自動売買プログラムはMT4ではEAと称されるが、今やEAは全世界で自動売買プログラムを意味する普通名詞のように使われている。 

 ここまでのお話しはMT4に関してのものであり、これの学習にはパンローリング社から刊行されている「FXメタトレーダー入門」と「FXメタトレーダー実践プログラミング」(豊嶋久道著)がMT4教科書としてはバイブル的存在として欠かせない。この教本はプログラミングには疎い文科系の読者にも、知らず知らずのうちにC言語の基礎を教えてくれる。「好きこそ ~ 」の例えで、全くの門外漢である筆者にもいまやインディケータやEAのプロフラミングが数少ない趣味の一つともなっている。 

 本題はMT5の学び方であった。なぜMT5かというと, 近い将来MT4がMT5に吸収・統合されることが予想されるからである。この間の事情は、以前のブログで詳しく述べているので参照していただきたい。 

 MT4とMT5では処々に互換性がないため、MT5でテクニカル指標やEAをプログラムするには、新しくMT5用の言語MQL5を学習し直さなくてはならない。テクニカル指標については、MT4と若干仕様は複雑になるが、プログラムの行数にして10行程度追加する程度なので、それほど学習には支障はない。問題は、EAである。MT5のトレード関数は極めて複雑になっていて、新規注文、注文変更、注文キャンセル、決済等の全てをOrderSend()関数1本で済ましてしまう。関数の引数は2個の構造体で構成され、2個の構造体の中身はそれぞれまた15個以上のデータ(メンバ)で構成されているため、素のままではとても扱うことのできない代物である。ベテランのプログラマーであっても、何か工夫を凝らさなければやっていけないはずだ。これまでMT4で楽しくIndicatorやEAを作成していた人も、もはや自前でプログラムすることを諦めることにもなりかねない。 

 これまで通り自分でインジやEAを作成したいと考えるならば、いまから学習を開始するに越したことはない。MQL5サイドでもFXの取引実態に即した内容に更新されてきており、また、利用者サイドでも種々の工夫がなされつつあるので、勉強を始める環境が整ったといえる。しかし、やみくもにMT5の学習を始めても迷路に入りこむという危険な状況にある。MT5の学び方にも工夫が必要になってきた。 

 MT5(MetaTrader 5)急がば回れの学び方(2)に続く


西山孝四郎氏新逆張り手法をセミナーで公開

2017-09-20 14:55:13 | 投資

 先のブログ「西山孝四郎の順張り手法でコピートレード」でも取り上げましたが、同氏の推奨するFX戦略は、標準偏差(StDev)、ADX及びボリンジャーバンド(BB)の3種のテクニカル指標でトレンドを判定して市場に参入するという順張り手法で有名です。しかしながら、レンジ相場にあっては、逆張り戦術も日々の短期取引にて実施されていることを、折に触れて述べられてきましたが、その手法の公開はなされていませんでした。 

 9月6日FXプライム社にてのビデオセミナーが開催され、その際その手法が明らかとなりました。使用されるテクニカル指標は下記の3種類です。その手法は、セミナーの中で詳しく説明されていますので、末尾に記載の録画公開サイトで視聴してください。 

① ATR_Bands(ATRチャネル)

 一見すると上下σ3まで表示されたボリンジャーバンドに見えてしまいますが、中心ラインはともかく各ライン間の間隔の計算基礎にATR(Average True Range)が使われています。使い方としては、上下バンドのσ2~3に達すれば逆張りを仕掛けるというものです。但し、フィルターとして標準偏差とADXで相場の反転を確認します。 

② 標準偏差(Standard Deviation)

 詳しい説明は、前掲ブログに詳説しております。元来、トレンドの方向性を示すテクニカル指標ですが、同じ指標を逆張り手法として利用します。相場が①のATR_Bandsの上限に達した際には売り目線になるのですが、実際に売りに入るのは標準偏差とADXがピークアウトして下がり始めたのを確認した時です。 

③ ADX

 標準偏差と全く同じ使い方です。②と③でトレンドの方向性が変わったこと(上昇トレンドが終わったこと)を確認して売り参入となるわけです。 

 セミナーを主催したFXプライム社のチャートシステムには、標準偏差やATR_Bandsは組み込まれておりません。MetaGenic社では、西山氏の順張り手法は「一目瞭然、西山孝四郎の順張り指標」として、MT4版のインディケータを公開しております。今回、この中に追加としてATR_Bandsを同梱致しました。順張りにも逆張りにも対応できるようになっています。パラメータはセミナー紹介の数値が「デフォルト」になっています。但し、ADXのみは今回パラメータを8として使用されていますので、そのように変えてご利用ください。既に、順張り指標をお求めになられた方で、逆張り仕様のATR_Bandsをご希望の方は、MetaGenixFX社ページのContactタブから連絡願えれば無償でお送りします。 

セミナー視聴URL

http://www.jikiden.co.jp/jms/0171LkGQCb4aHSTbzZQ/

セミナー資料

https://info.fxprime.com/isle/information/pdf/170906.pdf

 

MetaGenicFX

https://metagenicfx.thebase.in/

 画像はATR_Bands、StdDev、ADXを表示させたもの、GBPUSDは、本日現在の日足で買われ過ぎの域に達しています。StdDevもSTDもピークにある状態です。売りのタイミングはStdDevとADXが下げ始めた時(赤から青に色が変わるとき)とされています。

 

 

 

 

 


MT4及びMT5の両方で稼働するEAを作ろう

2017-09-16 20:22:11 | 投資

 MT4が今後3~5年の猶予期間を経てMT5に統合される日が来ることは間違いなさそうだ。MT5への完全統合化が実現されると、これまで使ってきたMT4用のテクニカル指標や自動売買プログラム(EA)がそのままでは稼働しなくなる。MT4とMT5に互換性のないことの悲劇である。

 MT4で蓄積されてきたテクニカル指標やEAをMT5でも稼働させることのできるプログラム(コンバータ)も開発されたとMetaQuotes社はホームページで紹介している。MT4のEAがMT5のEAに変身するというと聞こえは良いが、実はこれは曲者である。機械的に自動変換されたソースプログラムはソフトウエアの知識がなければ読めたものではないし、聞くところによるとそのコンバータも完全なものではないらしい。手動で訂正を重ねなくてはならないという。MQL5の知識もない状態で、プログラムに修正を加えることなど不可能に近いことだ。 

 「FXメタトレーダー入門」や「FXメタトレーダー実践プログラミング」の著者豊嶋久道氏(神奈川大学工学部教授)は、4年も前からこの厄介な問題に取り組んでこられた。「FXメタトレーダー4&5」(2013年12月パンローリング)、「メタトレーダーではじめるFXシステムトレードプログラミング」(2014年12月ラトルズ)を経て、氏の提案は、「新MT4EA実践プログラミング」(2017年3月Kindle版)で半ば結実した。これはMT4のプログラムをMT5式に書く方法を開発されたものであるが、換言すればこの書式に従うと難なくMT5のプログラムも書けるよう企図されているのだ。いずれ近い将来、「MT4/MT5EA共通実践プログラム(仮称)」が公開されることは十分予想された 。

 そして遂に去る9月14日、氏のブログで「新メタトレ実践本用のMQL4/MQL5共通ライブラリ(β版)」として公開されたのだ。このライブラリを使えば、MT4のEAもMT5のEAもほぼ同じように書けてしまう。我々にとっては魔法のような存在だ。ライブラリの中身は、直ぐには理解できなくても、「FXメタトレーダー実践プログラミング」を読破した人であれば、徐々に理解できるようになる。使い方自体は簡単なので先ず使ってみることだ。どんな複雑なプログラムにも対応できるようになっている。うれしいことに、Kindle版は500円という手ごろな価格だし、その読者用に、期待されていたMT4/MT5共通ライブラリが今回ブログで無料公開されたのである。 

 これによって、今後いつMT5への統合化が行われても対応できる環境が整ったことが確認され、多くのメタトレ利用者も安心したことであろう。

(注)

Kindle版「新MT4EA実践プログラミング」はアマゾンで購入できます。共通ライブラリは下記ブログからダウンロードすることができます。

http://forex.toyolab.com/