MQL4 OrderClose Function

Khi chúng tôi đóng lệnh thị trường, chúng tôi sẽ thoát giao dịch ở mức giá thị trường hiện tại, đây sẽ là giá chào mua hiện tại cho lệnh mua và giá chào bán hiện tại cho lệnh bán. Tìm hiểu cách lập trình EA để đóng các lệnh đang mở khi đáp ứng các điều kiện thoát trong bài viết hoàn chỉnh về Chức năng đóng lệnh MQL4 này.


Để đóng lệnh thị trường, mã được sử dụng là hàm OrderClose(), có cú pháp như sau:


bool OrderClose (int Vé, Lô gấp đôi, Giá gấp đôi, int Trượt giá, Mũi tên màu);


Bảng sau mô tả từng loại trong số các tham số này a:

Phạm viMô tả
Vé< /strong> Số vé của lệnh thị trường đóng
< strong>Số lôSố lượng lô để đóng vị thế.
GiáGiá ưu tiên để đóng giao dịch.
Trượt giá Mức chênh lệch được phép trên giá đóng cửa.
Màu sắc Hằng số màu của mũi tên đóng.

Ví dụ sau đây đóng nô lệ Lệnh thị trường mua vay trong ví dụ MACD:

for(cnt=0; cnt<total ;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
if(MacdCurrent>0 && MacdCurrentSignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
return(0); // exit
}

 

Giải thích

Mã đóng ở đây bắt đầu bằng toán tử for, toán tử này lặp liên tục qua khối mã để tính toán điều kiện đóng.


Hàm OrderSelect() được sử dụng để kiểm tra nhóm lệnh mở, tìm kiếm mã giao dịch phù hợp và loại lệnh (OP_BUY hoặc OP_SELL).


Điều kiện cuối cùng và quan trọng nhất của khối mã này là tuân thủ điều kiện chiến lược thoát, trong ví dụ trên là điều kiện thoát MACD.


Sau khi xác định được loại mở và loại lệnh cũng như đáp ứng các điều kiện thoát MACD, hàm OrderClose() có thể được triển khai và các tham số của nó được xác định trong bảng trên.thảo luận.

Chức năng tắt tùy chỉnh

< span jsaction="agoMJf:PFBcW;MZfLnc:P7O7bd;nt4Alf:pvnm0e,pfE8Hb,PFBcW;B01qod:dJXsye;H1e5u:iXtTIf;lYIUJf:hij5Wb;bmeZHc:iURhpf;Oxj3Xe:qAKMYb,yaf12d" jsname="txFAF " lớp=" jCAhz ChMk0b" jscontroller="Gn4SMb">Sử dụng chức năng tắt tùy chỉnh Có thể hữu ích vì khi đó bạn có thể dễ dàng gọi nó từ hàm Start() khi bạn cần đóng đơn hàng dựa trên bất kỳ bộ điều kiện nào. Chức năng đóng tùy chỉnh của bạn sẽ kiểm tra nhóm lệnh mở hiện tại để xác định loại lệnh và số ma thuật của nó.

Đoạn mã MT4

void close(int type){
if(OrdersTotal()>0){
for(Counter=OrdersTotal()-1; Bộ đếm>=0;Bộ đếm–){
OrderSelect(Bộ đếm,SELECT_BY_POS,MODE_TRADES);

if(type==OP_BUY && OrderType()==OP_BUY){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Giá thầu,Chữ số ), vSlippage);
}

if(type==OP_SELL && OrderType()==OP_SELL){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
RefreshRates(); OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),vSlippage);
}
}}

 

Sử dụng MT4

if (OType==0 && CloseBuy==true)
{
đóng (OP_BUY); // Đóng mua

 

Giải thích

Chúng tôi chọn close() làm tên của hàm đóng tùy chỉnh và bất cứ khi nào muốn gọi nó, chúng tôi chỉ cần chèn một từ sau điều kiện đóng, như trong ví dụ sử dụng ở trên.


Dòng thứ hai bắt đầu hàm nếu tổng số vị trí mở lớn hơn 0. Dòng thứ ba kiểm tra nhóm lệnh hiện đang mở và tính toán chúng. Dòng thứ tư gọi hàm OrderSelect() để chọn các đơn hàng đã đếm này để xử lý tiếp.


Chúng ta chỉ xây dựng một tham số cho hàm đóng tùy chỉnh, đó là biến int trong ngoặc (). Tham số này sẽ trở thành mã định danh loại đơn đặt hàng của chúng tôi. Trong hàm tùy chỉnh, chúng tôi chỉ ra rằng loại sẽ bằng (==) OP_BUY hoặc OP_SELL, vì vậy khi gọi close(), chúng tôi phải cho biết liệu close() là close(OP_BUY) hay close(OP_SELL), như trong ví dụ sử dụng ở trên. Trong hàm, chúng tôi liên kết type==OP_BUY và OrderType==OP_BUY với các ký hiệu (&&).


Chúng tôi cũng muốn đảm bảo rằng chúng tôi chọn lệnh mua với mã và con số kỳ diệu chính xác, giống như bạn đã làm ở dòng 6:


if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {


Tỷ giá làm mới() là chức năng làm mới tỷ giá của cặp tiền tệ để nó được điền với tỷ giá mới nhất.


Cuối cùng, chúng ta triển khai hàm OrderClose(), có thể tìm thấy các tham số trong bảng trên.