Le solide comme une pierre VIP Quant Strategy

Auteur:ChaoZhang est là., Date: le 19 décembre 2023 13:54:05
Les étiquettes:

img

Résumé

Cette stratégie est appelée The Solid as a Rock VIP Quant Strategy. Elle combine l'indicateur WMA modifié et l'indicateur SSL Channel pour créer un cadre de trading quantitatif stable et fiable.

Principe

L'un est l'indicateur WMA modifié, qui calcule le prix moyen de chaque chandelier, puis applique la méthode de la moyenne mobile exponentielle pour déterminer la direction de la tendance.

Lorsque l'indicateur WMA modifié génère un signal d'achat, c'est-à-dire la croix d'or, nous combinons l'indicateur SSL Channel pour déterminer si le prix dans le canal est approprié.

Les avantages

  1. La combinaison de deux indicateurs rend le signal d'achat plus fiable pour éviter de fausses ruptures.
  2. L'indicateur WMA modifié permet de déterminer plus précisément les points tournants.
  3. Le canal SSL juge clairement le canal de prix pour éviter d'acheter à des niveaux élevés.
  4. L'utilisation de la méthode de la moyenne mobile exponentielle est plus propice à la détermination des tendances à long terme.

Risques et solutions

  1. Les points de stop loss peuvent être facilement déclenchés sur les marchés volatils.
  2. Les systèmes de moyennes mobiles sont sensibles au bruit de marché à court terme, ce qui peut générer des signaux incorrects.
  3. Des paramètres incorrects peuvent également affecter les performances de la stratégie.

Directions d'optimisation

  1. Nous pouvons tester différents types de moyennes mobiles, comme EMA et VWMA, pour trouver le meilleur indicateur de ligne moyenne correspondant.
  2. Nous pouvons ajouter des indicateurs de volume pour éviter les signaux dans les zones à faible volume.
  3. Nous pouvons essayer différentes méthodes de dessin du canal, comme le canal de Donchian, pour rendre les limites du canal plus fiables.
  4. Nous pouvons ajouter d'autres indicateurs auxiliaires, tels que le MACD et le RSI, pour confirmer davantage le moment de l'entrée.

Résumé

Grâce à la combinaison ingénieuse de l'indicateur WMA modifié et de l'indicateur SSL Channel, cette stratégie construit un cadre de trading quantitatif stable et fiable. Elle a une forte capacité à filtrer le bruit du marché tout en évitant le risque d'achat à des niveaux élevés. Avec des paramètres appropriés et certaines optimisations, ce sera une stratégie très performante.


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


Plus de