• 25ºC, Clear
  • Wednesday, 21st January, 2026
  • Trang Chủ
  • Bộ Lọc
  • Nhận Định Thị Trường
  • Phân Tích Doanh Nghiệp
  • Amibroker
    • Code AFL
    • Tự học Amibroker
  • Kiến Thức Đầu Tư
    • Chỉ Báo Kỹ Thuật
    • Phân Tích Cơ Bản
    • Phương Pháp Sóng Elliot
    • Phương Pháp Wyckoff/VSA
    • Vĩ Mô Liên Thị Trường
  • Liên hệ
  • Giới Thiệu
Mới Nhất
  • Phân tích VN-Index ngày 11/08
  • Phân tích HAH
  • Bài 46: Trở thành nhà giao dịch chuyên nghiệp
  • Bài 45: GFX Functions – Bảng trạng thái giao dịch Amibroker
  1. Trang chủ
  2. Amibroker
  3. Tự học Amibroker
  4. Bài 3: Built In Functions – Hhv llv back test
Bài 3: Built In Functions – Hhv llv back test

Xem nhanh:

  • Khám Phá Các Hàm HHV() và LLV() Trong AFL và Ứng Dụng Xây Dựng Chiến Lược Giao Dịch Đơn Giản
  • Điều Chỉnh Không Gian Biểu Đồ (Graphics Space)
  • 1. Hàm HHV(): Tìm Giá Trị Cao Nhất
  • 2. Hàm LLV(): Tìm Giá Trị Thấp Nhất
  • Ứng Dụng: HHV() và LLV() Như Các Mức Hỗ Trợ/Kháng Cự Động
  • Xây Dựng Chiến Lược Giao Dịch Đơn Giản với HHV(), LLV() và Cross()
  • Kiểm Định Ngược (Backtesting) Chiến Lược

Khám Phá Các Hàm HHV() và LLV() Trong AFL và Ứng Dụng Xây Dựng Chiến Lược Giao Dịch Đơn Giản

Chào mừng các bạn đến với video tiếp theo! Hôm nay chúng ta sẽ tìm hiểu về hai hàm rất quan trọng trong ngôn ngữ lập trình AFL (Amibroker Formula Language) là HHV() (Highest High Value) và LLV() (Lowest Low Value). Chúng ta cũng sẽ ứng dụng chúng để xây dựng một chiến lược giao dịch đơn giản.


Điều Chỉnh Không Gian Biểu Đồ (Graphics Space)

Trước khi đi vào các hàm chính, hãy nói một chút về “Graphics Space”. Đây là một tính năng trong Amibroker cho phép bạn điều chỉnh khoảng trống theo chiều dọc của biểu đồ. Khi bạn tăng giá trị Graphics Space (ví dụ từ 0 lên 15 hoặc 20), các cây nến hoặc thanh bar trên biểu đồ sẽ trở nên “gầy” hơn, giúp bạn có cái nhìn tổng quan tốt hơn hoặc tạo thêm không gian cho các chỉ báo khác.


1. Hàm HHV(): Tìm Giá Trị Cao Nhất

Hàm HHV() trả về giá trị cao nhất (Highest High Value) của một mảng dữ liệu trong một khoảng thời gian (số phiên) nhất định.

Cú pháp cơ bản của hàm HHV():

HHV(ARRAY, Periods);

Giải thích:

  • ARRAY: Mảng dữ liệu mà bạn muốn tìm giá trị cao nhất. Thông thường là High (giá cao nhất của mỗi phiên).
  • Periods: Số lượng phiên (cây nến/thanh bar) gần nhất mà bạn muốn tìm giá trị cao nhất.

Ví dụ:

Để tìm giá trị cao nhất trong 5 phiên gần nhất từ mảng giá High:

HighestHigh = HHV(High, 5); // Lưu trữ giá trị cao nhất vào biến HighestHigh

2. Hàm LLV(): Tìm Giá Trị Thấp Nhất

Tương tự như HHV(), hàm LLV() trả về giá trị thấp nhất (Lowest Low Value) của một mảng dữ liệu trong một khoảng thời gian (số phiên) nhất định.

Cú pháp cơ bản của hàm LLV():

LLV(ARRAY, Periods);

