Cette stratégie utilise VWMA pour déterminer la direction de la tendance et définit un stop loss avec ATR pour suivre la tendance.
Utilisez VWMA pour déterminer la direction de la tendance. Allez long lorsque le prix est au-dessus de VWMA, allez court lorsque le prix est en dessous de VWMA.
Ajoutez un filtre d'oscillateur RSI pour éviter les faux signaux de rupture.
Utilisez l'ATR pour calculer la ligne de stop-loss. La longueur de l'ATR est définie comme étant la même que celle de la VWMA, le multiplicateur est de 3.5.
Le multiplicateur ATR contrôle l'étanchéité de la ligne de stop-loss.
La taille de la position est calculée sur la base du capital du compte et du pourcentage de stop loss.
Sortir de la position longue lorsque le prix dépasse la ligne de stop loss.
L'utilisation de VWMA pour déterminer la tendance capte les opportunités de tendance de manière persistante.
Le filtre RSI évite certains faux signaux de rupture.
L'arrêt de trail ATR suit la tendance et évite d'être arrêté par des renversements.
La dimensionnement des positions basé sur le fonds propres du compte et le stop loss favorise la gestion des risques.
Perte potentielle à des points de tournant de tendance.
Un réglage incorrect des paramètres ATR entraîne une ligne d'arrêt trop serrée ou trop lâche.
L'inversion rapide de la tendance peut entraîner un retard dans la mise à jour du stop loss, ce qui augmente les pertes.
Dans les environnements à faible volatilité, réduire la taille de la position et augmenter la fréquence de mise à jour des arrêts de perte.
Testez différentes combinaisons de paramètres VWMA pour trouver les paramètres optimaux du signal.
Testez d'autres paramètres de l'indice de volatilité comme les lignes surachetées/survendues.
Testez le multiplicateur ATR pour trouver l'équilibre optimal entre le tirage au sort et la capacité de suivi.
Ajoutez d'autres filtres comme MACD, KD pour améliorer la qualité du signal.
Optimiser la taille des positions et le pourcentage de stop loss en fonction de la volatilité du marché.
La stratégie a un biais global de suivi de tendance et capte bien les tendances évidentes des prix. Elle présente des avantages dans la détermination de la tendance, le filtrage des signaux, le suivi de la perte de stop, etc. Elle comporte également des risques dans l'inversion de tendance.
/*backtest start: 2023-10-07 00:00:00 end: 2023-10-13 00:00:00 period: 1h basePeriod: 15m 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/ // © mohanee //@version=4 //strategy("", overlay=true) strategy(title="VWMA_withATRstops_strategy V2", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000, currency=currency.USD) //default_qty_value=10, default_qty_type=strategy.fixed, float xATRTrailingStop=na int pos=na vwmalength = input(33, title="VWMA Length", minval=1, maxval=365) //vwmalength2 = input(9, title="VWAM Short Term Length", minval=1, maxval=365) nATRPeriod = input(33, title="ATR length", minval=1, maxval=365) nATRMultip = input(3.5, title="ATR Multiplier") rsiofVwmaLength=input(14, title="RSI of VWMA Length") riskCapital = input(title="Risk % of capital", defval=10, minval=1) stopLoss=input(5,title="Stop Loss",minval=1) vwmaVal=vwma(close, vwmalength) //vwmaVal2=vwma(close, vwmalength2) //maVal=sma(close, vwmalength) plot(vwmaVal, color=color.orange, linewidth=2, title="VWMA") //plot(vwmaVal2, color=color.blue, title="VWMA Short Term") //plot(maVal, color=color.blue, title="MA") //rsi of vwma Longterm rsiofVwmaVal=rsi(vwmaVal,rsiofVwmaLength) xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop:= iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos:= iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) color1 = pos == -1 ? color.red: pos == 1 ? color.green : color.blue //plot(xATRTrailingStop, color=color1, title="ATR Trailing Stop") //Entry-- //Echeck how many units can be purchased based on risk manage ment and stop loss qty1 = (strategy.equity * riskCapital / 100 ) / (close*stopLoss/100) //check if cash is sufficient to buy qty1 , if capital not available use the available capital only qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1 //Long Entry //strategy.entry(id="VWMA LE", long=true, qty=qty1, when= close >vwmaVal and open>vwmaVal and close>open and close > xATRTrailingStop and xATRTrailingStop> vwmaVal) strategy.entry(id="VWMA LE", long=true, qty=qty1, when= rsiofVwmaVal>=30 and close>open and close>vwmaVal and pos == 1 ) ///pos == 1 means ATRStop line is green //vwmaVal2>vwmaVal and plot(strategy.position_size>=1 ? xATRTrailingStop : na, color=color1, style=plot.style_linebr, title="ATR Trailing Stop") bgcolor(strategy.position_size>=1 ? color.blue : na ) //Exit strategy.close(id="VWMA LE", when= strategy.position_size>=1 and crossunder(close, xATRTrailingStop) ) //strategy.close(id="VWMA LE", when= strategy.position_size>=1 and close<vwmaVal and open<vwmaVal and close<open )