Không có chiến lược giao dịch kênh SSL vô nghĩa

Tác giả:ChaoZhang, Ngày: 2023-11-27 16:42:34
Tags:

img

Tổng quan

Đây là một chiến lược theo xu hướng dựa trên chỉ số SSL Channel. Nó kết hợp dừng lỗ và quản lý lợi nhuận để khóa lợi nhuận cho tăng trưởng vốn ổn định.

Chiến lược logic

Lý thuyết chính của mã là sử dụng chữ thập vàng của các băng tần trên và dưới SSL để xác định hướng xu hướng. Cụ thể, đi dài khi băng tần trên SSL vượt qua trên băng tần dưới SSL từ dưới, và đi ngắn khi băng tần dưới SSL vượt qua dưới băng tần trên SSL từ trên.

Sau khi nhập vào một vị trí, chiến lược sẽ sử dụng ATR nhân một hệ số để thiết lập giá dừng lỗ và lấy lợi nhuận. Ví dụ, giá dừng lỗ là giá trừ ATR * 1.5 và giá lấy lợi nhuận là giá cộng với ATR * 1. Điều này có thể kiểm soát hiệu quả lỗ duy nhất và khóa lợi nhuận.

Khi kênh SSL vượt qua, đóng vị trí. Điều này có thể theo dõi các điểm uốn cong trong xu hướng để dừng lỗ kịp thời.

Phân tích lợi thế

  1. Kênh SSL rất chính xác trong việc xác định hướng xu hướng
  2. Các thiết lập dừng lỗ và lấy lợi nhuận là hợp lý để kiểm soát rủi ro hiệu quả
  3. Các lỗ dừng kịp thời theo dõi các điểm biến động trong xu hướng

Phân tích rủi ro

  1. Giao dịch xu hướng có thể dễ dàng dẫn đến giao dịch quá mức
  2. Có khả năng thất bại trong đánh giá kênh SSL
  3. Các hệ số ATR cần được tối ưu hóa

Các giải pháp tương ứng:

  1. Điều chỉnh thích hợp thời gian giữ
  2. Bao gồm các chỉ số khác để xác nhận
  3. Kiểm tra các kết hợp khác nhau của hệ số ATR

Hướng dẫn tối ưu hóa

  1. Tối ưu hóa các tham số ATR để tìm kết hợp tham số tối ưu
  2. Tăng các chỉ số khác để lọc và xác nhận tín hiệu
  3. Điều chỉnh thời gian giữ theo thị trường khác nhau
  4. Tối ưu hóa chiến lược dừng lỗ và lấy lợi nhuận

Tóm lại

Trong khi đó, các chỉ số cần được điều chỉnh theo các thị trường khác nhau để làm cho chiến lược linh hoạt hơn. Nhìn chung, chiến lược này cung cấp một khuôn khổ đáng tin cậy để đạt được thu nhập ổn định.


/*backtest
start: 2022-11-26 00:00:00
end: 2023-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Designed per No Nonsense Forex VP rules
//For testing your individual indicators before the full system
//Originated from causecelebre
//Tried to put in as much VP rules as possible

///////////////////////////////////////////////////
//Rules Implemented:
///////////////////////////////////////////////////
// - SL 1.5 x ATR
// - TP 1 x ATR
//
// - Entry conditions
//// - Entry from 1 x confirmation
// - Exit conditions
//// - Exit on confirmation flip 

///////////////////////////////////////////////////
//Trades entries
///////////////////////////////////////////////////
// - First entry L1 or S1 with standard SL and TP

///////////////////////////////////////////////////
//Included Indicators and settings
///////////////////////////////////////////////////
// - Confirmtion = SSL 10

///////////////////////////////////////////////////
//Credits
// Strategy causecelebre https://www.tradingview.com/u/causecelebre/
// SSL Channel ErwinBeckers https://www.tradingview.com/u/ErwinBeckers/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Change log
//First release. Testing of indicators
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

strategy(title="NNFX Strategy Indicator | jh", overlay = true )

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Set the main stuff  ****
///////////////////////////////////////////////////

//Price
price = close

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ATR stuff
///////////////////////////////////////////////////

slMultiplier = input(1.5, "SL")
tpMultiplier = input(1, "TP")

atrlength = input(title="ATR Length", defval=14, minval=1)
atrsmoothing = input(title="Smoothing", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])

ma_function(source, atrlength) => 
    if atrsmoothing == "RMA"
        rma(source, atrlength)
    else
        if atrsmoothing == "SMA"
            sma(source, atrlength)
        else
            if atrsmoothing == "EMA"
                ema(source, atrlength)
            else
                wma(source, atrlength)

//plot(ma_function(tr(true), atrlength), title = "ATR", color=#991515, transp=0)

atr = ma_function(tr(true), atrlength)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  **** Confirmation ****
///////////////////////////////////////////////////

ssllen=input(title="SSL Length Period", defval=10)
smaHigh=sma(high, ssllen)
smaLow=sma(low, ssllen)
Hlv = na
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh: smaLow
sslUp   = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, "SSL Down", linewidth=1, color=red)
plot(sslUp, "SSL Up", linewidth=1, color=lime)

///////////////////////////////////////////////////
//Confirm Signals
///////////////////////////////////////////////////

c_Up = sslUp
c_Down = sslDown

//Signals based on crossover
c_Long = crossover(c_Up, c_Down)
c_Short = crossover(c_Down, c_Up)

//Signals based on signal position
trendLong = c_Up > c_Down ? 1 : 0
trendShort = c_Down > c_Up ? 1 : 0

confirmLong = c_Long
confirmShort = c_Short

plotshape(trendLong, color = green, style=shape.triangleup, location=location.bottom)
plotshape(trendShort, color = red, style=shape.triangledown, location=location.bottom)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Entries and Exits
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if (year>2009)

    //Long entries with standard 1.5 ATR for SL, 1 ATR for TP
    long_sl = price - (atr * slMultiplier)
    long_tp = price + (atr * tpMultiplier)
    strategy.order("L1", strategy.long, when = confirmLong)
    strategy.close("L1", when = confirmShort)
    strategy.exit("L Limit Exit", "L1", stop = long_sl, limit = long_tp)

    
    //Short entries with standard 1.5 ATR for SL, 1 ATR for TP
    short_sl = price + (atr * slMultiplier)
    short_tp = price - (atr * tpMultiplier)
    strategy.order("S1", strategy.short, when = confirmShort)
    strategy.close("S1", when = confirmLong)
    strategy.exit("S Limit Exit", "S1", stop = short_sl, limit = short_tp)


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//End
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    




Thêm nữa