トレード備忘録とMT4用IndicatorやEAの開発

日々のトレード備忘録及びその他雑感

平均足順張り大作戦

2017-06-15 15:05:36 | 日記

 先日のブログで西山孝四郎(石原順)氏の順張り手法とMetaGenicFX特製の平均足とを併せ組み込んだEAを作成する方針を固めていた。新MQL4では、各手法のポジションを別個の配列として把握できるので、一つのEA内で異なった複数のEAを事実上作動させることができる。Double DeckerなるEAの名称まで準備していたものだ。同一のEA内に二つの手法を同居させるとはいえ、そもそも各別の手法が有効でなくてはならない。テストとしては、先ず西山手法、その次に平均足手法と個別に試すことになる。 

 ところが、西山方式がなかなかEAとして有効に成立しないのである。ボリンジャーバンド(BB)単独、BBとADX、BBとStDev、BBとADX && StDevと4パターンで試してみたが、いずれもバックテストの結果がはかばかしくない。3~4時間頑張ってみたが、残念ながら徒労に終わってしまった。プロの指導する手法に間違いはないはずなので、引き続き検討を続けるつもりだ。思うに、プロの手法だから、独特の経験と感覚を有する上手の裁量に委ねられる手法なのかもしれない。 

 一方、特別仕様の平均足と同じく特別仕様のMACDシグナルによる順張り手法はすこぶる順調に終わった。久しぶりの好結果であったので、この手法のニックネームを「平均足順張り大作戦」と名付けることとした。当初のDouble Deckerの構想は残念ながらSingleとなってしまったが、お許し願いたい。 

 「平均足順張り大作戦」の専用チャートは:対象通貨ペア USDJPY、時間枠 4時間足

 

インディケータの説明 

① 平均足

 特別仕様の平均足で、反応は比較的早く、ダマシも少なくなるよう工夫されている。平均足の陽転・陰転(確定ベース)がエントリー条件

② MACD

 こちらも特別仕様となっており、MACDのシグナルをフィルターとして使用。平均足の方向性とシグナルの方向性が一致した時のみエントリーする。

③ その他のインディケータ

 今回の手法とは直接関係はないが、順張り手法を裁量で行う場合には、補助的に利用できるので、パラボリックとボリンジャーバンド(σ±1)を表示させている。 

バックテストの結果 

上から順に2016年(1年間)と2017年6月12日までのバックテストの結果を添付しておく。PFはそれぞれ1.65と1.96となっている。

対象通貨ペア USDJPY、時間枠 4時間足、損切り 25pips

 

 MetaGenicFXでは従来EAの取り扱いには慎重を期してきた。なぜなら、一般にEAは一時的には有効ではあるが、時間の経過につれてその有効性が薄れていくのが通例だからである。その意味で、本EAも永久に有効であるとはとてもいうことができない。しかし、今回特別にあつらえた平均足とMACDには自信があり、順張りの裁量取引ツールとして重宝されるであろうことは疑いがない。 

EA及び関連テクニカル指標同梱パックに興味をお持ちの方は、下記サイトまで。

https://metagenicfx.thebase.in/

 

コメント
この記事をはてなブックマークに追加

順張りのテクニカル指標(仕切り、フィルタ-、手仕舞い)

2017-06-13 16:46:36 | 日記

 相場の世界の格言に「頭としっぽはくれてやれ」というのがある。つまり、トレンド相場を「たい焼き」と見立てて、その頭としっぽは捨てて、おいしい部分である「あんこ」の詰まった部分を取っていこうという趣旨である。 

 FXの名だたる講師たちがそう教えながらも、実際の公開取引では惨敗するという場面にも多く遭遇した。頭や尻尾さえも取れない人まででる有様であった。言うは易いが、トレンド相場に乗るというのは、至難の技であるもことをも実感したシーンであった。 

 トレンド発生を知らせてくれるテクニカルは数多くあるが、それらをいかに使えばよいのかを検討してみたい。 

