iCustom関数|MT4カスタムインジケータの使い方

2024年9月5日

執筆者

佐川直弘(株式会社トリロジー取締役)

MetaTrader 4(MT4)を使ったFX自動売買において、カスタムインディケータの活用は非常に重要です。この記事では、カスタムインディケータ(Custom Indicator)を利用するためのiCustom()関数について、初心者にもわかりやすく解説します。

カスタムインディケータ(iCustom)とは?

カスタムインディケータは、トレーダーが独自に作成したテクニカル指標です。標準インディケータにはない独自のロジックやアルゴリズムを含めることができます。iCustom()関数を使用することで、これらのカスタムインディケータを簡単に呼び出し、その計算結果を取得することができます。

iCustomの計算方法

MT4では、カスタムインディケータを呼び出すためにiCustom()関数を使用します。この関数は以下のように定義されています。

関数の仕様
double iCustom(
    string symbol,     // 通貨ペア種類
    int timeframe,     // 時間軸種類
    string name,       // カスタムインディケータ名称
    …,               // カスタムインディケータのパラメータ(必要数分カンマで区切る)
    int mode,          // インディケータ配列インデックス番号(0~7)
    int shift          // 取得するバーの位置(0が最新のバーを表し、1~が過去のバーに遡っていきます)
);

この関数は、指定されたカスタムインディケータの計算結果を返します。

引数の説明

symbol
通貨ペアの種類を指定します。例えば、"EURUSD"や"GBPJPY"など。
timeframe
時間軸の種類を指定します。例えば、1分足(1)、5分足(5)、1時間足(60)など。
name
カスタムインディケータの名称を指定します。カスタムインディケータのファイル名(拡張子なし)を入力します。
カスタムインディケータのパラメータを必要に応じて指定します。パラメータはカンマで区切ります。
mode
インディケータ配列のインデックス番号を指定します。通常、0はメインライン、1はシグナルラインなどを表します。
shift
取得するバーの位置を指定します。0が最新のバーを表し、1以上の数値が過去のバーを表します。

サンプルコード

以下に、iCustom()関数を使用してカスタムインディケータの値を取得するサンプルコードを示します。

サンプルコード
// SampleIndというカスタムインディケータの値を取得する例
double custom_value = iCustom(NULL, 0, “SampleInd", 13, 1, 0);
Print(“最新のカスタムインディケータ値: “, custom_value);

このサンプルコードでは、"SampleInd"という名称のカスタムインディケータの最新の値を取得し、ターミナルウィンドウに表示します。

以下は、カスタムインディケータを使ってトレードシグナルを生成する簡単な例です。

応用例
// SampleIndというカスタムインディケータを使って買いシグナルや売りシグナルを判断する例
double custom_value_current = iCustom(NULL, 0, “SampleInd", 13, 1, 0);
double custom_value_previous = iCustom(NULL, 0, “SampleInd", 13, 1, 1);

if (custom_value_current > custom_value_previous) {
    Print(“買いシグナル: カスタムインディケータが上昇しました。");
} else if (custom_value_current < custom_value_previous) {
    Print(“売りシグナル: カスタムインディケータが下降しました。");
}

このコードは、カスタムインディケータが上昇した場合に買いシグナルを、下降した場合に売りシグナルを生成します。

まとめ

カスタムインディケータ(iCustom)を使用することで、独自のトレードロジックやアルゴリズムを簡単にMT4に取り入れることができます。iCustom()関数を使って、カスタムインディケータの値を取得し、トレード戦略に活用することができます。初心者の方も、この基本的な使い方を理解して、実際のトレードに応用してみてください。

MQL4

Posted by 佐川直弘