Hoàn thành bài "Lesson 5: Quản trị rủi ro — Kích thước vị thế, Dừng lỗ và Tỷ lệ rủi ro/phần thưởng" trước để mở khoá bài này.Đến bài trước

Giới thiệu

Một kế hoạch giao dịch mà không có backtesting chỉ là một đoán mò. Trong bài học này bạn sẽ kết hợp các công cụ phân tích kỹ thuật (mô hình nến, support/ resistance, RSI, MACD, đường trung bình động) và các quy tắc quản lý rủi ro (kích thước vị thế, placement dừng lỗ, tỷ lệ rủi ro/phần thưởng) được đề cập ở các bài học trước thành một kế hoạch cá nhân, bằng văn bản. Sau đó bạn sẽ chạy kế hoạch đó với dữ liệu lịch sử để kiểm tra liệu chiến lược có thực sự hiệu quả không — trước khi bỏ vốn thật.

biểu đồ luồng cho 5 giai đoạn xây dựng và xác thực kế hoạch giao dịch: xác định quy tắc, mã hóa quy tắc, chạy backtest, phân tích kết quả, tinh chỉnh quy tắc

Bước 1 — Viết Quy tắc Giao dịch của Bạn bằng Ngôn ngữ Đơn giản

Trước khi viết mã, hãy viết quy tắc entry, exit và rủi ro của bạn như một danh sách có đánh số. Ví dụ quy tắc cho giao dịch swing BTC/USDT:

Quy tắc 1 — Entry: Mở vị thế mua khi RSI(14) dưới 35, giá đóng cửa trên EMA 50 kỳ, và histogram MACD trở nên tích cực.

Quy tắc 2 — Dừng lỗ: Đặt stop cách thấp của nến entry 2%.

Quy tắc 3 — Take-profit: Đóng một nửa ở rủi ro/phần thưởng 1:2, di chuyển stop về mức hòa vốn, đóng phần còn lại ở 1:4.

Quy tắc 4 — Kích thước vị thế: Rủi ro không quá 1% tổng vốn tài khoản cho mỗi giao dịch.

Giữ cho danh sách ngắn gọn. Nếu một quy tắc không thể viết trong một câu, nó quá mơ hồ để mã hóa.

Bước 2 — Chuyển Quy tắc thành Mã có thể kiểm tra

Mã hóa mỗi quy tắc thành một hàm trả về một giá trị boolean (tín hiệu entry) hoặc một giá trị số (mức dừng, kích thước vị thế). Sử dụng Python và thư viện backtesting:

python
from backtesting import Strategy, Backtest
from backtesting.lib import crossover
import pandas as pd
def ema(series, period):
return series.ewm(span=period, adjust=False).mean()
def rsi(series, period=14):
delta = series.diff()
gain = delta.where(delta > 0, 0).rolling(period).mean()
loss = -delta.where(delta < 0, 0).rolling(period).mean()
rs = gain / loss
return 100 - (100 / (1 + rs))
class SwingPlan(Strategy):
rsi_period = 14
risk_pct = 0.01
rr_ratio = 2.0
def init(self):
close = pd.Series(self.data.Close)
self.ema50 = self.I(ema, close, 50)
self.rsi14 = self.I(rsi, close, self.rsi_period)
def next(self):
price = self.data.Close[-1]
if not self.position and self.rsi14[-1] < 35 and price > self.ema50[-1]:
sl = self.data.Low[-1] * 0.98
tp = price + (price - sl) * self.rr_ratio
size = self.equity * self.risk_pct / (price - sl)
self.buy(size=size, sl=sl, tp=tp)

Hàm `next()` được gọi trên mỗi cây nến và đại diện cho một chu kỳ quyết định đầy đủ. Nếu bạn có thể ánh xạ mọi quy tắc từ Bước 1 vào một dòng trong hàm này, kế hoạch của bạn có thể được kiểm thử.

Bước 3 — Chạy Backtest và Đọc Kết quả

Tải dữ liệu OHLCV lịch sử và chạy:

python
bt = Backtest(data, SwingPlan, cash=10000, commission=0.001)
stats = bt.run()
print(stats)
bt.plot()

Kết quả bao gồm các chỉ số chính: tổng lợi nhuận, tối đa rút vốn, hệ số Sharpe, tỷ lệ thắng và số lượng giao dịch. Đừng theo đuổi một con số lợi nhuận cao đơn thuần. Lợi nhuận 40% với tối đa rút vốn 12% thực tế hơn so với lợi nhuận 200% với rút vốn 60%.

Bước 4 — Những lỗi phổ biến cần tránh

Chạm trán Look-ahead: dùng giá đóng cửa ngày mai để quyết định giao dịch ngày hôm nay. Luôn dịch chuyển các chỉ báo bởi một thanh nến trước khi so sánh với giá hiện tại.

Overfitting: điều chỉnh tham số cho đến khi backtest có lợi nhuận. Nếu chiến lược của bạn chỉ hoạt động với độ dài EMA 47 trên dữ liệu BTC 4h từ năm 2022, nó là một đường cong-fitting.

Bỏ qua phí và slippage: các sàn tiền điện tử tính phí từ 0,05–0,10% mỗi bên. Một chiến lược có lợi nhuận trung bình 0,3% sẽ không tồn tại được.

Quá ít giao dịch: một backtest có 8 giao dịch trong một năm là về mặt thống kê vô nghĩa. Hãy hướng tới ít nhất 50–100 giao dịch trước khi tin tưởng kết quả.

Tóm tắt

Một kế hoạch giao dịch hoàn chỉnh là một tập quy tắc được đánh số, không phải là cảm giác. Mã hóa các quy tắc đó thành code buộc sự rõ ràng. Việc backtest cho thấy kế hoạch có sinh lợi, có độ bền và có đáng giao dịch thật hay không — hoặc liệu nó có cần quay lại Bước 1 hay không.

Bài học tiếp theo sẽ đề cập đến paper trading: thực thi kế hoạch đã được xác nhận trên tài khoản testnet ở thời gian thực trước khi cam kết vốn.

Luyện tập sau buổi học

Bài kiểm tra cuối bài

Ôn lại kiến thức, thử sức và nhận góp ý cho bài làm.

0/1
Đã trả lời · 0/1
Lesson 6: Xây dựng một Kế hoạch Giao dịch hoàn chỉnh và Backtest nó