ここでは、【MetaTraderでFX自動売買ブログ】さんの12月13日の記事で書かれている「メタボリック社長のNewNice戦法」のインジケーター(テクニカル分析)とストラテジー(売買ルール)について紹介します。
インジケーター
インジケーターは、Bollinger Bands – Fibonacci Ratios とSchaff Trend Cycleを用意します。
Bollinger Bands – Fibonacci Ratios は自作のもので、Schaff Trend Cycle はWeb検索してダウンロードしたものです。パラメーターの初期値はメタボリック社長のNewNice戦法の値にしてあります。
上記2つのインジケーターが入っている【bbf_stc.zip】をダウンロード
ストラテジー
次はストラテジー(売買ルール)について解説します。
メタボリック社長のNewNice戦法の概要
ボラティリティ確認
バンドの一番外側のラインの幅でボラティリティを確認。
また、一度は一本目のラインを割る必要がある。
エントリータイミング
下にへばり付いていたシャフのラインが+5より上がった後、買い。
売りの場合は、その逆。
利食い幅・損切り幅
利食いは+5pips、損切りは-10pips。
EA化した際のルールの概要
ボラティリティ確認
バンドの一番外側のラインの幅が、「パラメーター変数 BandsHaba」よりも大きくてはならない。
過去「パラメータ変数 BandsHamidePeriod」分の間に一度は一本目のラインを割る。
エントリータイミング
「パラメータ変数 SchaffHebariPeriod」本前のバーから2本前のバーまでずっとSchaffの値が+1未満で、1本前のバーのSchaffの値が+5より大きい時買い。(売りの場合はその逆)
EAのコード説明
今回作成したEAファイルが入っている【MetaboNewNice.zip】をダウンロード
パラメーター
パラメーターを次のように設置しています。
//パラメータ用の変数 extern int StopLoss =10; extern int TakeProfit = 5; extern int Leverage =10; extern double BandsHaba=20; extern string setsumei="以下は2~10の範囲"; extern int BandsHamidePeriod=10; extern int SchaffHebariPeriod=5;
start()関数内
次のように、外側のラインの値を取得します。
//現在の外側のラインの値 double BBFUper3 = iCustom(NULL,0,"Bollinger Bands - Fibonacci Ratios",3,0); double BBFLower3 = iCustom(NULL,0,"Bollinger Bands - Fibonacci Ratios",6,0);
次に、エントリーシグナル判定をします。
//外側のラインの幅がBandsHabaより大きいとき if(BBFUper3-BBFLower3>BandsHaba*Point) { //過去10分のインジケーターの値取得 double STC[11],BBFUper1[11],BBFLower1[11]; for (int i=1;i<=10;i++) { BBFUper1[i]=iCustom(NULL,0,"Bollinger Bands - Fibonacci Ratios",1,i); BBFLower1[i]=iCustom(NULL,0,"Bollinger Bands - Fibonacci Ratios",4,i); STC[i]=iCustom(NULL,0,"Schaff Trend Cycle",0,i); } int BBFcnt=0,STCcnt=0,sign=0; //買い条件 if(STC[2]<1 && STC[1]>5) { for(i=1;i<=BandsHamidePeriod;i++) { if(BBFLower1[i]>Close[i]) BBFcnt=BBFcnt+1; } for(i=2;i<=SchaffHebariPeriod;i++) { if(STC[i]<1) STCcnt=STCcnt+1; } if(BBFcnt>0 && STCcnt==SchaffHebariPeriod-1) sign=1; } //売り条件 if(STC[2]>99 && STC[1]<95) { for(i=1;i<=BandsHamidePeriod;i++) { if(BBFUper1[i]<Close[i]) BBFcnt=BBFcnt+1; } for(i=2;i<=SchaffHebariPeriod;i++) { if(STC[i]>99) STCcnt=STCcnt+1; } if(BBFcnt>0 && STCcnt==SchaffHebariPeriod-1) sign=-1; } }
シャフの値を配列STC、バンドの1本上のラインの値を配列BBFUper1、バンドの1本下のラインの値を配列BBFLower1に格納してシグナル判定に使用しています。
あとは、通常通りエントリー注文のコードを追加します。
あとがき
次回は、バンド幅が大きいときにははみ出し条件は無くても良いとか、その後の議論で出ていたトレンド方向のみのエントリーにするとか、精度を高めていきたいと思います!
こちらの記事は旧MQL4当時のもので、細かな説明等を削除省略しております。コメント頂ければ、新たな記事として作成いたしますので、お気軽にコメントお願い致します。
ナイスさんの、コメント欄より、来ました。MQL勉強中です。ためになります、そして、ダウンさせていただきました。ありがとうございまーーす。
訂正
MetaboNewNiceのパラメータ説明で、1~10の範囲を2~10に訂正です。
ファイルは訂正後のものです。
はじめまして。pi-sukeさん。
訂正が間に合わなかったみたいです。
よろしければ訂正お願いします。
これからもよろしくお願いします。
今回のブログの本筋と関係のない質問で申し訳ないのですが、iCustomの引数のパラメータの部分についてお聞きしたいんですが、ここは元のカスタム指標でexternの宣言を複数してた場合は,で区切って宣言した順番に入力すればいいんでしょうか?その場合、必要なのが一番目だけでもやっぱり全て入力しなければいけないんですかね?
それとiBandsの5番目の引数int bands_shiftって何ですか?ご存じでしたら教えてください。
MQL4 Referenceを翻訳サイトをつかって読んでるんですがいまいちわからないことが多いですね。っていうか翻訳サイトをつかった方が逆に訳わかんなくなったりしますから…
おはようございます。red sauceさん。
「iCustomの引数のパラメータの部分について元のカスタム指標でexternの宣言を複数してた場合は,で区切って宣言した順番に入力すればいいんでしょうか?」
→調べてみましたが、やはり,で区切って宣言した順番に入力すればいいみたいです。
「その場合、必要なのが一番目だけでもやっぱり全て入力しなければいけないんですかね?」
→一番目だけのときは、一つだけ書けばいいみたいです。例えば、インディケータの方に10のパラメータがあって、4つ目を指定したい場合は、4つ目まで書けばいいみたいです。不思議ですね。コンピュータはカンマの数を数えてからパラメータ部分は何個かって事を把握する感じかと。
読み込みの仕方は、よく分かりませんが^^;
結局、一番目から変更したい部分まででいいみたいです。また、不具合があったらおしえてくださいm(..)m
あ、あと、
「iBandsの5番目の引数int bands_shiftって何ですか?」
→これは、インディケータをどれだけ前にずらすかっていうやつです。例えば、bands_shiftを2にすると、現在の計算されたバンドがバー2つ分、未来に表示されます。ここで、8番目のshiftを10で計算させると、実際は、12個前のバーで計算されたバンドということになります。
実際、ボリンジャの場合は、一つ前に出してみる人もいるようです。
メタボ社長さんのリンクから来ました。
こんにちは。
自動売買すごいですね。
勉強したいのですが、チンプンカンプンです???
お聞きしたいのですが、
フィルーターを一つくわえたいです。
RCIです。
(MT4ではSpearRankCorr)
http://gaitameotoko.seesaa.net/article/55582270.html#more
「買いの場合」
RCI52が上向き(上昇中)のみ、条件がそろったら、エントリー
「売りの場合」は、その逆
上向き、下向きなど曖昧?なことは可能なのでしょうか?
記述はどのようになるのでしょうか?
あと、ODLでは実際に自動売買ができるようなので、
当日NY終了時間までに、損失が100pips以上になると、
自動売買を中止するということも可能なのでしょうか?
疑問符ばかりで申し訳ございませんが、
よろしくお願いします。
幸さん、こんにちわ。
フィルターに関しては、条件を付け加えるだけで出来ると思います。
記述は、一つ前の値と二つ前の値を比べて、一つ前の方が大きければ上昇って感じです。値の読み込みは、iCustom関数で出来ると思います。
あと、損失は記憶用変数で記憶させて、時間に関するコードと組み合わせれば、可能だと思います。
次回の記事で出来るところまでやってみますね!
慶次さん、回答ありがとうございます。
うれしいです!!!
勝手なお願いですが、よろしくお願いします。
ご回答ありがとうございます。iCustomのパラメータは不思議なシステムですね。
iBandsの方は8番目のshiftがずらすのだと思いこんでいました。間違える前に教えていただきほんと感謝してます。
メタボさんの手法見てみましたけど勝率が高そうなのはいい感じですね。ただ利確が5PIPSってことはエントリーとイグジットで3PIPSずつ滑ったらシステム上ではプラスでも実利ではマイナスになってしまうんですよね… 自動売買ってそんなには滑らないもんなんですかね?
red sauceさん、おはようございます。
私は、ODLで取引していますが、スリッページはほとんどないです。
しかし、実際走らせてみるとバシッと決まるところもあれば、負けが続くところもあって、やはりフィルターが必要なようです。時間で区切るかトレンドで制限するかなど。
メタボさんところからやって参りました。トヨラボさんの本を読んで勉強している身には大変ためになる記事ばかりです。早速ダウンロードさせていただきました。ありがとうございます!
これから、チョコチョコお邪魔しますのでよろしくお願いします。
二色テグリさん、こんにちわ!
私もより良いシステムを見つけるべく勉強中です。
一緒にがんばりましょう!
EAにはかなり興味があるので勉強になります!
これからは毎日見に来るので、がんばってください!
r170さん、おはようございます。
EAは無限の可能性を秘めていると思います。しかも、無料です!蓄えた知識も奪われることがありません。
これからも、がんばりましょう!
こんにちわ(^^)ノ
iCustom()、便利ですね!
インジケータの値を得られるのですよね。
そこで質問なんですが、例えば売買ポイントで矢印を表示するインジケータがありますよね?
iCustom()を使って、その矢印の有無を判断する事は可能でしょうか?
矢印が表示されないときは、その時のインジケータバッファの状態はEMPTY-VALUEかな?
と勝手に予想して
if(矢印の変数 != EMPTY-VALUE)
などとロジックを組んだりしてみたんですが、うまくいきませんでした…。
あの矢印の表示を使ってEAのポジションをとるような方法はとれないんでしょうか?
携帯からの書き込みですので、乱文で申し訳ありません。
自己解決レスです(^^)
先の手法が出来ました。
コメント欄を汚してすいません。
しかしアレですね、iCustom()を使うとバックテストが激遅になりますね(^^;)
えぎさん
おはようございます。
矢印での売買はどのように書きましたか?
教えていただけたらうれしいです。
バックテストの速度、悩みの一つですね^^;
MetaTraderに興味があり(初心者)、メタボリック社長のブログを見ていた関係でこのHPにたどりつきました。
『メタボリック社長のNewNice戦略』を試してみようと思い、『Bollinger Bands – Fibonacci Ratios』、『Schaff Trend Cycle』をダウンロード、MetaTraderでインディケータを表示できるようになり、チャート上に表示できました。
ただ、『MetaboNewNice』は、MetaTraderの『Custom Indicators』には表示されるようになったのですが、『MetaboNewNice』をチャート上にドロップしても反応がありません。
(チャート上で右クリック/表示中の罫線分析ツールにも表示されません)
根本的に何か間違ってそうなのですが、よくわかりません。教えていただけないでしょうか?
(MetaboNewNice.mq4は、売買システムなので、『Bollinger Bands – Fibonacci Ratios』とかと使い方が違うのでしょうか?)
ぽじーさん
こんにちわ。
MetaboNewNice.mq4は、売買システムなので、インディケータを入れるフォルダの手前のexpertsフォルダに入れてみてください。
ややこしいですが、売買システムとテクニカル指標を分けて保存するようにしましょうね!
慶次さま
早速の返答ありがとうございます。
こちらで確認したところうまくいきました。
ありがとうございます。
初めて書き込み致します。
GWで 初めて メタトレを 知り このサイトに たどり着きました。
すごく 貴重な 情報(技術?)ですね!
素人でも 何とか 簡単なプログラムができるようになりました。有り難うございます。
ところで、こんな 設定ではどうでしょうか?
①買い条件、売り条件共 「シャフ 5、95」 を 「20、80」に 変更
②STOP 6、TAKE 5、BandsHaba 23、BansHamide 11、
MIGのデモでは いい感じでした。
何故か? ODL で行うと Order Send error 130 となりましたが・・・
ブローカーによって MT が 違うのですね?
まだまだ 解らないことばかりなので もし、ODLで デモ OR LIVE できる 方法があれば(口座はあるのですが)どなたか お教え下さい。
これからも 有益な情報 発信がんばってくださいね。
GWスタートさん
おはようございます。
①買い条件、売り条件共 「シャフ 5、95」 を 「20、80」に 変更
②STOP 6、TAKE 5、BandsHaba 23、BansHamide 11
ありがとうございます!試してみますね!
現在ODLでは、ストップ、リミットが10Pipsから有効となっております。
(スプレッド分を考慮してリミット8Pips、ストップ12Pips)
ですので、STOP 6、TAKE 5を実行するには、コード変更でクローズの条件文を加えるとできると思います。
早速のアドバイス 有難うございます。
ODLに 聞いても MTについての質問は 受け付けていません。と、冷たくあしらわれ困っていたところでした。
今晩、チャレンジしてみます。
初めて書き込み致します。
EAのことを知りこのサイトにたどり着きました。
想像していたトレード方法に近い方法でしたので、利用させていただいております。
すごく初歩的な質問なのですが、回答いただけますと幸いです。
EAは設定でき、チャート上にもラインが表示されています。
ただ、売買タイミングで、注文画面が出てくるのですが、
「売りボタン」「買いボタン」がグレイアウトしており、
実際に売買もされていないようなのです。
MTは、FXDDで、デモトレードで行っております。
初歩的な質問かもしれないのですが、ご教示いただけますと幸いです。
よろしくお願い致します。
匿名さん
こんにちわ!
このEAは、レート表示小数点以下3桁5桁表示のブローカーには、未対応ですね^^;
StopLoss、TakeProfit、BandsHaba を10倍にして試してみてください^^
ありがとうございます!
やってみます!
うーん、やっぱり駄目なようですね。。。
ストラテジーテスターで、tickでもテストしてみたのですが、
何も取引結果がでていないようです。(通貨はGBP-JPです)
原因はやはりこの点でしょうか。
もし、他にも考えられることがありましたら教えていただけないでしょうか。
>このEAは、レート表示小数点以下3桁5桁表示のブローカーには、未対応ですね^^;
ちなみに、サンプルでついている、MAは1回しか取引されません。
これ自体、少しおかしいな。。。と思っているところです。
すみません、お手数掛けます。
MTの再セットアップ、EAの再セットアップ。
何度か繰り返していると、、、なぜか直りました。。。
すみません、お騒がせ致しました。
匿名さん
こんにちわ!
解決されてよかったです^^;
ヒストリカルデータの問題かもしれませんね^^;