Chiến lược dựa trên chỉ báo Supertrend và Đường trung bình động đơn giản


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

Chiến lược dựa trên chỉ báo Supertrend và Đường trung bình động đơn giản

Tổng quan

Chiến lược đường hai đồng nhất siêu xu hướng là một chiến lược giao dịch định lượng dựa trên chỉ số siêu xu hướng và đường trung bình di chuyển đơn giản. Chiến lược này sử dụng chỉ số siêu xu hướng để xác định hướng xu hướng của thị trường, sau đó lọc kết hợp với đường trung bình di chuyển đơn giản 200 ngày, mở vị trí và tháo lỗ nhiều hơn theo hướng xu hướng lớn.

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

Chiến lược này sử dụng hai chỉ số:

  1. Chỉ số siêu xu hướng: Nó tính toán đường lên và đường xuống dựa trên ATR và một nhân của tần số sóng thực. Khi giá đóng cửa cao hơn đường lên là đà, thấp hơn đường xuống là đà.

  2. Đường trung bình di chuyển đơn giản 200 ngày: Nó là trung bình toán học của giá đóng cửa trong 200 ngày gần đây nhất. Giá đóng cửa cao hơn đường này đại diện cho xu hướng lớn đi lên và thấp hơn đường này đại diện cho xu hướng lớn xuống.

Lập luận chiến lược:

  1. Khi chỉ số siêu xu hướng là bullish ((giá trị chỉ số siêu xu hướng lớn hơn 0) và giá đóng cửa cao hơn đường trung bình 200 ngày, hãy tham gia nhiều đầu.

  2. Khi chỉ số siêu xu hướng giảm xuống (< 0) và giá đóng cửa dưới đường trung bình 200 ngày, đầu tư ngắn hạn được thực hiện.

  3. Khi chỉ số siêu xu hướng được đảo ngược với tín hiệu trước đó, nó sẽ bị cân bằng.

  4. Stop Loss được thiết lập ở mức 25%.

Phân tích lợi thế

Chiến lược này kết hợp các chỉ số siêu xu hướng để xác định xu hướng ngắn hạn và đường trung bình 200 ngày để xác định xu hướng dài hạn, có thể lọc hiệu quả các đợt phá vỡ giả mạo, giảm tần suất giao dịch đồng thời tăng tỷ lệ thắng. Trong trường hợp lớn, xu hướng đủ rõ ràng, có không gian dừng lỗ lớn, có không gian lợi nhuận lớn.

Phân tích rủi ro

Rủi ro chính của chiến lược này là mức dừng lỗ lớn, trong trường hợp đòn bẩy cao sẽ làm tăng nguy cơ thanh lý cưỡng bức. Ngoài ra, khi thị trường kết thúc, chỉ số vượt quá xu hướng sẽ tạo ra tín hiệu dư thừa, làm tăng tần suất giao dịch và chi phí.

Bạn có thể giảm rủi ro bằng cách điều chỉnh chu kỳ ATR, tham số nhân và mức dừng lỗ.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Điều chỉnh các tham số ATR chu kỳ và nhân, tối ưu hóa các tham số của chỉ số vượt xu hướng;

  2. Cố gắng thay thế bằng các chỉ số khác như EMA, VIDYA.

  3. Thêm các chỉ số phụ trợ khác, chẳng hạn như kênh BOLL hoặc chỉ số KD để lọc thêm tín hiệu;

  4. Tối ưu hóa chiến lược dừng lỗ, chẳng hạn như chuyển sang điểm cân bằng lỗ hổng hoặc dừng lỗ theo cấp độ lớn.

Tóm tắt

Chiến lược này là rất thực tế cho tổng thể, cả hai xét đến phán quyết xu hướng ngắn hạn và xét đến phán quyết xu hướng dài hạn, thiết lập dừng lỗ cũng hợp lý hơn. Bằng cách điều chỉnh và tối ưu hóa tham số vẫn có thể đạt được hiệu quả tốt hơn, đáng để kiểm tra và sử dụng thực tế.

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

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © wielkieef

//@version=5

strategy("Smart SuperTrend Strategy ", shorttitle="ST Strategy", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.01)


// Parametry wskaźnika SuperTrend
atrLength = input(10, title="Lenght ATR")
factor = input(3.0, title="Mult.")

// Parametry dla SMA
lengthSMA = input(200, title="Lenght SMA")

// Parametry dla Stop Loss
sl = input.float(25.0, '% Stop Loss', step=0.1)

// Obliczanie ATR
atr = ta.atr(atrLength)

// Obliczanie podstawowej wartości SuperTrend
up = hl2 - (factor * atr)
dn = hl2 + (factor * atr)

// Obliczanie 200-SMA
sma200 = ta.sma(close, lengthSMA)

// Inicjalizacja zmiennych
var float upLevel = na
var float dnLevel = na
var int trend = na
var int trendWithFilter = na

// Logika SuperTrend
upLevel := close[1] > upLevel[1] ? math.max(up, upLevel[1]) : up
dnLevel := close[1] < dnLevel[1] ? math.min(dn, dnLevel[1]) : dn

trend := close > dnLevel[1] ? 1 : close < upLevel[1] ? -1 : nz(trend[1], 1)

// Filtr SMA i aktualizacja trendWithFilter
trendWithFilter := close > sma200 ? math.max(trend, 0) : math.min(trend, 0)

// Logika wejścia
longCondition = trend == 1  
shortCondition = trend == -1  

// Wejście w pozycje
if (longCondition) and  close > sma200
    strategy.entry("Long", strategy.long)
if (shortCondition) and close < sma200
    strategy.entry("Short", strategy.short)

// Warunki zamknięcia pozycji
Long_close = trend == -1 and close > sma200
Short_close = trend == 1  and close < sma200

// Zamknięcie pozycji
if (Long_close)
    strategy.close("Long")
if (Short_close)
    strategy.close("Short")

// Kolory superTrendu z filtrem sma200
trendColor = trendWithFilter == 1 ? color.green : trendWithFilter == -1 ? color.red : color.blue

//ploty
plot(trendWithFilter == 1 ? upLevel : trendWithFilter == -1 ? dnLevel : na, color=trendColor, title="SuperTrend")

// Stop Loss ( this code is from author RafaelZioni, modified by wielkieef )
per(procent) =>
    strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
// --------------------------------------------------------------------------------------------------------------------

strategy.exit('SL',loss=per(sl))



//by wielkieef