Stratégie de rupture rapide de l'indice Powell


Date de création: 2023-10-24 11:51:56 Dernière modification: 2023-10-24 11:51:56
Copier: 0 Nombre de clics: 628
1
Suivre
1617
Abonnés

Stratégie de rupture rapide de l’indice Powell

Aperçu

La stratégie est basée sur l’indicateur RSI et l’EMA de l’entité siliceuse pour réaliser des opérations de rupture rapide. Elle utilise la forme rapide de l’RSI et l’entité siliceuse de grande taille pour identifier les signaux de retournement.

Principe de stratégie

  1. Calculer l’indicateur RSI, cycle 7, avec RMA pour réaliser la forme d’accélération.

  2. Calculer l’EMA de la taille de l’entité de silicium, période 30, comme référence de la taille de l’entité.

  3. Si le RSI dépasse la limite (default 30), et que l’entité de la ligne K actuelle est plus grande que la taille moyenne de l’entité, faites plus.

  4. Si le RSI est inférieur à la limite de pénétration (default 70), et que l’entité de la ligne K actuelle est plus grande que le quart de la taille moyenne de l’entité, laissez-la vacante.

  5. Si le RSI est déjà en position, il est à nouveau à plat lorsqu’il franchit la limite.

  6. Vous pouvez définir des paramètres tels que la longueur RSI, la limite et le prix de référence.

  7. Il est possible de définir des paramètres tels que la taille de l’entité, le cycle EMA, le multiplicateur de chroot de stockage, etc.

  8. On peut définir le nombre de racines de la fourche dorée/de la fourche morte RSI.

Analyse des avantages

  1. L’indicateur RSI utilise les propriétés de rétrogradation pour capturer les signaux de rétrogradation en temps opportun.

  2. La RMA implémente une forme d’accélération du RSI, rendant le renversement plus sensible.

  3. Combiné à un grand filtre d’entités de ligne K, il évite d’être arbitragé par des oscillations de petite échelle.

  4. Les données de détection sont abondantes et fiables.

  5. Les paramètres peuvent être personnalisés pour s’adapter à différents environnements de marché.

  6. La logique des transactions est claire et simple.

Analyse des risques

  1. L’indicateur RSI présente un écart de retracement, l’effet du disque dur reste à vérifier.

  2. Les grandes entités de la ligne K ne peuvent pas filtrer complètement les marchés en pleine crise.

  3. Les paramètres par défaut peuvent ne pas s’appliquer à toutes les variétés et doivent être optimisés.

  4. Le taux de réussite peut être faible et nécessite un stress psychologique de perte continue.

  5. Le risque d’échec de la percée doit être évité en temps opportun.

Direction d’optimisation

  1. Optimiser les paramètres RSI pour les différentes périodes et variétés.

  2. Optimiser le cycle EMA de l’entité de ligne K, et l’étendue de l’entité de lissage.

  3. Optimiser le nombre de fois que les positions sont ouvertes et contrôler la fréquence d’entrée.

  4. Augmentation des pertes mobiles et garantie de victoire

  5. Le filtrage des tendances est renforcé pour éviter le trading à contre-courant.

  6. Optimiser les stratégies de gestion des fonds et contrôler les risques individuels.

Résumer

Cette stratégie est une stratégie de revers très simple et directe dans l’ensemble. Elle utilise à la fois les propriétés de revers de l’indicateur RSI et le pouvoir destructeur des grandes entités de la ligne K pour entrer rapidement en jeu lors d’une percée du marché. Bien que les effets de retracement soient bons, l’efficacité en direct est encore à vérifier, il faut faire attention à l’optimisation des paramètres et à la maîtrise des risques.

Code source de la stratégie
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.2", shorttitle = "Fast RSI str 1.2", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4
dn = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()