ソースコード完成例
各処理の説明
■プロパティの設定
①#property indicator_chart_window
①#property indicator_chart_window
インジゲータをチャートウインドウに表示する。
■変数の設定
①double MA00 = 0;
②double MA01 = 0;
③int up_flag = 0;
④int down_flag = 0;
①double MA00;
double型の変数を指定。ここでは、MA00を指定。
現在の移動平均線の値用。
②double MA01;
double型の変数を指定。ここでは、MA01を指定。
1本前の移動平均線の値用。
③int up_flag;
int型の変数を指定。ここでは、up_flagを指定。
下から上にタッチしたかどうかのチェック用。
④int down_flag;
int型の変数を指定。ここでは、down_flagを指定。
上から下にタッチしたかどうかのチェック用。
■グローバル変数の設定
①extern int ma_period = 20;
②extern bool alert_push = true;
①extern int ma_period = 20;
int型の変数を指定。ここでは、ma_periodを指定。
移動平均線の期間用。初期値は20を設定。
②extern bool alert_push = true;
bool型の変数を指定。ここでは、alert_pushを指定。
アラートを鳴らすか、プッシュ通知するかどうかの判定用。初期値はtrueを設定。
■指標計算関数の設定
int start()
{
①MA00 = iMA(NULL, 0, ma_period, 0, MODE_EMA, PRICE_CLOSE, 0);
②MA01 = iMA(NULL, 0, ma_period, 0, MODE_EMA, PRICE_CLOSE, 1);
③if(MA01 > Close[1] && MA00 <= Close[0]){
④if(alert_push == true && up_flag == 0){
⑤Alert("MAタッチ(下から上):アラート通知");
⑥SendNotification("MAタッチ(下から上):プッシュ通知");
⑦up_flag = 1;
⑧down_flag = 0;
}
}
⑨if(MA01 < Close[1] && MA00 >= Close[0]){
⑩if(alert_push == true && down_flag == 0){
⑪Alert("MAタッチ(上から下):アラート通知");
⑫SendNotification("MAタッチ(上から下):プッシュ通知");
⑬down_flag = 1;
⑭up_flag = 0;
}
}
return(0);
}
①MA00 = iMA(NULL, 0, ma_period, 0, MODE_EMA, PRICE_CLOSE, 0);
変数MA00に現在のiMAの値を代入。
ここでは、現在のチャートの通貨ペア、時間足、期間20、指数移動平均線、終値、現在の足を指定。
②MA01 = iMA(NULL, 0, ma_period, 0, MODE_EMA, PRICE_CLOSE, 1);
変数MA01に1本前のiMAの値を代入。
ここでは、現在のチャートの通貨ペア、時間足、期間20、指数移動平均線、終値、1本前の足を指定。
③if(MA01 > Close[1] && MA00 <= Close[0]){
if文。ここでは、1本前の足が移動平均線より下で、現在価格が現在の移動平均線以上になったか(タッチしたか)という条件。
④if(alert_push == true && up_flag == 0){
if文。ここでは、アラートを鳴らすかどうかと、上から下にタッチしてるかどうかという条件。
⑤Alert("MAタッチ(下から上):アラート通知");
アラートを鳴らす。
⑥SendNotification("MAタッチ(下から上):プッシュ通知");
プッシュ通知する。
⑦up_flag = 1;
up_flagに1を代入する。 連続でアラートさせないため。
⑧down_flag = 0;
down_flagに0を代入する。
⑨if(MA01 < Close[1] && MA00 >= Close[0]){
if文。ここでは、1本前の足が移動平均線より上で、現在価格が現在の移動平均線以下になったか(タッチしたか)という条件。
⑩if(alert_push == true && down_flag == 0){
if文。ここでは、アラートを鳴らすかどうかと、下から上にタッチしてるかどうかという条件。
⑪Alert("MAタッチ(上から下):アラート通知");
アラートを鳴らす。
⑫SendNotification("MAタッチ(上から下):プッシュ通知");
プッシュ通知する。
⑬down_flag = 1;
down_flagに1を代入する。 連続でアラートさせないため。
⑭up_flag = 0;
up_flagに0を代入する。