1)仕切りのシグナル

 仕切りつまりエントリーに適したテクニカルは、やはり値動きそのものを反映したものが中心となる。MT4チャートでいえば、ローソク足が描かれるメインチャートに表示される分析指標が適切である。 

2)フィルター

 仕切りシグナルだけでは、ダマシに遭うことが多いので、これを確認ないしは補完するためのものである。メインチャートではなく、MT4の下段(Separate Window)に表示される分析ツールが中心となる。あくまでトレンド発生ないしは継続を確認するためのものであるから、いわゆるオシレーター系の指標は対象外となる。 

3)手仕舞いシグナル

 トレンド相場の終焉もいち早くプライスアクションとして現れるから、仕切りシグナル同様メインチャートに描画されるテクニカルがふさわしいと考えている。仕切りシグナルが手仕舞いシグナルとなる可能性も大きい。シグナル発生の有無とは別に、利確値・損切値の設定で対処することができることはもちろんである。 

4)テクニカル指標の組合せ(手法①)

 現在FXトレーダーの間で人気のある順張り手法は、西山孝四郎(石原順)氏が自らの戦略ともされるもので、ボリンジャーバンド(BB)、ADX、Standard Deviation(Stdev)を組み合わせている。詳細については、以前のブログで述べたとおりである、そこでは、BBが仕切り及び手仕舞いに、他の二つはフィルターとしての役割を演じている。 

5)手法①の改善・発展策

 ①の戦略では。BBがσ±1をバンド外に飛び出した時にエントリーする。その際、ADXとStdevを観察すると両指標ともすでに上昇していることが多い。また、反対トレンドが既に開始しているのに、ADXとStdevには反応なしということもある。つまりBBがσ±1を飛び出していること自体が、仕掛けシグナルでもあり、フィルターシグナルでもあることに気付くのである。ADXとStdevは、目で確認するための遅めのフィルターになっていることが多い。チャートをよく観察すると、ADXやStdevが上昇する位置はBBσ±1内外のどこででも起こりえる。そうであれば、いっそのことBBのシグナルのみで完結する売買手法でよいのではないか。 

 プライスアクションでもってトレンドの発生を知らせる指標には平均足(英名Heiken Ashi)がある。MT4に標準搭載されている平均足はダマシも結構多い。さりとて、これを平滑化したHeiken Ashi Smoothedも現値から相当乖離した位置に描画されることになり使い辛い。以下に添付したチャートで表示される平均足は筆者が改良を加えて、ダマシが少なく、且つ、反応も悪くない改良版平均足である。フィルターとしてはMACDのシグナルを考えている。MACDシグナルの長所は上げ基調では上昇し、下げ基調では下降してプライスの上下と同期するところにある。 

6)筆者推奨テクニカル使用の組合せ

 仕掛けシグナル:BB、改良型平均足

 手仕舞いシグナル:BB、改良型平均足

 フィルターシグナル:MACDシグナル

 その他:選択により損切り値を設定する 

7)筆者推奨テクニカルを表示したチャート

 

 (注)①最下段がMACD(12,26,5)のシグナルライン、上昇は白く、下降は青く色分けしている。メインチャート上の平均足の上昇、下降ともほぼ同期しているので、フィルターとしてはふさわしい。またチャート上で青く囲んだ部分はいわゆるノイズであるが、MACDのフィルターが効いているので、この平均足の転換でエントリーすることはない。②参考までに中段には西山孝四郎氏お勧めのADX(14)とStdev(26)を表示している。       

8)上記チャートに基づいた自動売買プログラム(EA)

 ちょっと欲深いかもしれないが、一つのEA内に二つの戦略を同居させる。一つは、ボリンジャーバンドのσ±飛び出しでエントリーし、バンド内への回帰で手仕舞いとする戦略。もう一つは、改良型平均足の転換でもって仕掛けシグナルを出し、その際MACDシグナルの方向性と合致した時のみエントリーするというもの。旧MT4でもマジックナンバーを変えることにより、同一EA内で二つの戦略をとることは可能であったが、新MT4では各戦略を別配列として扱うことができるようになり、この様な戦略は簡易に、しかも高速で処理できるようになった。ただいま、DoubleDecker(仮称)としてプログラム中であり、満足のいく結果が出ればご紹介したい。

