Chiến lược định lượng VIP vững chắc


Ngày tạo: 2023-12-19 13:54:05 sửa đổi lần cuối: 2023-12-19 13:54:05
sao chép: 1 Số nhấp chuột: 665
1
tập trung vào
1621
Người theo dõi

Chiến lược định lượng VIP vững chắc

Tổng quan

Chiến lược này được gọi là chiến lược định lượng VIP cứng như đá, nó kết hợp các chỉ số SMA William Modified WMA và SSL Channel để xây dựng một khung giao dịch định lượng ổn định và đáng tin cậy.

Nguyên tắc

Chiến lược này kết hợp hai chỉ số, một là chỉ số William SMA được cải tiến, để xác định hướng xu hướng bằng cách tính giá trung bình cho mỗi đường K, sau đó áp dụng phương pháp trung bình di chuyển chỉ số. Một là chỉ số kênh SSL, sử dụng giá trung bình di chuyển của giá cao nhất và thấp nhất để xác định kênh giá, để đánh giá trạng thái xu hướng hiện tại.

Khi chỉ số William SMA được cải tiến phát ra tín hiệu mua, tức là Gold Forks, chúng tôi kết hợp với chỉ số SSL Channel để xác định xem giá trong kênh có phù hợp hay không, và nếu thực thể K-Line hoàn toàn nằm dưới giới hạn thấp của kênh, chúng tôi sẽ mua tại điểm đó.

Ưu điểm

  1. Bằng cách kết hợp hai chỉ số, các tín hiệu mua sẽ đáng tin cậy hơn và tránh phá vỡ giả.
  2. Chỉ số SMA William được cải tiến cho phép đánh giá chính xác hơn các điểm chuyển hướng.
  3. Chỉ số kênh SSL có thể xác định rõ ràng kênh giá và tránh mua cao.
  4. Sử dụng phương pháp trung bình di chuyển của chỉ số có lợi hơn trong việc đánh giá xu hướng dài hạn.

Rủi ro và giải pháp

  1. Nếu gặp tình huống khắc nghiệt, điểm dừng có thể dễ dàng bị kích hoạt.
  2. Hệ thống trung bình di chuyển nhạy cảm với tiếng ồn thị trường ngắn hạn, có thể tạo ra tín hiệu sai. Các tham số đường trung bình có thể được tăng cường thích hợp để tăng hiệu quả lọc.
  3. Thiết lập tham số không đúng cũng ảnh hưởng đến hiệu suất của chiến lược. Bạn có thể tối ưu hóa tham số bằng cách phản hồi để tìm ra sự kết hợp tham số tốt nhất.

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

  1. Bạn có thể thử nghiệm các loại trung bình di chuyển khác nhau như EMA, VWMA, v.v. để tìm các chỉ số trung bình phù hợp nhất.
  2. Có thể thêm chỉ số lưu lượng giao thông để tránh phát tín hiệu ở khu vực có lượng thấp.
  3. Bạn có thể thử các phương pháp vẽ đường khác nhau, chẳng hạn như đường Donchian, để làm cho ranh giới của đường dẫn đáng tin cậy hơn.
  4. Các chỉ số hỗ trợ khác như MACD, RSI, v.v. có thể được thêm vào để xác nhận thêm thời gian mua.

Tóm tắt

Chiến lược này xây dựng một khung giao dịch định lượng ổn định và đáng tin cậy bằng cách kết hợp các chỉ số SMA William được cải tiến và chỉ số SSL Channel. Nó có khả năng lọc tiếng ồn thị trường mạnh mẽ, đồng thời tránh rủi ro mua cao.

Mã nguồn chiến lược
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
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/
// © Darshana_Alwis

//@version=5
strategy("VIP", overlay=true, initial_capital=1000,currency=currency.USD,default_qty_type=strategy.percent_of_equity,default_qty_value=100,pyramiding=0)
//SSS = Sultan+Saud Strategy

//The original idea of the code belonges to saudALThaidy
//The strategy code is basically made out of two other indicators, edited and combined by me.
// 1- NSDT HAMA Candles => https://www.tradingview.com/script/k7nrF2oI-NSDT-HAMA-Candles/
// 2- SSL Channel => https://www.tradingview.com/script/6y9SkpnV-SSL-Channel/


