Chiến lược theo xu hướng dựa trên SMA và ATR


Ngày tạo: 2024-01-18 16:04:51 sửa đổi lần cuối: 2024-01-18 16:04:51
sao chép: 0 Số nhấp chuột: 637
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng dựa trên SMA và ATR

Tên chiến lược

Chính sách này được gọi làChiến lược theo xu hướng dựa trên SMA và ATR

Chiến lược tổng quan

Chiến lược này sử dụng chỉ số SMA để xác định hướng xu hướng của giá và sử dụng chỉ số ATR để thiết lập vị trí dừng lỗ để theo dõi xu hướng. Khi giá phá vỡ xu hướng tăng, hãy tháo lỗ và khi giá phá vỡ xu hướng giảm, hãy thực hiện giao dịch theo xu hướng.

Ba, nguyên tắc chiến lược

Tín hiệu nhập cảnh

(1) Làm nhiều hơn khi giá đóng cửa tăng và cao hơn SMA (2) Cắt lỗ khi giá đóng cửa giảm và dưới SMA

2. Cài đặt Stop Loss

Sử dụng giá trị của chỉ số ATR nhân với số nhân dừng lỗ được thiết lập như vị trí dừng lỗ.

3. Cập nhật Stop Loss

Kiểm tra vị trí dừng lỗ sau mỗi lần đóng cửa đường K và cập nhật mức dừng lỗ gần hơn giá hiện tại.

Tín hiệu thoát

Giá chạm vào đường dừng lỗ và chủ động dừng lỗ.

Bốn, lợi thế chiến lược

1. Có khả năng theo dõi xu hướng

Thiết lập dừng động sử dụng chỉ số ATR cho phép theo dõi tự động xu hướng.

2. Khả năng kiểm soát rút lui tốt

Các quy tắc dừng lỗ nghiêm ngặt giúp kiểm soát mức rút tối đa của một giao dịch.

3. Cài đặt tham số đơn giản

Chỉ có 3 tham số để điều chỉnh và tối ưu hóa.

5: Rủi ro chiến lược

1. Có thể có một lỗ hổng quá nhẹ

Nếu thiết lập hệ số dừng quá lớn, có thể dẫn đến vị trí dừng quá thoải mái, làm tăng rút lui.

2. Rủi ro của việc đột nhập giả

Khi giá bị phá vỡ giả, nó có thể dẫn đến sai hướng xu hướng, nên được kết hợp với các tín hiệu lọc khác.

3. Các tham số tối ưu hóa rủi ro

Tối ưu hóa tham số phụ thuộc quá mức có thể dẫn đến tối ưu hóa đường cong. Cần thận trọng đánh giá tính ổn định của tham số.

Sáng kiến tối ưu hóa

1. Tối ưu hóa thuật toán dừng lỗ

Các loại thuật toán dừng khác có thể được thử nghiệm, chẳng hạn như dừng di chuyển, dừng tỷ lệ, v.v.

2. Tăng tín hiệu lọc

Các chỉ số khác có thể được thêm vào để lọc các đột phá giả. Ví dụ như tăng điều kiện khối lượng giao dịch.

3. Đánh giá tính ổn định của tham số

Các tham số được đánh giá thích ứng với các giống và chu kỳ khác nhau thông qua lịch sử.

VII. Kết luận

Chiến lược này có tư duy tổng thể rõ ràng, thông qua SMA để đánh giá hướng xu hướng và sử dụng ATR để theo dõi xu hướng, khả năng kiểm soát lùi tốt, phù hợp với giao dịch xu hướng đường dài và trung bình. Tuy nhiên, vẫn cần điều chỉnh các tham số thích hợp trong thực tế và phòng ngừa rủi ro quá tối ưu hóa.

Mã nguồn chiến lược
/*backtest
start: 2024-01-16 00:00:00
end: 2024-01-16 17:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © omererkan

//@version=5
strategy(title="SMA with ATR", overlay=true)

smaLen = input.int(100, title="SMA Length")

atrLen     = input.int(10, title="ATR Length")
stopOffset = input.float(4, title="Stop Offset Multiple", step=0.25)


smaValue  = ta.sma(close, smaLen)
stopValue = ta.atr(atrLen) * stopOffset


lowerCloses = close < close[1] and 
     close[1] < close[2] and
     close[2] < close[3]

enterLong = close > smaValue and 
     lowerCloses


longStop = 0.0
longStop := if enterLong and strategy.position_size < 1
    close - stopValue
else
    math.max(close - stopValue, longStop[1])


higherCloses = close > close[1] and 
     close[1] > close[2] and
     close[2] > close[3]

enterShort = close < smaValue and 
     higherCloses


shortStop = 0.0
shortStop := if enterShort and strategy.position_size > -1
    close + stopValue
else
    math.min(close + stopValue, shortStop[1])


plot(smaValue, color=#4169e1, linewidth=2, title="SMA")

plot(strategy.position_size > 0 ? longStop : na, color=color.lime,
     style=plot.style_linebr, title="Long stop", linewidth=2)

plot(strategy.position_size < 0 ? shortStop : na, color=color.red,
     style=plot.style_linebr, title="Short stop", linewidth=2)


if enterLong
    strategy.entry("EL", strategy.long)

if enterShort
    strategy.entry("ES", strategy.short)


if strategy.position_size > 0
    strategy.exit("SL Long", from_entry="EL", stop=longStop)

if strategy.position_size < 0
    strategy.exit("SL Short", from_entry="ES", stop=shortStop)


if enterLong
    strategy.cancel("Exit Short")

if enterShort
    strategy.cancel("Exit Long")