바위처럼 단단한 VIP 양자 전략

저자:차오장, 날짜: 2023-12-19 13:54:05
태그:

img

전반적인 설명

이 전략은 The Solid as a Rock VIP Quant Strategy라고 불립니다. 이는 수정된 WMA 지표와 SSL 채널 지표를 결합하여 안정적이고 신뢰할 수있는 양적 거래 프레임워크를 구축합니다.

원칙

이 전략은 두 가지 지표를 포함합니다. 하나는 수정 WMA 지표로 각 촛불의 평균 가격을 계산하고 추세 방향을 결정하기 위해 기하급수적인 이동 평균 방법을 적용합니다. 다른 하나는 SSL 채널 지표로 가장 높고 가장 낮은 가격의 이동 평균을 사용하여 가격 채널을 결정하고 현재 트렌드 상태를 판단합니다.

수정된 WMA 지표가 구매 신호를 생성하면, 즉, 황금 십자가, 우리는 채널의 가격이 적합하는지 결정하기 위해 SSL 채널 지표를 결합합니다. 촛불 몸체가 채널의 하위 한계 아래 완전히 있다면, 우리는 구매 명령을합니다.

장점

  1. 두 개의 지표를 결합하면 가짜 브레이크를 피하기 위해 구매 신호가 더 신뢰할 수 있습니다
  2. 수정된 WMA 지표는 전환점을 더 정확하게 결정할 수 있습니다.
  3. SSL 채널은 높은 가격으로 구매를 피하기 위해 가격 채널을 명확하게 판단합니다.
  4. 기하급수적 이동 평균 방법을 사용하는 것은 장기 트렌드를 결정하는 데 더 유리합니다.

위험 과 해결책

  1. 유동적인 시장에서 손해를 막는 지점은 쉽게 작동할 수 있습니다. 우리는 적절하게 손해를 막는 범위를 확장할 수 있습니다.
  2. 이동 평균 시스템은 짧은 기간 시장 소음에 민감하며 잘못된 신호를 생성 할 수 있습니다. 우리는 필터링 효과를 향상시키기 위해 이동 평균 매개 변수를 적절히 증가시킬 수 있습니다.
  3. 잘못된 매개 변수 설정은 전략 성능에도 영향을 줄 수 있습니다. 우리는 최적의 매개 변수 조합을 찾기 위해 백테스팅을 통해 매개 변수를 최적화 할 수 있습니다.

최적화 방향

  1. 우리는 EMA와 VWMA와 같은 다양한 종류의 이동 평균을 테스트하여 가장 적합한 평균 라인 지표를 찾을 수 있습니다.
  2. 저음파 영역에서 신호를 피하기 위해 볼륨 표시기를 추가할 수 있습니다.
  3. 우리는 더 신뢰할 수 있는 운하 경계를 만들기 위해 돈치안 운하와 같은 다양한 운하 그리기 방법을 시도할 수 있습니다.
  4. 우리는 MACD와 RSI와 같은 다른 보조 지표를 추가하여 입시 시기를 추가로 확인 할 수 있습니다.

요약

수정된 WMA 지표와 SSL 채널 지표의 기발한 조합을 통해이 전략은 안정적이고 신뢰할 수있는 양적 거래 프레임워크를 구축합니다. 높은 수준에서 구매 위험을 피하면서 시장 소음을 필터 할 수있는 강력한 능력을 가지고 있습니다. 적절한 매개 변수 설정과 특정 최적화와 함께 매우 뛰어난 전략이 될 것입니다.


/*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)


더 많은