TerminalClose
Hàm ra lệnh cho terminal hoàn thành hoạt động.
bool TerminalClose(
int ret_code // mã đóng của terminal client
);
2
3
Tham số
ret_code
[truyền vào] Mã trả về, được trả về bởi quá trình của terminal client khi hoàn thành hoạt động.
Giá trị trả về
Hàm trả về true
nếu thành công, ngược lại - false
.
Ghi chú
Hàm TerminalClose()
không dừng terminal ngay lập tức, nó chỉ ra lệnh cho terminal hoàn thành hoạt động của mình.
Mã của Expert Advisor gọi TerminalClose()
phải có tất cả các sắp xếp để hoàn thành ngay lập tức (ví dụ: tất cả các tệp đã mở trước đó phải được đóng ở chế độ bình thường). Việc gọi hàm này phải được theo sau bởi toán tử return.
Tham số ret_code
cho phép chỉ định mã trả về cần thiết để phân tích lý do kết thúc chương trình của hoạt động terminal khi khởi động từ dấu nhắc lệnh.
Ví dụ:
//--- tham số đầu vào
input int tiks_before=500; // số tick trước khi kết thúc
input int pips_to_go=15; // khoảng cách tính bằng pip
input int seconds_st=50; // số giây dành cho Expert Advisor
//--- biến toàn cục
datetime launch_time;
int tick_counter=0;
//+------------------------------------------------------------------+
//| Hàm hủy khởi tạo Expert |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
Print(__FUNCTION__," reason code = ",reason);
Comment("");
}
//+------------------------------------------------------------------+
//| Hàm tick Expert |
//+------------------------------------------------------------------+
void OnTick()
{
static double first_bid=0.0;
MqlTick tick;
double distance;
//---
SymbolInfoTick(_Symbol,tick);
tick_counter++;
if(first_bid==0.0)
{
launch_time=tick.time;
first_bid=tick.bid;
Print("first_bid =",first_bid);
return;
}
//--- khoảng cách giá tính bằng pip
distance=(tick.bid-first_bid)/_Point;
//--- hiển thị thông báo để theo dõi hoạt động của EA
string comm="Từ thời điểm bắt đầu:\r\n● số giây đã trôi qua: "+
IntegerToString(tick.time-launch_time)+" ;"+
"\r\n● số tick nhận được: "+(string)tick_counter+" ;"+
"\r\n● giá đã di chuyển tính bằng điểm: "+StringFormat("%G",distance);
Comment(comm);
//--- phần kiểm tra điều kiện để đóng terminal
if(tick_counter>=tiks_before)
TerminalClose(0); // thoát theo số đếm tick
if(distance>pips_to_go)
TerminalClose(1); // tăng lên số pip bằng pips_to_go
if(distance<-pips_to_go)
TerminalClose(-1); // giảm xuống số pip bằng pips_to_go
if(tick.time-launch_time>seconds_st)
TerminalClose(100); // kết thúc do hết thời gian
//---
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Xem thêm
Program running
, Execution errors
, Reasons for deinitialization