MACDの値を一括で欲しい!
FX
こんにちは。ちょびっとfxです。
さて、タイトル通りですが、EAつくーるで出力されたソースコードを基に、MACDの値を一気に取る関数を作ってみました。
正直、イマイチ。
では早速なんですが、関数です。
//--------------------------------------------------------------------------------------------------------+
//| MACDとSignalの値を取得する関数
//| 処理:指定したタイムフレーム、EMA期間、シグナルSMA期間でMACDとSignalラインの値を取得
//| 引数:period - タイムフレーム(0で現在のチャートのタイムフレームを使用)
//| fastEMA - 短期EMAの期間
//| slowEMA - 長期EMAの期間
//| signalSMA - シグナルラインのSMA期間
//| shift - 取得するバーの位置(0で現在のバー、1で1本前のバーなど)
//| 戻り値:構造体MACDValuesとして、MACDとSignalラインの値を返す
//--------------------------------------------------------------------------------------------------------+
struct MACDValues {
double macd; // MACDの値
double signal; // Signalラインの値
};
MACDValues getMACDValues(string symbol, int period, int fastEMA, int slowEMA, int signalSMA, int shift)
{
MACDValues macdValues;
// MACDの値を取得
macdValues.macd = iMACD(symbol, period, fastEMA, slowEMA, signalSMA, PRICE_CLOSE, MODE_MAIN, shift);
// Signalラインの値を取得
macdValues.signal = iMACD(symbol, period, fastEMA, slowEMA, signalSMA, PRICE_CLOSE, MODE_SIGNAL, shift);
return macdValues;
}
構造体変数ってやつを使ってみました。
使い方は下記。
void OnTick()
{
// MACDのパラメータを設定
string symbol = Symbol();
int fastEMA = 12;
int slowEMA = 26;
int signalSMA = 9;
int period = PERIOD_H1; // 現在のチャートのタイムフレームを使用(1時間足)
// MACDとSignalの値を取得
MACDValues macdValues = getMACDValues(symbol, period, fastEMA, slowEMA, signalSMA, 0);
// MACDとSignalの値をログに表示
Print("MACD: ", macdValues.macd, " Signal: ", macdValues.signal);
}どうですか??
慣れてしまえば簡単です。
ではまた。
ファイルDLは下記より。
×![]()
よろしいですか?