Cette stratégie utilise une plage réelle et une moyenne mobile pondérée (WMA) pour construire un indicateur de période croisée pour le jugement de la tendance.
La stratégie calcule d'abord l'amplitude ascendante (sube) et l'amplitude descendante (baja), puis calcule la WMA du cycle de la ligne rapide (corto) et du cycle de la ligne lente (largo) respectivement. La différence entre les lignes rapides et lentes est à nouveau calculée par WMA pour obtenir l'indicateur (ind). Lorsque l'indicateur dépasse 0, un signal d'achat est généré. Lorsqu'il dépasse 0, un signal de vente est généré.
Après l'entrée sur le marché, la stratégie prédéfinit 5 positions, qui sont accumulées de manière pyramidale (doublée).
La stratégie intègre des mécanismes tels que le jugement transversal, l'accumulation de positions pyramidales et les stop-loss multiples, qui peuvent contrôler efficacement les risques et réaliser des bénéfices stables.
Les jugements transversaux établissent un système de jugement de tendance grâce à une combinaison de lignes rapides et lentes, qui peut filtrer efficacement le bruit du marché et identifier les points tournants de la tendance.
Le principal risque de cette stratégie est la possibilité d'un événement soudain provoquant un renversement rapide du marché qui déclenche un cutoff stop loss et provoque des pertes.
Le risque d'inversion du marché peut être géré en assoupissant de manière appropriée la ligne de stop loss.
La stratégie peut être optimisée dans les aspects suivants:
Augmenter les indicateurs statistiques de jugement, utiliser des indicateurs tels que la volatilité et le volume pour corriger les paramètres et rendre la stratégie plus adaptable.
Améliorer le modèle d'apprentissage automatique pour le jugement, utiliser LSTM et d'autres modèles d'apprentissage en profondeur pour faciliter le jugement et améliorer la précision de la stratégie.
Optimiser les mécanismes de gestion des positions, envisager d'ajuster l'amplitude de l'augmentation des positions en fonction du pourcentage de bénéfice variable afin de rendre la croissance des positions plus raisonnable.
Incorporer des modèles de couverture des contrats à terme pour contrôler davantage les risques par l'arbitrage au comptant et aux contrats à terme.
En résumé, il s'agit d'une stratégie de tendance transversale basée sur des indicateurs True Range avec accumulation de position pyramidale et plusieurs mécanismes de stop loss, qui peuvent contrôler efficacement les risques et réaliser des profits stables.
/*backtest start: 2023-01-10 00:00:00 end: 2024-01-16 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/ // © MaclenMtz //@version=5 strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false ) //------WINDOW---------- i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window") i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time") window = true //----------------------------- sube = close>close[1] ? ta.tr : 0 baja = close<close[1] ? ta.tr : 0 corto = input(10) largo = input(30) suavizado = input(10) fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto) slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo) ind = ta.wma(fastDiff - slowDiff, suavizado) iColor = ind>0 ? color.green : ind<0 ? color.red : color.black plot(ind, color=iColor) plot(0, color=color.white) long = ind[1]<ind and ind[2]<ind[1] and ind<0 short = ind[1]>ind and ind[2]>ind[1] and ind>0 plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny) plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny) //Contratos contrato1 = input(50000)/(16*close) c1 = contrato1 c2 = contrato1 c3 = contrato1*2 c4 = contrato1*4 c5 = contrato1*8 //cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0 openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2) porc_tp = input.float(6.5) safe = input(-6) //----------------Strategy--------------------------- if strategy.opentrades == 0 strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window) if strategy.opentrades == 1 strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe) if strategy.opentrades == 2 strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe) if strategy.opentrades == 3 strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe) if strategy.opentrades == 4 strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe) min_prof = strategy.openprofit>0 strategy.close_all(when=short and min_prof) plot(openprofit_porc)