Chiến lược dừng lỗ theo sau ATR kép


Ngày tạo: 2024-01-31 17:10:32 sửa đổi lần cuối: 2024-01-31 17:10:32
sao chép: 3 Số nhấp chuột: 921
1
tập trung vào
1617
Người theo dõi

Chiến lược dừng lỗ theo sau ATR kép

Tổng quan

Chiến lược dừng chân theo hai ATR là một chiến lược giao dịch ngắn hạn dựa trên chỉ số sóng thực trung bình ((ATR)). Chiến lược này đặt hai đường dừng chân ATR nhanh và đường dừng chân ATR chậm cùng một lúc, để đánh giá nhập và xuất cảnh dựa trên sự giao thoa của hai đường dừng chân. Chiến lược này đơn giản, dễ hiểu, phản ứng nhanh và phù hợp với thị trường biến động cao.

Nguyên tắc chiến lược

Chiến lược này chủ yếu sử dụng chỉ số ATR để thiết lập hai đường dừng lỗ. Một là đường ATR nhanh, chu kỳ ATR ngắn, nhân số nhỏ, phản ứng nhanh; một là đường ATR chậm, chu kỳ ATR dài, nhân số lớn, đóng vai trò là bộ lọc.

Hình thức hoạt động cụ thể là: tính toán đường ATR nhanh và đường ATR chậm; nếu giá đường nhanh cao hơn đường chậm, hãy dừng lại với đường nhanh, nếu không, hãy dừng lại với đường chậm. Màu Kline cho thấy đường dừng hiện đang sử dụng, màu xanh lá cây và xanh dương cho thấy đường dừng với đường nhanh, màu đỏ và vàng cho thấy đường dừng với đường chậm.

Phân tích lợi thế

Chiến lược dừng lỗ theo dõi ATR kép có những lợi thế sau:

  1. Lập trình đơn giản, rõ ràng và dễ hiểu.
  2. Phản ứng nhanh với sự thay đổi của thị trường, phù hợp với thị trường biến động cao.
  3. ATR kép ngăn chặn rủi ro, ngăn chặn hiệu quả
  4. Chỉ số ATR được tham số hóa, có thể điều chỉnh mức độ dừng lỗ.
  5. Màu sắc Kline hiển thị rõ ràng cho thấy tình trạng dừng.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Có thể xảy ra giao dịch quá thường xuyên
  2. Chỉ số ATR không phù hợp với đường cong, có thể có tổn thất phóng đại.
  3. Không có khả năng lọc hiệu quả giữa hai giai đoạn thị trường ngang và xu hướng

Những rủi ro này có thể được giảm thiểu bằng cách tối ưu hóa chu kỳ ATR, điều chỉnh số lần ATR, kết hợp với các phương pháp lọc các chỉ số khác.

Hướng tối ưu hóa

Các hướng tối ưu hóa tiếp theo của chiến lược dừng lỗ theo dõi ATR kép bao gồm:

  1. Tối ưu hóa tham số ATR, điều chỉnh độ dừng lỗ.
  2. Thêm các chỉ số lọc để tránh các giao dịch không có hiệu lực. Ví dụ như tăng các chỉ số trung bình để đánh giá xu hướng.
  3. Tăng điều kiện mở lệnh, tránh giao dịch sai. Ví dụ: tăng chỉ số năng lượng giao dịch.
  4. Tăng thời gian nắm giữ và thoát khỏi các giao dịch quá thường xuyên.

Tóm tắt

Chiến lược dừng thua lỗ theo dõi ATR kép là một chiến lược dễ hiểu, đặc biệt phù hợp với các tình huống có tỷ lệ biến động cao, có thể kiểm soát rủi ro hiệu quả. Không gian tối ưu hóa cũng lớn, có thể được nâng cao bằng cách điều chỉnh tham số, thêm bộ lọc.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ceyhun

//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)

/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and        //
// different interpretation.                        //
// This is a fast-reacting system and is better     //
// suited for higher volatility markets             //
//////////////////////////////////////////////////////

SC = input(close, "Source", input.source)

// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer)  // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float)  // ATR Factor
SL1 = AF1 * atr(AP1)  // Stop Loss
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))

// Slow Trail //
AP2 = input(10, "Slow ATR perod", input.integer)  // ATR Period
AF2 = input(2, "Slow ATR multiplier", input.float)  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))

// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2

// Signals //
Bull = barssince(Green) < barssince(Red)
Bear = barssince(Red) < barssince(Green)

Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)

TS1 = plot(Trail1, "Fast Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.green : color.red, transp=90)

plotcolor = input(true, "Paint color on chart", input.bool)

bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)

if Buy
    strategy.entry("Buy", strategy.long, comment="Buy")
    
if Sell
    strategy.entry("Sell", strategy.short, comment="Sell")