Giải thích:

  • ARRAY: Mảng dữ liệu mà bạn muốn tìm giá trị thấp nhất. Thông thường là Low (giá thấp nhất của mỗi phiên).
  • Periods: Số lượng phiên gần nhất mà bạn muốn tìm giá trị thấp nhất.

Ví dụ:

Để tìm giá trị thấp nhất trong 5 phiên gần nhất từ mảng giá Low:

LowestLow = LLV(Low, 5); // Lưu trữ giá trị thấp nhất vào biến LowestLow

Ứng Dụng: HHV() và LLV() Như Các Mức Hỗ Trợ/Kháng Cự Động

Các đường HHV() và LLV() có thể được sử dụng như các mức kháng cự và hỗ trợ động. Ví dụ, HHV(High, 200) có thể đại diện cho mức kháng cự của 200 phiên giao dịch gần nhất (tương đương với khoảng 1 năm giao dịch nếu có 200 ngày giao dịch trong năm).

Ví dụ vẽ HHV() và LLV() lên biểu đồ:

HighestHighValue = HHV(High, 5);
LowestLowValue = LLV(Low, 5);

Plot(HighestHighValue, "HHV 5", colorBlue, styleLine);
Plot(LowestLowValue, "LLV 5", colorRed, styleLine);
Ví dụ

Ví dụ

Kết quả

Kết quả


Khi áp dụng đoạn mã này, bạn sẽ thấy hai đường trên biểu đồ: đường màu xanh (HHV) sẽ hiển thị mức giá cao nhất trong 5 phiên gần nhất tính đến mỗi thời điểm, và đường màu đỏ (LLV) sẽ hiển thị mức giá thấp nhất trong 5 phiên gần nhất.


Xây Dựng Chiến Lược Giao Dịch Đơn Giản với HHV(), LLV() và Cross()

Giờ đây, chúng ta sẽ kết hợp các hàm đã học để xây dựng một chiến lược giao dịch đơn giản:

Logic chiến lược:

  • Mua (Buy): Khi giá đóng cửa (Close) vượt lên trên giá cao nhất của 50 phiên trước đó (tín hiệu breakout kháng cự).
  • Bán/Bán Khống (Sell/Short): Khi giá đóng cửa (Close) giảm xuống dưới giá thấp nhất của 50 phiên trước đó (tín hiệu breakdown hỗ trợ).

Để thực hiện điều này, chúng ta sẽ sử dụng thêm hàm Cross(), hàm này trả về True (Đúng) khi một đường cắt lên hoặc cắt xuống một đường khác.

Cú pháp hàm Cross():

Cross(ARRAY1, ARRAY2);

Hàm Cross() sẽ trả về True khi ARRAY1 cắt lên hoặc cắt xuống ARRAY2 tại phiên hiện tại.

Vấn đề thường gặp với HHV() và LLV() trong chiến lược Breakout/Breakdown:

Một vấn đề thường gặp khi sử dụng HHV(High, Periods) trực tiếp là giá trị HHV của thanh nến hiện tại sẽ bao gồm cả giá cao nhất của chính thanh nến đó. Điều này có thể dẫn đến việc tín hiệu mua/bán bị kích hoạt không chính xác hoặc không tạo ra giao dịch nào, vì giá hiện tại vẫn đang trong quá trình hình thành mức cao nhất mới.

Giải pháp: Sử dụng hàm Ref() để dịch chuyển HHV/LLV về quá khứ:

Để khắc phục, chúng ta sẽ sử dụng hàm Ref() để dịch chuyển đường HHV() hoặc LLV() về 1 phiên trước đó. Điều này đảm bảo rằng chúng ta đang so sánh giá đóng cửa hiện tại với mức kháng cự/hỗ trợ được hình thành bởi các phiên trước đó, không bao gồm phiên hiện tại.

Mã nguồn chiến lược:

// Bước 1: Tính toán HHV và LLV của 50 phiên trước đó
// Sử dụng Ref(..., -1) để đảm bảo không bao gồm thanh nến hiện tại
PreviousHHV = Ref(HHV(High, 50), -1);
PreviousLLV = Ref(LLV(Low, 50), -1);

// Bước 2: Định nghĩa tín hiệu MUA
Buy = Cross(Close, PreviousHHV); // Close cắt lên HHV của 50 phiên trước đó

