Đối tượng Gann
Đối với các đối tượng Quạt Gann (OBJ_GANNFAN
) và Lưới Gann (OBJ_GANNGRID
), bạn có thể chỉ định hai giá trị của liệt kê ENUM_GANN_DIRECTION
để đặt hướng xu hướng.
ENUM_GANN_DIRECTION
ID | Mô tả |
---|---|
GANN_UP_TREND | Đường tương ứng với xu hướng tăng |
GANN_DOWN_TREND | Đường tương ứng với xu hướng giảm |
Để đặt tỷ lệ của đường chính là 1x1, sử dụng hàm ObjectSetDouble
(chart_handle, gann_object_name, OBJPROP_SCALE
, scale), trong đó:
- chart_handle – cửa sổ biểu đồ nơi đối tượng được đặt;
- gann_object_name – tên đối tượng;
OBJPROP_SCALE
– định danh của thuộc tính "Tỷ lệ";- scale – tỷ lệ cần thiết tính bằng đơn vị Pips/Thanh.
Ví dụ tạo Quạt Gann:
cpp
void OnStart()
{
//---
string my_gann="OBJ_GANNFAN object";
if(ObjectFind(0,my_gann)<0) // Đối tượng không được tìm thấy
{
//--- Thông báo về thất bại
Print("Object ",my_gann," not found. Error code = ",GetLastError());
//--- Lấy giá tối đa của biểu đồ
double chart_max_price=ChartGetDouble(0,CHART_PRICE_MAX,0);
//--- Lấy giá tối thiểu của biểu đồ
double chart_min_price=ChartGetDouble(0,CHART_PRICE_MIN,0);
//--- Có bao nhiêu thanh hiển thị trên biểu đồ?
int bars_on_chart=ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- Tạo một mảng để ghi thời gian mở của mỗi thanh
datetime Time[];
//--- Sắp xếp quyền truy cập vào mảng như chuỗi thời gian
ArraySetAsSeries(Time,true);
//--- Sao chép dữ liệu của các thanh hiển thị trên biểu đồ vào mảng này
int times=CopyTime(NULL,0,0,bars_on_chart,Time);
if(times<=0)
{
Print("Could not copy the array with the open time!");
return;
}
//--- Chuẩn bị sơ bộ đã hoàn tất
//--- Chỉ số của thanh trung tâm trên biểu đồ
int center_bar=bars_on_chart/2;
//--- Đường xích đạo biểu đồ - giữa mức tối đa và tối thiểu
double mean=(chart_max_price+chart_min_price)/2.0;
//--- Đặt tọa độ của điểm neo đầu tiên vào trung tâm
ObjectCreate(0,my_gann,OBJ_GANNFAN,0,Time[center_bar],mean,
//--- Điểm neo thứ hai ở bên phải
Time[center_bar/2],(mean+chart_min_price)/2.0);
Print("Time[center_bar] = "+(string)Time[center_bar]+" Time[center_bar/2] = "+(string)Time[center_bar/2]);
//--- Đặt tỷ lệ tính bằng đơn vị Pips / Thanh
ObjectSetDouble(0,my_gann,OBJPROP_SCALE,10);
//--- Đặt xu hướng đường
ObjectSetInteger(0,my_gann,OBJPROP_DIRECTION,GANN_UP_TREND);
//--- Đặt độ rộng đường
ObjectSetInteger(0,my_gann,OBJPROP_WIDTH,1);
//--- Xác định kiểu đường
ObjectSetInteger(0,my_gann,OBJPROP_STYLE,STYLE_DASHDOT);
//--- Đặt màu đường
ObjectSetInteger(0,my_gann,OBJPROP_COLOR,clrYellowGreen);
//--- Cho phép người dùng chọn đối tượng
ObjectSetInteger(0,my_gann,OBJPROP_SELECTABLE,true);
//--- Tự chọn nó
ObjectSetInteger(0,my_gann,OBJPROP_SELECTED,true);
//--- Vẽ nó trên biểu đồ
ChartRedraw(0);
}
}
1
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
54
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
54