ロジック内容
短期と長期の2本の移動平均線をクロスしたタイミングを判断するオリジナル関数になります( ・Д・)
オリジナル関数
1 2 3 4 5 6 7 8 9 10 11 |
//移動平均線クロス int MACross(){ int entry=0; double MAS1=iMA(_Symbol,0,Period1,0,Method1,Price1,1); double MAS2=iMA(_Symbol,0,Period1,0,Method1,Price1,2); double MAL1=iMA(_Symbol,0,Period2,0,Method2,Price2,1); double MAL2=iMA(_Symbol,0,Period2,0,Method2,Price2,2); if(MAS2<=MAL2 && MAL1<MAS1)entry=1; if(MAS2>=MAL2 && MAL1>MAS1)entry=-1; return(entry); } |
では解説して行きますね~( ・Д・)
必要なパラメーター設定
このオリジナル関数を使用する為に必要なパラメーターになります。
(MT4導入時のプロパティウインドウから変更出来る内容です)
1 2 3 4 5 6 7 8 |
input string MA1=""; //移動平均線(短期) input int Period1=20; //期間 input ENUM_MA_METHOD Method1=MODE_SMA; //方法 input ENUM_APPLIED_PRICE Price1=PRICE_CLOSE; //価格 input string MA2=""; //移動平均線(長期) input int Period2=50; //期間 input ENUM_MA_METHOD Method2=MODE_SMA; //方法 input ENUM_APPLIED_PRICE Price2=PRICE_CLOSE; //価格 |
オリジナル関数の説明
まずint型で任意の関数名()で枠{ }を作成します。
1 2 3 4 5 |
int MACross(){ //関数の内容 } |
戻り値用の変数として、entry変数を宣言して0を代入してリセットします。
1 |
int entry=0; |
移動平均線の価格を入れる変数をdouble型でMAS1,2とMAL1,2で宣言します。
その変数の中に移動平均線を求めるiMA関数で計算された値を代入するようになります。
1 2 3 4 |
double MAS1=iMA(_Symbol,0,Period1,0,Method1,Price1,1); double MAS2=iMA(_Symbol,0,Period1,0,Method1,Price1,2); double MAL1=iMA(_Symbol,0,Period2,0,Method2,Price2,1); double MAL2=iMA(_Symbol,0,Period2,0,Method2,Price2,2); |
移動平均線がクロスするタイミングが知りたいので短期と長期の1本前と2本前の合計4つの値が必要になります。
そのタイミングを計る条件式はゴールデンクロスの場合「短期2本前<長期2本前 & 長期1本前<短期1本前」となり、デッドクロスは符号が逆になります。
1 2 |
if(MAS2<=MAL2 && MAL1<MAS1)entry=1; if(MAS2>=MAL2 && MAL1>MAS1)entry=-1; |
そしてif文でゴールデンクロスの条件に合致した時にentry変数に1を代入し、デッドクロスの条件に合致した時にentry変数に-1を代入します。
この関数の戻り値としてentry変数の値を戻します。
1 |
return(entry); |
以上となります( ・Д・)
コメント