今回はボリンジャーバンドの逆張りを用いた手法を紹介したいと思います。
使い方はエンベロープとほとんど変わらないです。
買いエントリーの条件
Low_Band>始値かつLow_Band<終値
売りエントリーの条件
High_Band<始値かつHigh_Band>終値
買いエントリーのエグジット
High_Band<終値
売りエントリーのエグジット
Low_Band>終値
最適なパラメータ設定今回、使用したヒストリカルデータUSD/JPYの1時間足(2012-2019)の8年間です。前回のバックテストで使用したのは3年分なのでより信頼できるバックテストになっています。2Dグラフ初めての見るグラフだと思いますが、横軸がボリンジャーバンドの使用期間、縦軸がボリンジャーバンドのσの値を示しています。色が薄いほど利益がマイナス、色が濃いほど利益がプラスということを示しています。3DグラフBandsPeriodがボリンジャーバンドの期間、BandsDeviationがボリンジャーバンドのσを示しています。高い位置にあるほど利益がプラス、低い位置にあるほど利益がマイナスということを示しています。これら二つのグラフからパラメーターを設定したいと思います。ボリンジャーバンドのσの値を2ボリンジャーバンドの期間を13値の選び方としては選んだ値の近くの値もいい成績だったらそれで大丈夫です。次に使用したプログラムを紹介したいと思います。使用したプログラム
#include "LibEA.mqh"
sinput double Lots = 0.1; //売買ロット数
input ENUM_TIMEFRAMES TFbands =0;//ボリンジャーバンドのタイムフレーム
input int BandsPeriod = 13/ボリンジャーバンドの期間
input double BandsDeviation= 2//ボリンジャーバンドの偏差%
//ティック時実行関数
void Tick()
{
int sig_entry = EntrySignal(); //仕掛けシグナル
int sig_exit = ExitSignal();
//成行売買
MyOrderSendMarket(sig_entry, sig_exit, Lots);
}
//仕掛けシグナル関数
int EntrySignal()
{
//ボリンジャーバンド
double High_Band_1=iBands(_Symbol,TFbands,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_HIGH,1);
double Low_Band_1=iBands(_Symbol,TFbands,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_LOW,1);
//ローソク足
double Close1 = iClose(_Symbol, TF, 1);
double Open1 = iOpen(_Symbol, TF, 1);
int ret = 0; //シグナルの初期化
//買いエントリー
if(Close1 > Low_Band_1&&Open1 < Low_Band_1)
ret = 1;
//売りエントリー
if(Close1 < High_Band_1&&Open1 > High_Band_1)
ret = -1;
return ret; //シグナルの出力
}
//手仕舞いシグナル関数
int ExitSignal()
{
//ボリンジャーバンド
double High_Band_1=iBands(_Symbol,TFbands,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_HIGH,1);
double Low_Band_1=iBands(_Symbol,TFbands,BandsPeriod,BandsDeviation,0,PRICE_CLOSE,MODE_LOW,1);
//ローソク足
double Close1 = iClose(_Symbol, TF, 1);
double Open1 = iOpen(_Symbol, TF, 1);
int ret = 0; //シグナルの初期化
//買いエントリーのエグジット
if(Close1 > High_Band_1)
ret = -1;
//売りエントリーのエグジット
if(Close1 < Low_Band_1)
ret = 1;
return ret; //シグナルの出力
}
結果fxのブログを初めてまともに利益をあげることに成功しました。このプログラムなら本格的に導入してもよさそうです。特にプロフィットファクタが1.67であること、ドローダウンが11%リスクが少なく、非常に安定して利益を得ていることが分かります。1万通貨の取引を8年間続けると55万円の利益を生み出すことができます。さらに利益を得ようとするなら、利食いのときの手仕舞いシグナル関数内のローソク足の時間足を1分足にするとさらに良くなると思います。