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

 

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

 

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

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

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

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

MT4が使える人気No.1FX業者
シストレするならMT4専用のVPS

時間制限機能とは

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」のソースコードの一部を書き換えて、新規オーダーの時間制限機能を実装しました。

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

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

 

MQL言語入門まとめ

これまでにMQL言語入門として書いた記事がたまってきましたのでまとめました。

【保存版】MQL言語入門まとめ|EA・インジケーターの作り方
せっかくMT4を使うなら、あなたオリジナルのEAやインジケーターを自作してみませんか。「プログラミングなんて自分にはとても無理だ」と思うかもしれませんが、そんなことありません。最低限知っておくべきことさえ押さえておけば、簡単にできます。

 

おすすめ書籍

もっと本格的にMQL言語を使いこなしたいなら、以下の書籍がおすすめです。私もこの本で勉強しました。

MQL言語入門

●免責及び注意事項●
当サイトの全てのコンテンツは管理人自身による情報の提供を目的としており、決して投資行動を勧誘・助言するものではありません。
投資商品、売買価格決定等の投資行動につきましては、ご自身の判断と責任に基づいて行われるようお願いいたします。
また、個々の取引において生じたいかなる損失についても、本ブログサイトおよびその管理者は一切の責任を負いかねます。

Startup!

コメント