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

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

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

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

001//+------------------------------------------------------------------+
002//|                                                       Sample.mq4 |
003//|                                     Copyright (c) 2015, りゅーき |
004//|                                            https://autofx100.com/ |
005//+------------------------------------------------------------------+
006#property copyright "Copyright (c) 2015, りゅーき"
007#property link      "https://autofx100.com/"
008#property version   "1.00"
009 
010//+------------------------------------------------------------------+
011//| ライブラリ                                                       |
012//+------------------------------------------------------------------+
013#include <stderror.mqh>
014#include <stdlib.mqh>
015#include <WinUser32.mqh>
016#include <Original/Basic.mqh>
017#include <Original/DateAndTime.mqh>
018#include <Original/LotSizing.mqh>
019#include <Original/OrderHandle.mqh>
020#include <Original/OrderReliable.mqh>
021 
022//+------------------------------------------------------------------+
023//| EAパラメータ設定情報                                             |
024//+------------------------------------------------------------------+
025extern string Note01           = "=== General ==================================================";
026extern int    MagicNumber      = 7777777;
027extern int    SlippagePips     = 5;
028extern string Comments         = "";
029extern double FixLotSize       = 0.01;
030 
031extern string Note02           = "=== Entry ====================================================";
032extern string Note02_1         = "--- DayOfWeek Trade ------------------------------------------";
033extern bool   Monday           = true;
034extern bool   Tuesday          = true;
035extern bool   Wednesday        = true;
036extern bool   Thursday         = true;
037extern bool   Friday           = true;
038 
039//+------------------------------------------------------------------+
040//| グローバル変数                                                   |
041//+------------------------------------------------------------------+
042// 共通
043double gPipsPoint     = 0.0;
044int    gSlippage      = 0;
045color  gArrowColor[6] = {Blue, Red, Blue, Red, Blue, Red}; //BUY: Blue, SELL: Red
046int    gPrvBars       = 0;
047 
048//+------------------------------------------------------------------+
049//| Expert initialization function                                   |
050//+------------------------------------------------------------------+
051int OnInit()
052{
053  gPipsPoint = currencyUnitPerPips(Symbol());
054  gSlippage = getSlippage(Symbol(), SlippagePips);
055 
056  gPrvBars = Bars;
057 
058  return(INIT_SUCCEEDED);
059}
060 
061//+------------------------------------------------------------------+
062//| Expert deinitialization function                                 |
063//+------------------------------------------------------------------+
064void OnDeinit(const int reason)
065{
066}
067 
068//+------------------------------------------------------------------+
069//| Expert tick function                                             |
070//+------------------------------------------------------------------+
071void OnTick()
072{
073  int currentBars = Bars;
074 
075  // -----------------------------------------------------------------
076  // 仕掛けフィルター
077  // -----------------------------------------------------------------
078  // 新しい足を生成した時ではない場合は、仕掛けない
079  if(currentBars == gPrvBars){
080    gPrvBars = currentBars;
081    return;
082  }
083 
084  // 指定曜日は、仕掛けない
085  if((DayOfWeek() == 1 && Monday    == false) ||
086     (DayOfWeek() == 2 && Tuesday   == false) ||
087     (DayOfWeek() == 3 && Wednesday == false) ||
088     (DayOfWeek() == 4 && Thursday  == false) ||
089     (DayOfWeek() == 5 && Friday    == false)){
090    gPrvBars = currentBars;
091    return;
092  }
093 
094  // -----------------------------------------------------------------
095  // 仕掛け
096  // -----------------------------------------------------------------
097  // 成行注文
098  int ticket = orderSendReliable(Symbol(), OP_BUY, FixLotSize, Ask, gSlippage, 0.0, 0.0, Comments, MagicNumber, 0, gArrowColor[OP_BUY]);
099 
100  // 本来はticketの値によって後続の処理を制御する必要があるが、簡単のため、ここでは無視
101 
102  gPrvBars = currentBars;
103}

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

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

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

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

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

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

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

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

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

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

アイキャッチ

>

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

CTR IMG