MQL4言語入門|自作EAに簡単に実装できる新規注文の時間制限機能

この記事は約5分で読めます。

MQL言語入門|自作EAに簡単に実装できる新規注文の時間制限機能

初心者向けに、MQL4言語を使ったプログラミングについて解説しています。

今回は、MT4のサンプルEA「MACD Sample.mq4」のソースコードの一部を書き換えて、新規オーダーの時間制限機能を実装します。

あくまでMQL言語の入門用の記事なので、本当に簡単な書き換えだけです。

仕組みさえわかれば、あなたの自作EAにも簡単に実装できます。

ぜひあなたの勝てるEA作りに役立ててください。

 

スポンサーリンク

時間制限機能とは

EA作りをしていると、「この時間帯のトレードは避けたい」と考えることもあると思います。

例えば、

  • 米国の雇用統計発表時は価格が大きく乱高下するので、その時間帯は取引しない。
  • 欧州・米国時間に比べて、アジア時間はボラティリティが低いので取引しない、またはその逆。
  • ある特定の曜日だけ取引したい、またはその逆。

 

そこで、任意に時間や曜日を指定し、そのときだけ新規注文しない、または新規注文する機能をプログラムし、EAに実装する方法を解説します。

 

スポンサーリンク

MetaEditor の起動

サンプルコード「MACD Sample.mq4」の一部を書き換えて、取引時間の制限機能のソースコードを作ります。

MT4の「メタクォーツ言語エディタ」をクリックします。

 

MeTaEditorが立ち上がったら、画面左側の「Navigater」内のツリーから「Experts」をダブルクリックします。

「Experts」のツリーから「MACD Sample.mq4」をダブルクリックすると、ソースコードが開きます。

 

スポンサーリンク

取引時間の制限機能の自作

それでは、いよいよソースコードを書き換えていきます。

 

外部パラメーターの追加

カーソルを11行目に移動します。
ここでは、ユーザーが変更可能なパラメーターを設定しています。

input double TakeProfit =50;
input double Lots =0.1;
input double MACDOpenLevel =3;
input double MACDCloseLevel=2;
input int MATrendPeriod =26;
input int StartTime=0;
input int StopTime=8;
double TrailingStop;

新たなパラメーター「StartTime」と「StopTime」を追加します。

今回は、「StartTime」時から「StopTime」時の間だけ新規オーダーできる制限をかけます。

時間制限にはいろんな方法が考えられるので、後で他の方法についても説明します。

 

変数の宣言の追加

カーソルを下に移動させます。

ここでは、変数の宣言をしています。

void OnTick(void)
{
double MacdCurrent,MacdPrevious;
double SignalCurrent,SignalPrevious;
double MaCurrent,MaPrevious;
int    cnt,ticket,total;
bool   TradeTime;

新たにbool型の変数「TradeTime」を追加します。

bool型は、真(=true)か偽(=false)の2値をとるデータ型です。

 

取引時間の制限機能を追加

カーソルを下に移動させます。

ここでは、エントリー条件として保有ポジションの有無をチェックしています。

このサンプルEAは、無限にポジションを持ってしまわないよう、保有ポジションがあれば新規オーダーできないようになっています。

【変更前】

total=OrdersTotal();
if(total<1)
{

【変更後】

total=OrdersTotal();
if(StartTime<StopTime && Hour()<=StartTime && Hour()<=StopTime) TradeTime=true;
if(StartTime>StopTime && (Hour()>=StartTime || Hour()<=StopTime)) TradeTime=true;
if(total<1 && TradeTime==true)
{

Hour()は、最後に受信したサーバー時間、つまり現在のMT4時間(単位:時、0~23の範囲)を返す変数です。

 

ここで注意すべきは、StartTimeがStopTimeより小さいのか大きいのかによって、式が違ってくることです。

もし取引時間を8時から20時までにしたいなら、StartTime<StopTimeなので、「現在時刻が8時以降、かつ、現在時刻が20時以前」という式になります。

もし取引時間を20時から翌日の8時までにしたいなら、StartTime>StopTimeなので、「現在時刻が20時以降、または、現在時刻が8時以前」という式になります。

 

ソースコードの書き換えは以上です。

 

時間制限機能の応用

取引時間制限を「時」単位ではなく「分」単位でする場合は、Hour()ではなくMinute()を使います。日単位ならDay()です。

 

「曜日」で制限をかけることもできます。

DayOfWeek()は、最後に受信したサーバー時間の曜日、つまり現在のMT4時間の曜日(()内の数値は0~6までで、日曜なら「0」、土曜なら「6」)を返す変数です。

例えば、週明けの月曜日だけトレードしたいなら、

if(DayOfWeek()==1)

という式にすればいいです。

 

スポンサーリンク

まとめ

今回は、MT4のサンプルEA「MACD Sample.mq4」のソースコードの一部を書き換えて、新規オーダーの時間制限機能を実装しました。

MQL4言語の入門記事であり、仕組みさえわかれば、自作EAに簡単に実装できます。

ぜひあなたの勝てるEA作りに役立ててください。

タイトルとURLをコピーしました