指定曜日のみトレードする機能

日付や時刻のフィルターと組み合わせるとバリエーション豊かに

年末年始時刻での仕掛けフィルターを作ってきましたので、ついでに曜日のフィルター機能も紹介します。

こちらも簡単に実現できてしまいます。関数ではないので、サンプルEAを直接載せておきます。

//+------------------------------------------------------------------+
//|                                                       Sample.mq4 |
//|                                     Copyright (c) 2015, りゅーき |
//|                                            https://autofx100.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright (c) 2015, りゅーき"
#property link      "https://autofx100.com/"
#property version   "1.00"

//+------------------------------------------------------------------+
//| ライブラリ                                                       |
//+------------------------------------------------------------------+
#include <stderror.mqh>
#include <stdlib.mqh>
#include <WinUser32.mqh>
#include <Original/Basic.mqh>
#include <Original/DateAndTime.mqh>
#include <Original/LotSizing.mqh>
#include <Original/OrderHandle.mqh>
#include <Original/OrderReliable.mqh>

//+------------------------------------------------------------------+
//| EAパラメータ設定情報                                             |
//+------------------------------------------------------------------+
extern string Note01           = "=== General ==================================================";
extern int    MagicNumber      = 7777777;
extern int    SlippagePips     = 5;
extern string Comments         = "";
extern double FixLotSize       = 0.01;

extern string Note02           = "=== Entry ====================================================";
extern string Note02_1         = "--- DayOfWeek Trade ------------------------------------------";
extern bool   Monday           = true;
extern bool   Tuesday          = true;
extern bool   Wednesday        = true;
extern bool   Thursday         = true;
extern bool   Friday           = true;

//+------------------------------------------------------------------+
//| グローバル変数                                                   |
//+------------------------------------------------------------------+
// 共通
double gPipsPoint     = 0.0;
int    gSlippage      = 0;
color  gArrowColor[6] = {Blue, Red, Blue, Red, Blue, Red}; //BUY: Blue, SELL: Red
int    gPrvBars       = 0;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
  gPipsPoint = currencyUnitPerPips(Symbol());
  gSlippage = getSlippage(Symbol(), SlippagePips);

  gPrvBars = Bars;

  return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
  int currentBars = Bars;

  // -----------------------------------------------------------------
  // 仕掛けフィルター
  // -----------------------------------------------------------------
  // 新しい足を生成した時ではない場合は、仕掛けない
  if(currentBars == gPrvBars){
    gPrvBars = currentBars;
    return;
  }

  // 指定曜日は、仕掛けない
  if((DayOfWeek() == 1 && Monday    == false) || 
     (DayOfWeek() == 2 && Tuesday   == false) || 
     (DayOfWeek() == 3 && Wednesday == false) || 
     (DayOfWeek() == 4 && Thursday  == false) || 
     (DayOfWeek() == 5 && Friday    == false)){
    gPrvBars = currentBars;
    return;
  }

  // -----------------------------------------------------------------
  // 仕掛け
  // -----------------------------------------------------------------
  // 成行注文
  int ticket = orderSendReliable(Symbol(), OP_BUY, FixLotSize, Ask, gSlippage, 0.0, 0.0, Comments, MagicNumber, 0, gArrowColor[OP_BUY]);

  // 本来はticketの値によって後続の処理を制御する必要があるが、簡単のため、ここでは無視

  gPrvBars = currentBars;
}

1本の足で1回だけエントリーする機能も混ざっていますが(仕掛けフィルターの1つ目のブロック)、ティックごとにエントリーするのを避けるためだけに入れていますので、無視してください。

仕掛けフィルターの2つ目のブロックが指定曜日のみトレードする機能の本体部分です。なお、gPrvBars = currentBars;は1本の足で1回だけエントリーする機能に必要な命令なので、1本の足で1回だけエントリーするわけではない場合は削除してください。

DayOfWeek()はサーバの曜日を取得する標準関数で、0が日曜で、それ以降、1(月)、2(火)・・・6(土)となります。

土日は元々トレードできませんから、月曜~金曜までで十分です。

各曜日のパラメータをtrueにすると、その曜日はトレードします。falseにすると、トレードしません。

MT4の無料プログラミング講座

LINE公式アカウントを友だち追加して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG