Stratégie quantitative VIP à toute épreuve


Date de création: 2023-12-19 13:54:05 Dernière modification: 2023-12-19 13:54:05
Copier: 1 Nombre de clics: 665
1
Suivre
1621
Abonnés

Stratégie quantitative VIP à toute épreuve

Aperçu

Cette stratégie est appelée la stratégie de quantification VIP de la pierre dure. Elle intègre l’indicateur WMA modifié et l’indicateur SSL Channel pour construire un cadre de trading quantifié stable et fiable.

Le principe

Cette stratégie combine deux indicateurs, l’un étant l’amélioration de l’indicateur William SMA, qui permet de déterminer la direction de la tendance en calculant le prix moyen de chaque ligne K, puis en appliquant la méthode des moyennes mobiles de l’indicateur. L’autre est l’indicateur de la chaîne SSL, qui utilise les moyennes mobiles des prix les plus élevés et les plus bas pour déterminer la chaîne de prix et juger de l’état actuel de la tendance.

Lorsque l’indicateur William SMA amélioré émet un signal d’achat, c’est-à-dire une fourchette, nous combinons ensuite l’indicateur de la passerelle SSL pour déterminer si le prix dans la passerelle est approprié. Si l’entité de la ligne K est complètement en dessous de la limite inférieure de la passerelle, nous ouvrons une position d’achat à ce point.

Les avantages

  1. En combinant les deux indicateurs, les signaux d’achat sont rendus plus fiables et évitent les fausses ruptures.
  2. L’indicateur William SMA amélioré permet de déterminer avec plus de précision les points de conversion de tendance.
  3. L’indicateur de canal SSL permet de déterminer clairement le canal de prix et d’éviter les achats à haut niveau.
  4. La méthode des moyennes mobiles indicielles est plus adaptée aux tendances à long terme.

Risques et solutions

  1. Le point d’arrêt peut être facilement déclenché en cas d’urgence. La portée de l’arrêt peut être allongée de manière appropriée.
  2. Les systèmes de moyennes mobiles sont sensibles au bruit du marché à court terme et peuvent générer de faux signaux. Les paramètres de moyennes peuvent être augmentés de manière appropriée pour améliorer l’effet de filtrage.
  3. Une mauvaise configuration des paramètres peut également affecter les performances de la stratégie. Les paramètres peuvent être optimisés en faisant un test de retour pour trouver la meilleure combinaison de paramètres.

Direction d’optimisation

  1. Il est possible de tester différents types de moyennes mobiles, comme les EMA, les VWMA, etc., pour trouver la moyenne la plus appropriée.
  2. On peut ajouter des indicateurs de fréquentation pour éviter les signaux dans les zones de faible fréquence.
  3. Il est possible d’essayer différentes méthodes de cartographie des voies, comme les voies Donchiennes, pour rendre les limites des voies plus fiables.
  4. D’autres indicateurs auxiliaires peuvent être ajoutés, tels que le MACD, le RSI, etc., pour confirmer davantage le moment de l’achat.

Résumer

Cette stratégie, grâce à une combinaison ingénieuse de l’indicateur SMA William amélioré et de l’indicateur SSL Channel, construit un cadre de négociation quantifié stable et fiable. Il a une forte capacité à filtrer le bruit du marché, tout en évitant le risque d’achat élevé.

Code source de la stratégie
/*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)