// Bước 3: Định nghĩa tín hiệu BÁN
Sell = Cross(PreviousLLV, Close); // Close cắt xuống LLV của 50 phiên trước đó (PreviousLLV cắt lên Close)

// Bước 4: (Tùy chọn) Vẽ các đường HHV và LLV đã dịch chuyển để dễ hình dung
Plot(PreviousHHV, "HHV 50 (Ref -1)", colorBlue, styleLine | styleThick);
Plot(PreviousLLV, "LLV 50 (Ref -1)", colorRed, styleLine | styleThick);

// Các lệnh Buy/Sell sẽ tự động được sử dụng khi bạn chạy Backtester

Cách hoạt động của Cross() và Ref():

  • Buy = Cross(Close, PreviousHHV);: Tín hiệu Buy sẽ là True chỉ khi Close của nến hiện tại vượt lên trên PreviousHHV (mức cao nhất của 50 nến trước đó, không tính nến hiện tại).
  • Sell = Cross(PreviousLLV, Close);: Tín hiệu Sell sẽ là True chỉ khi Close của nến hiện tại giảm xuống dưới PreviousLLV (mức thấp nhất của 50 nến trước đó, không tính nến hiện tại).
Ví dụ

Ví dụ

Kết quả

Kết quả


Kiểm Định Ngược (Backtesting) Chiến Lược

Sau khi viết mã, bạn có thể kiểm định ngược chiến lược này trong cửa sổ “Analysis” của Amibroker. Chỉ cần chọn phạm vi ngày mong muốn và chạy kiểm định ngược để xem kết quả lợi nhuận, thua lỗ và các thống kê khác.

Kết quả backtest

Kết quả backtest

Lưu ý quan trọng:

  • Chiến lược này chỉ là một ví dụ đơn giản để minh họa cách sử dụng các hàm. Trong thực tế, một chiến lược giao dịch hiệu quả sẽ cần nhiều yếu tố phức tạp hơn như quản lý vốn, cắt lỗ (stop-loss), chốt lời (take-profit), và các bộ lọc bổ sung.
  • Việc thử nghiệm và khám phá thêm là rất quan trọng. Mỗi hàm trong AFL có thể được sử dụng theo nhiều cách khác nhau. Càng hiểu rõ công dụng của chúng, bạn càng có thể tạo ra những chỉ báo và chiến lược giao dịch sáng tạo và hiệu quả hơn trên nền tảng Amibroker.
  • trancotam
❮ Prev Next ❯
Chia sẻ: Facebook WhatsApp Twitter
Chia sẻ với ứng dụng khác

Tin Xem Nhiều

Bài 1: Chiến Lược Bảo Vệ Vốn Hiệu Quả Khi Đầu Tư (Phần 1)
Chỉ Báo Kỹ Thuật
Bài 1: Chiến Lược Bảo Vệ Vốn Hiệu Quả Khi Đầu Tư…
21 Tháng 5, 2025
Phân tích BFC
Phân Tích Doanh Nghiệp
Phân tích BFC
14 Tháng 7, 2025
Bài 46: Trở thành nhà giao dịch chuyên nghiệp
Tự học Amibroker
Bài 46: Trở thành nhà giao dịch chuyên nghiệp
22 Tháng 6, 2025
Phân tích HAH
Phân Tích Doanh Nghiệp
Phân tích HAH
15 Tháng 7, 2025
Bảng công cụ phân tích thị trường
Chưa phân loại
Bảng công cụ phân tích thị trường
13 Tháng 5, 2025
Donation
Phóng to ảnh

TADOSO là nền tảng chia sẻ kiến thức và kinh nghiệm đầu tư tài chính, đặc biệt trong lĩnh vực chứng khoán, nhằm kết nối và nâng cao tư duy cho nhà đầu tư cá nhân tại Việt Nam. Với triết lý "Tạo dựng – Đồng hành – Sở hữu", TADOSO hướng đến xây dựng cộng đồng học hỏi minh bạch, trung lập, không bị chi phối bởi tổ chức tài chính nào.

Newsletter

Hãy để lại mail để chúng tôi có thể phục vụ bạn tốt hơn

Donation - Buy me a coffee

Donation

Copyright © All rights reserved | This template is made with by Tran Co Tam

  • Terms of use
  • Privacy Policy
  • Contact
Zalo Messenger
×

Liên hệ