< /p>
Đây là bộ lọc ngày giao dịch cho phép người dùng bật hoặc tắt các ngày cụ thể trong tuần. Ngoài ra, nó cho phép người dùng bật hoặc tắt dữ liệu bảng lương phi nông nghiệp của ngày hiện tại và ngày hôm trước, đề phòng trường hợp bạn không muốn giao dịch vào ngày đầy biến động này.
Ngoài ra, người dùng có thể tắt ngày lễ Giáng sinh và/hoặc ngày lễ Năm mới. Tìm hiểu cách giới hạn thời gian giao dịch thành ngày trong bài viết này MQL4 Các cố vấn được lập trình để chỉ giao dịch trong thời gian khoảng thời gian cụ thể và tránh biến động.
MQL4 giới hạn thông số thời gian giao dịch thành ngày
Chủ Nhật đến thứ Sáu
Bool: Cho biết bạn có muốn giao dịch vào từng ngày cụ thể hay không. Mặc định là true, giao dịch hàng ngày.
NFP_Friday
Bool: Có nên thực hiện việc đó vào thứ Sáu, ngày thứ Sáu đầu tiên của tháng hay không, đó là dữ liệu bảng lương phi nông nghiệp buôn bán. Mặc định là giao dịch trong ngày.
NFP_ThursdayBefore
Bool: Bạn đang muốn giao dịch vào Thứ Năm trước khi có dữ liệu Bảng lương phi nông nghiệp biến động vào Thứ Sáu. Mặc định là giao dịch trong ngày.
Ngày lễ Giáng sinh
Bool: Bạn có muốn một khoảng thời gian được xác định tùy chỉnh vào tháng 12 khi tính thanh khoản thấp của các giao dịch vào dịp lễ Giáng sinh trong khoảng thời gian đó không .
Christmas_DayBeginBreak
Double: Đây là ngày trong tháng 12 mà bạn sẽ bắt đầu lọc ra khi bắt đầu kỳ nghỉ lễ Giáng sinh . Giá trị mặc định là 15, nhưng có thể là bất kỳ ngày nào.
Kỳ nghỉ năm mới
Bool: Bạn có muốn thực hiện việc đó trong khoảng thời gian tùy chỉnh vào đầu tháng 1 không? Giao dịch, với tính thanh khoản thấp hơn trong kỳ nghỉ Tết Nguyên Đán.
NewYears_DayEndBreak
Double: Đây là ngày bạn ngừng lọc vào tháng 1, ngày kết thúc kỳ nghỉ Tết. Giá trị mặc định là 3, nhưng có thể là bất kỳ ngày nào.
Đoạn mã MT4
chuỗi bên ngoài _7 = "—Ngày giao dịch—";
Boolean bên ngoài Sunday= đúng;
boolean bên ngoài Thứ hai=True;
boolean bên ngoài Thứ ba=True;
boolean bên ngoài Thứ tư=True;
boolean bên ngoài Thứ năm = đúng;
boolean bên ngoài Friday = true;
boolean bên ngoài NFP_Friday = true;
boolean bên ngoài NFP_ThursdayBefore = true;
boolean bên ngoài ChristmasHolidays = true;
extern double XMAS_DayBeginBreak = 15;
boolean bên ngoài NewYearsHolidays = true;
extern double NewYears_DayEndBreak = 3;
< p>bool DaytoTrade(){
bool daytotrade = false;
if ( DayOfWeek() == 0 && Sunday) daytotrade = true;
if(DayOfWeek() == 1 && Monday) daytotrade = true;
if ( DayOfWeek() == 2 && Thứ ba) daytotrade = true;
if (DayOfWeek() == 3 && Thứ tư) daytotrade = true;
if ( DayOfWeek() == 4 && Thứ năm) daytotrade = true;
if (DayOfWeek() == 5 && Friday) daytotrade = true;
if ( DayOfWeek() == 5 && Day() < 8 && !NFP_Friday ) daytotrade = false;
if (DayOfWeek() == 4 && Day() < ; 8 && !NFP_ThursdayBefore) daytotrade = false;
if(Month() == 12 && Day() > XMAS_DayBeginBreak && !ChristmasHolidays ) daytotrade = false; < /p>
if(Month() == 1 && Day() < NewYears_DayEndBreak && !NewYearsHolidays) daytotrade = false;
Return (daytotrade);
Giải thích
Chúng tôi đặt tên cho hàm lọc ngày của mình là DaytoTrade().
Chúng tôi khai báo một biến bool daytotrade (chữ thường) và khởi tạo nó thành false.
Tiếp theo, chúng ta có một dòng cho mỗi ngày trong tuần cho biết liệu chúng ta có nên giao dịch vào ngày đó trong tuần hay không. Hàm DayofWeek() trả về ngày trong tuần kể từ thời gian máy chủ được biết gần đây nhất:
0 = Chủ Nhật
1 = Thứ Hai
2 = Thứ Ba
3 = Thứ Tư
4 = Thứ Năm
5 = Thứ Sáu
6 = Thứ Bảy
Logic của từng dòng như sau. Nếu DayofWeek() là (==) Chủ nhật (0) và bool ngoài của Chủ nhật là đúng (&& Chủ nhật), thì bool daytotrade là đúng. Nếu bool bên ngoài Chủ nhật được đặt thủ công thành sai, giao dịch hàng ngày sẽ trở lại thành sai. Tất cả các ngày đều giống nhau.
Tiếp theo, chúng tôi lọc Ngày bảng lương phi nông nghiệp, tức là ngày thứ Sáu đầu tiên của mỗi tháng.
Cuối cùng, chúng tôi lọc cho các ngày lễ Giáng sinh và Năm mới.
Cách sử dụng mã MT4
If (OrdersTotalMagicOpen()==0 && OpenBuy==true
&&DaytoTrade() ) {
//Đặt lệnh
Bạn cần việc cần làm Cách duy nhất là sử dụng hàm DaytoTrade() làm điều kiện để đặt lệnh. Sau đó, trước khi đặt lệnh, nó sẽ kiểm tra xem liệu bạn có tuyên bố bất kỳ ngày không giao dịch nào không (những ngày này sẽ được biểu thị là sai), cũng như ngày nghỉ lễ không giao dịch (thời gian nghỉ lễ sẽ được biểu thị là sai).
Chúng tôi thường sử dụng hàm DaytoTrade() kết hợp với TradeTime() như đã thảo luận ở đây.