Stratégie de période croisée de moyenne mobile pondérée basée sur la plage réelle

Auteur:ChaoZhang est là., Date: 2024-01-17 15h09 et 28 min
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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).

Analyse des avantages

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.

Analyse des risques

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.

Direction de l'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. 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.

  2. 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.

  3. 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.

  4. Incorporer des modèles de couverture des contrats à terme pour contrôler davantage les risques par l'arbitrage au comptant et aux contrats à terme.

Résumé

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)


Plus de