コメント
この記事をはてなブックマークに追加

どっこいアルパリ(Alpari)は生きていた!

2017-06-10 10:56:21 | 日記

 2015年1月のスイスフランショックで英国在の老舗ブローカーアルパリが破産に追い込まれた。その日本法人アルパリジャパン(株)もスイス系金融機関Dukascopy Japanに買収されたが、アルパリの顧客や評価の高かったMT4も引き継がれていない。 

 すっかり死んだ会社とばかり思っていたが、最近買い求めた電子本「新MT4実践プログラミング」の中で、MT4システムのダウンロード先としてAlpariが推奨されていたのである。半信半疑の半面、あの豊嶋久道氏の勧めだから嘘ではあるまいと読み進んでいくうちに事情が分かってきた。欧米の会社によくあるパターンで、破産したAlpari UKとは全くの別会社Alpari Limitedがカリブ海タックスヘイブンの英国領セントヴィンセントに設立されていたのである。会社情報をよく読むと、実態は旧アルパリのままであり、実際の経営とオペレーションも引き続きロンドンで行われているようである。 

 それではなぜ著者がダウンロード先としてアルパリを推薦するのかというと、「過去のチャートデータ(ヒストリカルデータ)が豊富で入手するのも簡単だから」とされている。著者の勧めに従って、(新)AlpariのサイトからMT4をダウンロードして試しているところだ。過去データを20年間分保存しているというだけあって、かなり綿密なバックテストができそうだ。 

 参考までにAlpariのURLは下記の通り。HP左上段のRegister myAlrariに登録する必要があるが、これは実口座の申請ではない。登録を完了するとMT4のダウンロードおよびデモ口座の申請が可能となる。デモ口座は2週間に最低一度そのデモ口座上でトレードしていれば、期限なく使い続けることができるようだ。

https://alpari.com/

コメント
この記事をはてなブックマークに追加

新メタトレーダー4(新MT4)との付き合い方

2017-06-07 07:54:34 | 日記

 MT4が世に出たのは2005年、2011年にはその後継となるべきMT5がリリースされている。ところがMetaQuotes社(M社)の期待に反してMT5がその役割を果たすことはほとんどなく、MT4が今日に至るまで、FXトレーディングプラットフォームとして世界標準の地位を不動のものとしてきた。 

 そのような状況下、MT5の普及を急務とするM社は、2014年2月唐突にMT4をBuild 600として更新した。Build 600以前の(旧)MT4と互換性を保ちながら、MT5とも一部関数等に互換性を持たせるというものであった。この(新)MT4も最新版はBuild 1090まで進み、バグをはじめとする当初の不具合や混乱も収まり、現在では安定的な推移をみせている。 

 Build 600以降の新MT4では何がどう変わったのか、チャート機能に関する限り旧MT4と大きく異なるところはない。MT4を使って相場分析をされている方にとっては、何の不自由もなさそうだ。ところが、新MT4(新MQL4)を使って、インディケータや自動売買プログラム(EA)を作成しようとすると、その異変が明らかとなる。 

 先ず、メタエディター(プログラム作成のフォーマット)がMT5仕様に変わっている。関数もMT5で使用する int OnCalculate( )とかvoid OnTick( )等に入れ替わっている。OnCalculete( )に至っては、関数は構造体の形をとっており、構成する変数も多数で一見して面食らってしまうほどだ。次に驚くのは、MQ4 ReferenceからMT4の関数が消え去っていることである。互換性ありとはいいながら、int start( )やint init( )は、もう用なしという扱いである。情報では、M社のサイトからは、MT4ダウンロードはもはやできないとのこと、また、新規参入のFX会社には、MT5のみのオペレーションが許されるということである。 

 以上から、M社が一日も早くMT4からMT5に移行したいという方針は明らかだが、ここまでくるといろんな疑問が湧いてくる。

