Sử Dụng Các Điều Khiển GUI Trên Biểu Đồ Trong AmiBroker

ha.anh
4 Min Read

🧩 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()GuiSetRange()

💾 7. Duy Trì Trạng Thái Điều Khiển

Dùng StaticVarSetText()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!

TAGGED:
Share This Article
Leave a Comment