//MA INFO
WickColor = input.color(color.rgb(80, 80, 80, 100), title='Wick Color', tooltip='Suggest Full Transparency.')
LengthMA = input.int(100, minval=1, title='MA Line Length', inline='MA Info')
TakeProfit = input.float(1, minval=0, title='Take Profit Percentage', step=1)
UseStopLose = input.bool(false, title='Use Stop Percentage')
StopLose = input.float(1, minval=0, title='StopLose Percentage', step=1)

MASource = close

ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

ma1_color  = color.rgb(230, 172, 0)
ma1 = ma(high, 200, "SMA")

ma2_color  = color.red
ma2 = ma(low, 200, "SMA")

Hlv1 = float(na)
Hlv1 := close > ma1 ? 1 : close < ma2 ? -1 : Hlv1[1]
sslUp1   = Hlv1 < 0 ? ma2 : ma1
sslDown1 = Hlv1 < 0 ? ma1 : ma2

Color1 = Hlv1 == 1 ? ma1_color : ma2_color
fillColor1 = color.new(Color1, 90)

highLine1 = plot(sslUp1, title="UP", linewidth=2, color = Color1)
lowLine1 = plot(sslDown1, title="DOWN", linewidth=2, color = Color1)

OpenLength = 25
HighLength = 20
LowLength = 20
CloseLength = 20


     
SourceOpen = (open[1] + close[1]) / 2
SourceHigh = math.max(high, close)
SourceLow = math.min(low, close)
SourceClose = (open + high + low + close) / 4

funcCalcMA1(src1, len1) => ta.ema(src1, len1)
funcCalcOpen(SourceOpen, OpenLength) => ta.ema(SourceOpen, OpenLength)
funcCalcHigh(SourceHigh, HighLength) => ta.ema(SourceHigh, HighLength)
funcCalcLow(SourceLow, LowLength) => ta.ema(SourceLow, LowLength)
funcCalcClose(SourceClose, CloseLength) => ta.ema(SourceClose, CloseLength)

MA_1 = funcCalcMA1(MASource, LengthMA)

CandleOpen = funcCalcOpen(SourceOpen, OpenLength)
CandleHigh = funcCalcHigh(SourceHigh, HighLength)
CandleLow = funcCalcLow(SourceLow, LowLength)
CandleClose = funcCalcClose(SourceClose, CloseLength)

//PLOT CANDLES
//-------------------------------NSDT HAMA Candels
BodyColor = CandleOpen > CandleOpen[1] ? color.rgb(230, 172, 0) : color.red
barcolor(BodyColor)
plotcandle(CandleOpen, CandleHigh, CandleLow, CandleClose, color=BodyColor, title='HAMA Candles', wickcolor=WickColor, bordercolor=na)
plot(MA_1, title='MA Line', color=BodyColor, style=plot.style_line, linewidth=2)

//------------------------------SSL Channel


plot_buy = false
avg = ((high-low)/2)+low
LongCondition = (Hlv1 == 1 and Hlv1[1] == -1) and (BodyColor == color.rgb(230, 172, 0)) and (MA_1 < avg) and (CandleHigh < avg) and (strategy.opentrades == 0)
if LongCondition
    strategy.entry("BUY with VIP", strategy.long)
    plot_buy := true

base = strategy.opentrades.entry_price(0)
baseProfit = (base+((base/100)*TakeProfit))
baseLose = (base-((base/100)*StopLose))

strategy.exit("SELL with VIP","BUY with VIP",limit = baseProfit)
if UseStopLose and (close < MA_1)
    strategy.exit("SELL with VIP","BUY with VIP",stop = baseLose)
if not UseStopLose and (close < MA_1)
    strategy.exit("SELL with VIP","BUY with VIP", stop = close)
    
plotshape(plot_buy, title="Buy Label", text="Buy", location=location.belowbar, style=shape.labelup, size=size.tiny, color=Color1, textcolor=color.white)

fill(highLine1, lowLine1, color = fillColor1)