① なぜMT5にこだわるのか

 理由の一つは、MT5の開発目的にある。MT4はFXを含むCFDの取引に特化したシステムであるのに対して、MT5の対象とするのは、それだけにとどまらず株式や債券、商品先物にも対応するシステムであることだ。FXでは競合ソフトTrade Stationを駆逐した感があるが、M社としては他商品市場においても早急にMetaTraderブランドを確立させたいのである。

 もう一つの理由は、システムの高速化にあるとされる。MT5でのデータの取り扱いは、構造体というかたまりでなされている。構造体を構成するデータのやり取りは参照渡しとするものが多く、従来の値渡し方式と比較して、メモリーの消費量が大幅に削減できるとされる。 

② なぜ旧MT4からMT5に直接的に移行しなかったのか

 その質問は、「MT5がなぜ今まで受け入れられなかったのか」という問いと同義である。もし、MT5で次のようなFXトレードをしたら、どうなるかを見てみよう。上から下への取引順序

 1.買い 1ロット

 2.買い 2 ロット

 3.買い 3 ロット

 4.売り 6 ロット

 上の3の取引を終えた段階では、それまでのポジションは合算されて6 ロットとされる。ターミナルの取引タブには6ロットのみが表示され、それまでのポジションは表示されない。つまり、取引毎の情報は存在しなくなるので、個別の決済や損益把握はできない。MT4では、マジックナンバーやチケットナンバーでの各注文やポジションのコントロールができたが、MT5ではできないことを意味する。トラリピなどの複数ポジションを扱う戦略は原則できなくなる。また、4番目の取引の売りオーダーが成立すると、たとえ両建て取引を可とする業者においても、ポジションは自動的にゼロとなる。これでは、両建て戦略は不可能となってしまう。なぜ、両建てができない仕様になったかは、開発当時米NFAが両建てを禁止したからだとされている。この様な状況で、旧MT4からMT5へ直截的に移行させたなら、ほとんどのEAは作動しなくなる。どうしてもワンクッション入れる必要があった。MT5への道は容易ではない。 

③ どうしたら解決できるのか

 一つは、MT5自体の仕様を取引実態に即したものに変更することだ。トレード関数を含めてプログラムを取引市場や取引慣習に合わせて変更することは不可能ではないはずだ。業者やトレーダーサイドで対応せよというのは、あまりにも勝手な言い分であろう。

 もう一つの方法は、既に始まっている。現行MT5の仕様を前提に、利用者側で対応しようとする試みである。豊嶋久道著「メタトレーダー4&5」では、MyPosition.mqhというライブラリーを開発され、上記を含めた諸問題の解決策を提案されている。また、いずれMT5に移行するのを前提に、新MT4にも同種ライブラリーLibEA4.mqhを開発され、著書「新MT4実践プログラミング」の中で公開された。考え方としては、MT5のライブラリーと同じようなライブラリーを使って、新MT4のEAを作成しようとする試みである。旧い文法はいずれ使えなくなるから、今から新しい文法を勉強して全面的なMT5への移行に備えておこうという趣旨であろう。 

 新MT4は旧MT4と互換性は保たれているので、当面、旧MT4仕様でプログラムは書くことができる。また、新MT4も顔かたちは異なるが、中身はMT4であるから、新MT4エディターでのプログラムもさほど困難ではない。これからもMT5への移行に向けての努力はされると思われるので、進捗状況をじっくり見守りたい。

 

コメント
この記事をはてなブックマークに追加

新MT4対応FXメタトレーダー入門(Kindle版)

