Estrategia cuantitativa VIP sólida como una roca


Fecha de creación: 2023-12-19 13:54:05 Última modificación: 2023-12-19 13:54:05
Copiar: 1 Número de Visitas: 665
1
Seguir
1621
Seguidores

Estrategia cuantitativa VIP sólida como una roca

Descripción general

Esta estrategia, llamada “VIP Quantitative Strategy Kit” (Strategía de Cantificación VIP de la Roca), combina el mejorado WMA modificado y el canal SSL para construir un marco de comercio cuantitativo estable y confiable.

El principio

La estrategia combina dos indicadores, uno es el mejorado William SMA, que determina la dirección de la tendencia calculando el precio medio de cada línea K y luego aplica el método de las medias móviles del índice. El otro es el indicador de canal SSL, que utiliza el promedio móvil de los precios más altos y más bajos para determinar el canal de precios y juzgar el estado actual de la tendencia.

Cuando el mejorado índice William SMA emite una señal de compra, es decir, un tenedor de oro, combinamos con el índice del canal SSL para determinar si el precio dentro del canal es adecuado, y abrimos una posición de compra en ese punto si la entidad de la línea K está completamente por debajo del límite inferior del canal.

Las ventajas

  1. La combinación de los dos indicadores hace que las señales de compra sean más fiables y evita falsas brechas.
  2. El mejorado índice William SMA permite determinar con mayor precisión los puntos de cambio de tendencia.
  3. El indicador de canal SSL puede determinar claramente el canal de precios y evitar compras altas.
  4. El método de las medias móviles del índice es más útil para determinar las tendencias a largo plazo.

Riesgos y soluciones

  1. Si se encuentra en una situación extrema, el punto de parada puede ser fácilmente activado. Se puede relajar adecuadamente el rango de parada.
  2. Los sistemas de medias móviles son sensibles al ruido del mercado a corto plazo y pueden generar señales erróneas. Los parámetros de medias pueden ampliarse adecuadamente para mejorar el efecto de filtración.
  3. La configuración incorrecta de los parámetros también puede afectar el rendimiento de la estrategia. Se puede optimizar los parámetros para encontrar la combinación óptima de parámetros mediante la retroalimentación.

Dirección de optimización

  1. Se pueden probar diferentes tipos de promedios móviles, como EMA, VWMA, etc., para encontrar el indicador de promedio que mejor coincida.
  2. Se puede agregar un indicador de tráfico para evitar la emisión de señales en zonas de baja cantidad.
  3. Se pueden probar diferentes métodos de trazado de canales, como el canal Donchian, para que los límites del canal sean más fiables.
  4. Se pueden agregar otros indicadores auxiliares, como MACD, RSI, etc., para confirmar aún más el momento de comprar.

Resumir

Esta estrategia, mediante la combinación ingeniosa de la mejora de los indicadores William SMA y el indicador SSL Channel, construye un marco de operaciones cuantitativo estable y confiable. Tiene una gran capacidad para filtrar el ruido del mercado y al mismo tiempo evitar el riesgo de compras altas. Si los parámetros se ajustan correctamente y se agregan algunas optimizaciones, será una estrategia muy Outperforming.

Código Fuente de la Estrategia
/*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)