iCustom関数を活用してカスタムインジケーターをEA化する
iCustom関数を活用してカスタムインジケーターをEA化させていきましょう。
iCustom関数とは指定したカスタムインジケーターの値を返す関数です。

【MQL】指定したカスタムインジケーターの値を返す『iCustom関数』についてわかりやすく説明してみた
iCustom関数 iCustom関数は、指定したカスタムインジケーターの値を返す関数です。 iCustom関数は、独自インジケーターを組み込む際に利用することが多いです。 また、EAを作る際に外部のサインを出すインジケーター...
iCustom関数を活用して以前ゴールデンクロス・デッドクロスのインジケーターを自動売買させましょう。

【MQL】移動平均線のゴールデンクロス・デッドクロス時にシグナルを表示するインジケーター【中級編】
移動平均線のゴールデンクロス・デッドクロス時にシグナルを表示するインジケーター 移動平均線のゴールデンクロス・デッドクロス時に シグナルを表示するインジケーターを作成していきたいと思います。 2つの移動平均線を表示する ...
メタエディタ(MetaEditor)を立ち上げる
メタエディタ(MetaEditor)を立ち上げましょう。今回は名前を「iCustom-EA」で作成します。
パラメーターを記述する
パラメーターを記述しましょう。
input int TakeProfit = 5;//利確 input double Lots = 0.01;//ロット数 input int MagicNumber = 12345;//マジックナンバー
OnTick()関数を記述する
OnTick()関数を記述しましょう。
まず最初にiCustom関数を活用してカスタムインジケーターの矢印の配列を変数に代入します。
double UPArrow = iCustom(NULL,0,"GCDC-SIGNAL",2,1); double DWNArrow = iCustom(NULL,0,"GCDC-SIGNAL",3,1);
そしてUPArrowがEMPTY_VALUがではなく、DWNArrowがEMPTY_VALUE時に
if(UPArrow != EMPTY_VALUE && DWNArrow == EMPTY_VALUE)
ロングのポジションを持つようにします。
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Red);
今度は逆で、UPArrowがEMPTY_VALUEで、DWNArrowがEMPTY_VALUEではない時に
if(UPArrow == EMPTY_VALUE && DWNArrow != EMPTY_VALUE)
ショートのポジションを持つようにします。
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Blue);
これでOnTick()関数は完了です。
double UPArrow = iCustom(NULL,0,"GCDC-SIGNAL",2,1);//上矢印をUPAroowに入れる
double DWNArrow = iCustom(NULL,0,"GCDC-SIGNAL",3,1);//下矢印をDWArrowに入れる
if(UPArrow != EMPTY_VALUE && DWNArrow == EMPTY_VALUE)/UPAroowが空ではなくDWNArrowが空の場合
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Red);//ロングエントリー
}
if(UPArrow == EMPTY_VALUE && DWNArrow != EMPTY_VALUE)//UPAroowが空でDWNArrowが空ではない場合
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Blue); //ショートエントリー
}Copy
コンパイル
コンパイルしましょう。しっかりと条件通りに動いていれば完了です。
ソースコード全体
//+------------------------------------------------------------------+
//| iCustom-EA.mq4 |
//| Copyright 2020, FX-EA System Project Creator |
//| https://creator.fx-ea-system-project.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, FX-EA System Project Creator"
#property link "https://creator.fx-ea-system-project.com/"
#property version "1.00"
#property strict
/*パラメーター*/
input int TakeProfit = 5;//利確
input double Lots = 0.01;//ロット数
input int MagicNumber = 12345;//マジックナンバー
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
double UPArrow = iCustom(NULL,0,"GCDC-SIGNAL",2,1);//上矢印をUPAroowに入れる
double DWNArrow = iCustom(NULL,0,"GCDC-SIGNAL",3,1);//下矢印をDWArrowに入れる
if(UPArrow != EMPTY_VALUE && DWNArrow == EMPTY_VALUE)/UPAroowが空ではなくDWNArrowが空の場合
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point*10,"Order Long",MagicNumber,0,Red);//ロングエントリー
}
if(UPArrow == EMPTY_VALUE && DWNArrow != EMPTY_VALUE)//UPAroowが空でDWNArrowが空ではない場合
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point*10,"Order Short",MagicNumber,0,Blue); //ショートエントリー
}
}
//+------------------------------------------------------------------+Copy
まとめ
iCustom関数を活用すればどのようなカスタムインジケーターでも自動売買化させることができるので、
ソースコードを応用してぜひiCustom関数をマスターしてみてください。






コメント