2017-05-28 16:45:16 | 日記

 前述の同書に対するブログに続いて、本日は同本でサンプルプログラムとして取り上げられたテクニカル指標を取り上げてみたい。 

 同本は電子本として2015年11月に刊行され、昨年12月に更新がなされ、当時最新のBuild 1031に準拠するとともに、内容の修正や増補が行われている。また、本年3月には「新MT4 EA実践プログラミング」が発刊され、そこでは新規開発されたライブラリ-を使ってのEA作成術が紹介されている。 

 上記2教本は、パンローリング社出版の紙本「FXメタトレーダー入門」及び「FXメタトレーダー実践プログラミング」の後継書でもある。われわれトレーダーにとってはバイブルであった二書であるだけに、電子本も同じような存在になるよう切に願うばかりである。 

 「新MT4 EA実践プログラミング」発刊に当たっての、著者のコメントがブログで述べられているが、その中で少し気がかりな表現があった。そのまま引用すると、「いくら詳しく説明しても、MQL4のプログラムは初心者にとっては難しいと思います。そこで、本書の独自ライブラリを使うことを前提として、できるだけ簡単にプログラミングできる方法を紹介しました」という一文である。 

 なるほど、トレード関数は極度に簡略化されたものになっている。半面、簡略化された関数は、いわばブラックボックス化していて、利用者が自由な発想のもと、MT4の持つ汎用性・拡張性を生かした独自のプログラミングを作成するという意欲を削ぐのではないかという懸念が残る。 

 このことを念頭にKindle版「FX メタトレーダー入門」のカスタム指標、ex7_ind.mq4を取り上げてみたい。

//ex7_ind.mq4

 #property strict

#property indicator_separate_window //別ウィンドウに表示

#property indicator_buffers 1 //指標バッファの数

#property indicator_color1 clrRed //ラインの色

#property indicator_width1 2 //ラインの太さ

#property indicator_style1 STYLE_SOLID //ラインの種類

#property indicator_level1 100 //指標のレベル

#property indicator_levelcolor clrBlue //レベルの色

#property indicator_levelwidth 1 //レベルの太さ

#property indicator_levelstyle STYLE_DASH //レベルの種類

 

double Buf[]; //指標バッファ用の配列の宣言

 

input int MomPeriod = 10; //モメンタムの期間

 

//初期化関数

int OnInit()

{

   SetIndexBuffer(0, Buf); //配列を指標バッファに関連付ける

   return(INIT_SUCCEEDED);

}

 

//指標計算関数

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[])

{

   int limit = rates_total - prev_calculated; //プロットするバーの数

   for(int i=0; i

   {

      Buf[i] = iMomentum(_Symbol, 0, MomPeriod, PRICE_CLOSE, i);

   }

   return(rates_total-1);

}

 

このカスタム指標は紙本「メタトレーダー入門」では、次のようになっていた。

//Ex5.mq4 |

#property indicator_separate_window //<---サブウインドウに表示

#property indicator_buffers 1

#property indicator_color1 Red

 

//指標バッファ

double Buf[];

 

//モメンタムの期間

extern int Mom_Period = 14;

 

//+------------------------------------------------------------------+

int init()

{

   //指標バッファの割り当て

   SetIndexBuffer(0,Buf);

 

   return(0);

}

 //+------------------------------------------------------------------+

int start()

{

   //指標の計算範囲

   int limit = Bars-IndicatorCounted();

   if(limit == Bars) limit -= Mom_Period;

 

   //指標の計算

   for(int i=limit-1; i>=0; i--)

   {

      Buf[i] = Close[i]*100/Close[i+Mom_Period];

   }

    return(0);

}

//+------------------------------------------------------------------+

 新MT4では旧MT4のint init()やint start()に代ってint OnInit()やint OnCalculate()が採用されているから、見てくれは変わっているが、それとは別にプログラムの内容が大きく変わっているのである。紙本入門編では、先ず、指標の計算式から始めてそれを配列に反映させ、チャートに描画させるという労を惜しまない内容になっている。便利な組み込み指標関数iMomentum()は上記課程を勉強した後に紹介されている。最初からiMomentum()等の組み込み指標関数を使ってしまうと、トレーダー独自の指標関数を作成するという発想や意欲が湧いてこないのではないかという危惧が残る。 

 ひょっとして、著者にはパンローリング社に対する版権上のオブリゲーションがあるのだろうか。EAでも旧著で開発されたライブラリーMyLib.mqhやMyLib.mq4は、新MT4でもマイナーチェンジは加えるにしても、ほぼそのまま使えると思うのだが。

注)旧著のMomentumの計算式は、著書中の注意書きに従ってMT4の計算式に合わせている。

コメント
この記事をはてなブックマークに追加