Mẫu chiến lược
- 🇻🇳 Tiếng Việt
- 🇬🇧 English
- 🇰🇷 한국어
- 🇨🇳 中文
Chiến lược hoàn chỉnh viết bằng signals, chạy được trong bảng Kiểm thử chiến lược và mở được sang Quant AI Studio. Thêm vào biểu đồ, xem mũi tên ▲ / ▼, rồi kiểm thử trên nhiều mã, nhiều kỳ (Bài 10) trước khi tin kết quả.
Các chiến lược dưới là ví dụ minh hoạ cách viết, không phải khuyến nghị đầu tư. Kết quả quá khứ không bảo đảm kết quả tương lai.
EMA 20/50 + lọc MA200
Mẫu EMA 20/50 + lọc MA200 của thư viện — theo xu hướng: mua khi EMA 20 cắt lên EMA 50 và giá trên MA200, bán khi cắt xuống.
strategy({
name: "EMA 20/50 + lọc MA200",
description: "Mua khi EMA 20 cắt lên EMA 50 và giá trên MA200; bán khi EMA 20 cắt xuống. Dừng lỗ 7 %, dừng lỗ kéo theo 10 %.",
params: {
fast: param.int(20, { min: 5, max: 100, label: "EMA nhanh" }),
slow: param.int(50, { min: 10, max: 300, label: "EMA chậm" }),
},
signals: (d, p) => {
const f = ta.ema(d.close, p.fast), s = ta.ema(d.close, p.slow);
return { entry: f.crossAbove(s).and(d.close.gt(ta.sma(d.close, 200))), exit: f.crossBelow(s) };
},
plot: (d, p) => ({
[`EMA ${p.fast}`]: line(ta.ema(d.close, p.fast), { color: "accent" }),
[`EMA ${p.slow}`]: line(ta.ema(d.close, p.slow), { color: "ref" }),
}),
risk: { stopLoss: 0.07, trailingStop: 0.1 },
});
RSI hồi về trung bình
Mẫu RSI hồi về trung bình của thư viện — mua nhịp điều chỉnh ngắn trong xu hướng tăng dài.
strategy({
name: "RSI hồi về trung bình",
description: "Mua khi RSI 2 dưới 10 trong xu hướng tăng (giá trên MA200); bán khi RSI 2 trên 70.",
params: {
len: param.int(2, { min: 2, max: 14, label: "Chu kỳ RSI" }),
buy: param.int(10, { min: 1, max: 40, label: "Mua dưới" }),
sell: param.int(70, { min: 50, max: 99, label: "Bán trên" }),
},
signals: (d, p) => {
const r = ta.rsi(d.close, p.len);
return { entry: r.lt(p.buy).and(d.close.gt(ta.sma(d.close, 200))), exit: r.gt(p.sell) };
},
risk: { stopLoss: 0.08 },
});
Turtle: vượt đỉnh 55, thoát đáy 20
Quy tắc kinh điển của "nhà giao dịch rùa": mua khi giá vượt đỉnh 55 nến, thoát khi thủng đáy 20 nến; dừng lỗ theo ATR được thay bằng dừng lỗ kéo theo %.
strategy({
name: "Turtle Donchian 55 / 20",
params: {
vao: param.int(55, { min: 20, max: 120, label: "Đỉnh n nến (vào)" }),
ra: param.int(20, { min: 5, max: 60, label: "Đáy n nến (ra)" }),
},
signals: (d, p) => ({
entry: d.close.gt(d.high.highest(p.vao).shift(1)),
exit: d.close.lt(d.low.lowest(p.ra).shift(1)),
}),
plot: (d, p) => ({
"Đỉnh vào": line(d.high.highest(p.vao).shift(1), { color: "up", step: true }),
"Đáy ra": line(d.low.lowest(p.ra).shift(1), { color: "down", step: true }),
}),
risk: { trailingStop: 0.15 },
});
Bollinger hồi về giữa dải
Mua khi giá đóng cửa cắt lên dải dưới (bật lại sau khi thủng), bán khi chạm đường giữa; chỉ mua khi chưa có xu hướng giảm mạnh (ADX thấp).
strategy({
name: "Bollinger hồi về giữa dải",
params: {
n: param.int(20, { min: 10, max: 50, label: "Chu kỳ" }),
k: param.num(2, { min: 1.5, max: 3, step: 0.25, label: "Độ lệch chuẩn" }),
},
filter: (d) => ta.adx(d, 14).adx.lt(30),
signals: (d, p) => {
const bb = ta.bb(d.close, p.n, p.k);
return { entry: d.close.crossAbove(bb.lower), exit: d.close.crossAbove(bb.mid).or(d.close.lt(bb.lower.mul(0.95))) };
},
plot: (d, p) => {
const bb = ta.bb(d.close, p.n, p.k);
return { "Dải": band(bb.upper, bb.lower, { color: "accent", opacity: 0.08 }), "Giữa": line(bb.mid, { color: "accent", dash: "dash" }) };
},
risk: { stopLoss: 0.06, maxHoldBars: 20 },
});
MACD lọc theo xu hướng tuần
Tín hiệu