MT4のExpertAdvidor作成時の移動平均線のサンプルコードです。
MT4のEAで移動平均線を使うには、iMA()という関数を使います。
iMA()は以下のように記述されます。
double iMA( string symbol, // 通貨ペア int timeframe, // 時間足 int ma_period, // 計算期間 int ma_shift, // 移動平均線シフト int ma_method, // 移動平均線計算方法 int applied_price, // 適応価格 int shift // シフト );
例えば、
double Ma = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1);
はチャート上の通貨ペア・時間足で5日の指数平滑移動平均線の現在のローソク(バー)より一本前の値を取得します。
また以下のように変数を変えることができます。
<スポンサーリンク>
timeframe | 0 | チャート上の時間足 |
PERIOD_M1 | 1分足 | |
PERIOD_M5 | 5分足 | |
PERIOD_M15 | 15分足 | |
PERIOD_M30 | 30分足 | |
PERIOD_H1 | 1時間足 | |
PERIOD_H4 | 4時間足 | |
PERIOD_D1 | 日足 | |
ma_method | MODE_EMA | 指数平滑移動平均 |
MODE_LWMA | 加重移動平均 | |
MODE_SMA | 単純移動平均 | |
MODE_SMMA | 平滑移動平均 | |
applied_price | PRICE_CLOSE | 終値 |
PRICE_OPEN | 始値 | |
PRICE_HIGH | 高値 | |
PRICE_LOW | 安値 | |
PRICE_MEDIAN | 高値と安値の中値 | |
PRICE_TYPICAL | (高値+安値+終値)/3 | |
PRICE_WEIGHTED | 加重終値 |
以下のサンプルコードは、3本の移動平均線をより小次郎講師の移動平均線大循環分析を行いました。
//+------------------------------------------------------------------+ //| 移動平均線 | //+------------------------------------------------------------------+ int Circulation; int EmaCirculation() { double ema5 = iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1); double ema20 = iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1); double ema40 = iMA(NULL,0,40,0,MODE_EMA,PRICE_CLOSE,1); if(ema5>ema20 && ema20>ema40) Circulation=1; else if(ema20>ema5 && ema5>ema40) Circulation=2; else if(ema20>ema40 && ema40>ema5) Circulation=3; else if(ema40>ema20 && ema20>ema5) Circulation=4; else if(ema40>ema5 && ema5>ema20) Circulation=5; else if(ema5>ema40 && ema40>ema20) Circulation=6; return(Circulation); }
Circulationの中に移動平均線大循環の番号を格納して、他の関数内で使用できるようにしてあります。