ロジック内容
移動平均線がボリンジャーバンドの中心線をクロスした確定タイミングを判断するオリジナル関数になります( ・Д・)
中央線を上抜け シグナル=1。
中央線を下抜け シグナル=-1。
どちらでもない シグナル=0。
オリジナル関数
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//ボリンジャーバンドクロス(中) int BBCross3(){ int judge=0; double MA1=iMA(_Symbol,0,MAPeriod,0,MAMethod,MAPrice,1); double MA2=iMA(_Symbol,0,MAPeriod,0,MAMethod,MAPrice,2); double BM1=iBands(_Symbol,0,BBPeriod,BBDeviation,0,BBPrice,MODE_MAIN,1); double BM2=iBands(_Symbol,0,BBPeriod,BBDeviation,0,BBPrice,MODE_MAIN,2); if(MA2<=BM2 && BM1<MA1)judge=1; if(MA2>=BM2 && BM1>MA1)judge=-1; return(judge); } |
では解説して行きますね~( ・Д・)
必要なパラメーター設定
このオリジナル関数を使用する為に必要なパラメーターになります。
(MT4導入時のプロパティウインドウから変更出来る内容です)
1 2 3 4 5 6 7 8 |
input string MA=""; //移動平均線 input int MAPeriod=1; //期間 input ENUM_MA_METHOD MAMethod=MODE_SMA; //方法 input ENUM_APPLIED_PRICE MAPrice=PRICE_CLOSE; //価格 input string BB=""; //ボリンジャーバンド input int BBPeriod=20; //期間 input int BBDeviation=2; //偏差 input ENUM_APPLIED_PRICE BBPrice=PRICE_CLOSE; //価格 |
オリジナル関数の説明
まずint型で任意の関数名()で枠{ }を作成します。
1 2 3 4 5 |
int BBCross3(){ //関数の内容 } |
戻り値用の変数として、judge変数を宣言して0を代入してリセットします。
1 |
int judge=0; |
移動平均線の価格を入れる変数をdouble型でMA1とMA2で宣言します。
その変数の中に移動平均線を求めるiMA関数で計算された値を代入するようになります。
1 2 |
double MA1=iMA(_Symbol,0,MAPeriod,0,MAMethod,MAPrice,1); double MA2=iMA(_Symbol,0,MAPeriod,0,MAMethod,MAPrice,2); |
ボリンジャーバンドの価格を入れる変数もdouble型でBM1,2(中央線)で宣言します。
その変数の中にボリンジャーバンドを求めるiBands関数で計算された値を代入するようになります。
1 2 |
double BM1=iBands(_Symbol,0,BBPeriod,BBDeviation,0,BBPrice,MODE_MAIN,1); double BM2=iBands(_Symbol,0,BBPeriod,BBDeviation,0,BBPrice,MODE_MAIN,2); |
クロスした確定タイミングが欲しいので、クロスする前と後を確認する為に1本前と2本前の値が必要になるので2つの値が必要になります。
if文で「移動2本前<中央線2本前 & 中央線1本前<移動1本前」の条件を確認し、条件合致の場合judge変数に1を代入します。
1 |
if(MA2<=BM2 && BM1<MA1)judge=1; |
if文で「移動2本前>中央線2本前 & 中央線1本前>移動1本前」の条件を確認し、条件合致の場合judge変数に-1を代入します。
1 |
if(MA2>=BM2 && BM1>MA1)judge=-1; |
この関数の戻り値としてjudge変数の値を戻します。
1 |
return(judge); |
この戻り値の値を利用して、エントリー指示を出すかの判断に使います。
以上となります( ・Д・)
コメント