🧩 Giới Thiệu Nhanh
Từ phiên bản AmiBroker 6.30, bạn có thể thêm các điều khiển giao diện người dùng (GUI) như nút bấm, hộp kiểm, thanh trượt, trường chỉnh sửa… ngay trên biểu đồ, và tương tác trực tiếp với chúng! Điều này giúp chiến lược phân tích kỹ thuật của bạn trở nên trực quan và linh hoạt hơn bao giờ hết.
🛠 1. Tạo Điều Khiển GUI
Sử dụng các hàm sau để tạo điều khiển:
- GuiButton, GuiEdit, GuiToggle, GuiRadio, GuiDateTime, GuiSlider
Ví dụ tạo nút với ID:
idMyButton = 2;
GuiButton(“MyButton”, idMyButton, 10, 20, 100, 20, notifyClicked);
Hàm sẽ trả về:
- guiNew: Điều khiển mới được tạo
- guiExisting: Điều khiển đã tồn tại
Bạn có thể kiểm tra trạng thái:
rc = GuiButton(…);
if( rc == guiNew ) _TRACE(“Control vừa tạo”);
🧑💻 2. Thiết Lập Giá Trị Ban Đầu Cho Điều Khiển
idEdit = 1;
rc = GuiEdit(idEdit, 10, 20, 100, 20, notifyEditChange);
if( rc == guiNew ) GuiSetText(“Văn bản ban đầu”, idEdit);
📬 3. Xử Lý Sự Kiện UI
Khi tương tác, sự kiện sẽ đưa vào hàng đợi. Dùng GuiGetEvent() để truy xuất:
for( i = 0; id = GuiGetEvent(i); i++ ) {
code = GuiGetEvent(i, 1);
text = GuiGetEvent(i, 2);
}
Bạn có thể tạo hàm xử lý riêng:
function HandleEvents() {
for( n = 0; id = GuiGetEvent(n, 0); n++ ) {
code = GuiGetEvent(n, 1);
switch( id ) {
case idMyFirstButton:
// làm gì đó
break;
}
}
}
👁 4. Hiển Thị & Vô Hiệu Hóa Điều Khiển
GuiSetVisible(id, True/False);
GuiEnable(id, True/False);
🎨 5. Tùy Biến Giao Diện
GuiSetFont(“Tahoma”, 13);
GuiSetColors(id, id, 2, colorYellow, colorBlue, colorYellow);
🧾 6. Đọc/Ghi Nội Dung Điều Khiển
- Lấy/đặt nội dung: GuiGetText() / GuiSetText()
- Với slider: GuiGetValue() / GuiSetValue() và GuiSetRange()
💾 7. Duy Trì Trạng Thái Điều Khiển
Dùng StaticVarSetText() và StaticVarGetText() để lưu trạng thái:
StaticVarSetText(“mySavedText”, GuiGetText(idEdit), True);
GuiSetText(StaticVarGetText(“mySavedText”), idEdit);
🧪 8. Ví Dụ Đầy Đủ
idSlider = 1;
idEnable = 2; idDisable = 3; idShow = 4; idHide = 5;
function CreateGUI() {
if ( GuiSlider(idSlider, 10, 30, 200, 30, notifyEditChange) == guiNew ) {
GuiSetValue(idSlider, 5);
GuiSetRange(idSlider, 1, 100, 0.1, 100);
}
GuiButton(“enable”, idEnable, 10, 60, 100, 30, notifyClicked);
GuiButton(“vô hiệu hóa”, idDisable, 110, 60, 100, 30, notifyClicked);
GuiButton(“hiển thị”, idShow, 10, 90, 100, 30, notifyClicked);
GuiButton(“ẩn”, idHide, 110, 90, 100, 30, notifyClicked);
}
function HandleEvents() {
for( n = 0; id = GuiGetEvent(n, 0); n++ ) {
switch( id ) {
case idEnable: GuiEnable(idSlider, True); break;
case idDisable: GuiEnable(idSlider, False); break;
case idShow: GuiSetVisible(idSlider, True); break;
case idHide: GuiSetVisible(idSlider, False); break;
}
}
}
CreateGUI();
HandleEvents();
Title = “Value = ” + GuiGetValue(idSlider);
⚠️ Lưu Ý Hiệu Năng
Mỗi điều khiển GUI là một “window” thật trong Windows. Hãy giới hạn <200 điều khiển để tránh lỗi và sập ứng dụng. Không dùng một nút cho mỗi cây nến!
📎 Tham khảo kỹ thuật từ Microsoft về giới hạn GUI
✅ Kết Luận
GUI trên biểu đồ mở ra một kỷ nguyên mới về tùy chỉnh & tương tác trực tiếp với chiến lược giao dịch. Khi được dùng đúng cách, chúng giúp bạn dễ dàng kiểm tra, kiểm soát và tối ưu hóa quyết định đầu tư ngay trên biểu đồ mà không cần rời mắt khỏi dữ liệu!