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関数をマスターしてみてください。
コメント