HODL Lab · Hướng dẫnMở Lab

Ví dụVùng P/E · P/B

Vùng P/E · P/B

Mua khi P/E xuống thấp, chốt lời khi P/E lên cao. Chạy ở loại Chiến lược để có backtest.

python
ticker("VNM")
period("10Y")

buy(pe() < 12.5)
sell(pe() > 15)
Dòng Ý nghĩa
pe() P/E của mã ở từng phiên, giống chỉ báo P/E trên biểu đồ
buy(pe() < 12.5) Phiên đầu tiên P/E xuống dưới 12,5 → mua ở giá mở phiên sau. Đang cầm cổ phiếu thì không mua thêm
sell(pe() > 15) Chốt lời khi P/E vượt 15

Mua dần theo đợt

Cách trên dồn hết vốn vào một lần. Muốn gom dần khi P/E còn thấp thì thêm every, volume và percent:

python
ticker("VNM")
period("10Y")
capital(1000000000)

buy(pe() < 12.5, every="W", volume=200, percent=10)
sell(pe() > 15)
Dòng Ý nghĩa
capital(1000000000) Vốn 1 tỷ, viết liền số đồng. Không khai thì vốn là 100 triệu
every="W" Còn P/E dưới 12,5 thì mỗi tuần mua một đợt ("D" mỗi phiên, "M" mỗi tháng)
volume=200 Mỗi đợt mua 200 cổ phiếu (lô lẻ cũng được, ví dụ volume=50)
percent=10 Giới hạn: tổng tiền vào VNM tối đa 10% vốn = 100 triệu. Chạm giới hạn thì ngừng mua dù P/E vẫn thấp
sell(pe() > 15) Bán hết một lần. Lãi / lỗ sau phí, thuế gộp vào vốn, giới hạn 10% lần sau tính trên vốn mới

Dùng P/B

Thay pe() bằng pb(), hợp với ngân hàng, chứng khoán:

python
ticker("TCB")
period("10Y")
capital(1000000000)

buy(pb() < 1.05, every="W", volume=500, percent=10)
sell(pb() > 1.55)

Đổi số không sửa code

Bọc con số bằng input(...) để có ô nhập ở form Tham số. Đây là mẫu P/E Rounds trong thư viện Mẫu HODL:

python
ticker("VNM")
period("10Y")
capital(input(100000000, "Capital"))

buy(pe() < input(12.5, "Buy P/E below"), every="W", volume=input(200, "Shares per round"), percent=input(100, "Max % of capital"))
sell(pe() > input(15.0, "Take profit P/E above"))