Stratégie de renversement de la candelabre consécutive

Auteur:ChaoZhang est là., Date: 2023-10-08 13:56:39 Je vous en prie.
Les étiquettes:

Résumé

Cette stratégie est basée sur une idée classique de trading à court terme - short après les bougies haussières consécutives et long après les bougies baissières consécutives. Plus précisément, cette stratégie détecte la hauteur du corps et la couleur des bougies pour déterminer l'apparition de bougies consécutives de la même couleur, puis utilise l'indicateur RVI pour déterminer si un renversement doit avoir lieu. Dans l'ensemble, il s'agit d'une stratégie qui combine les modèles de bougies et l'indicateur RVI pour mettre en œuvre le trading d'inversion à court terme.

La logique de la stratégie

La logique de base de cette stratégie comprend:

  1. Vérifiez si la hauteur du corps du chandelier dépasse le seuil minimum pour filtrer les mouvements haussiers/baissiers insignifiants.

  2. Déterminez si les deux chandeliers précédents ont la même couleur, ce qui peut indiquer un potentiel renversement à court terme.

  3. Si le chandelier actuel a une couleur différente des deux précédents, un signal de trading est généré. c'est-à-dire aller long après deux chandeliers baissiers et un haussier, aller court après deux chandeliers haussiers et un baissier.

  4. L'indicateur RVI permet d'identifier les renversements à court terme.

  5. En résumé, cette stratégie combine les modèles de chandeliers et l'indicateur RVI pour créer un système de réversion moyenne à court terme, capturant les renversements rentables des comportements anormaux des prix à court terme.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Les chandeliers consécutifs de la même couleur indiquent souvent des anomalies prêtes à s'inverser.

  2. L'indicateur RVI aide à la détermination de l'inversion, complétant les modèles de chandeliers pour des signaux plus stables.

  3. La fréquence de négociation est relativement élevée pour les transactions à court terme.

  4. Risques contrôlables découlant de la taille fixe des transactions et de la prise de stop loss/profit.

  5. Une logique simple et claire qui est facile à comprendre et à mettre en œuvre pour le trading en direct.

Analyse des risques

Quelques risques à noter:

  1. Les renversements à court terme ne sont pas garantis lors de fortes tendances lorsque les signaux peuvent échouer.

  2. Le RVI peut générer des signaux incorrects dans des conditions particulières de marché.

  3. Un paramètre de stop-loss inadéquat pourrait entraîner des pertes importantes.

  4. Considérez l'optimisation au pourcentage requis de bougies de même couleur dans N périodes.

  5. La taille fixe de la transaction ne peut pas contrôler les risques globaux de la position.

Directions d'optimisation

Quelques moyens d'optimiser davantage la stratégie:

  1. Optimiser la logique des chandeliers consécutifs en utilisant des statistiques plutôt que des périodes fixes.

  2. Optimisez les paramètres RVI pour trouver les meilleures combinaisons.

  3. Ajouter le stop loss suivant la volatilité du marché.

  4. Ajouter la taille de la position basée sur l'utilisation du compte.

  5. Ajouter plus de filtres comme les canaux, les tendances pour améliorer la stabilité du système.

  6. Paramètre de réglage pour différents produits.

  7. L'apprentissage automatique sur les données historiques pour optimiser dynamiquement les paramètres.

Résumé

En résumé, il s'agit d'une stratégie de réversion moyenne à court terme typique basée sur des modèles de bougies et RVI. Elle présente des avantages mais aussi des risques. Des optimisations supplémentaires sur les paramètres et la robustesse peuvent améliorer sa stabilité et sa rentabilité. Cependant, aucune stratégie n'élimine complètement les pertes. Les traders doivent rester disciplinés dans la gestion des risques.


/*backtest
start: 2022-10-07 00:00:00
end: 2023-10-07 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//This is part of a series of strategies developed automatically by a online software. I cannot share the site url, which is not related to me in any way, because it is against the TV reules.
//
//This strategy was optimized for GBPUSD, timeframe 1D, fixed lots 0.1, initial balance 1000€
//LOGIC:
//- LONG ENTRY when previous candle is bear
//- LONG EXIT: RVI > signal line
//- SHORT ENTRY when previous candle is bull
//- SHORT EXIT: RVI <  signal line
//
//NOTE: I considered the open of actual candle instead of close otherwise there will be a back shift of 1 candle in pine script
//
//Take profit = no
//Stop loss = no

// strategy("Expert studio strategy 1 - GBPUSD", overlay=false, precision=6, initial_capital=1000,calc_on_every_tick=true, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=10000, currency=currency.EUR)

//INPUTS
src = input(close, "source")
min_body_height = input(42, "Minimum body height", type=input.float)
//bars_back=input(2, "Consecutive bars of same color")
rvi_period = input(55, "RVI period")

//CALCULATIONS_____________________________
//candle color
body_height = abs(open - close) / syminfo.mintick
body_color = open > close ? color.red : color.green

//da migliorare for i=0 to bars_back-1

//RVI -------- thanks to hecate
p = rvi_period

CO = close - open
HL = high - low

value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6
value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6

num = sum(value1, p)
denom = sum(value2, p)

RVI = denom != 0 ? num / denom : 0

RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6

plot(RVI, color=color.green, style=plot.style_line, linewidth=1)
plot(RVIsig, color=color.red, style=plot.style_line, linewidth=1)

//----------------------------------

longCondition = body_height[1] >= min_body_height and body_color[1] == color.red and 
   body_height[0] >= min_body_height and body_color[0] == color.red and 
   RVIsig > RVI
exitLong = RVI > RVIsig

shortCondition = body_height[1] >= min_body_height and body_color[1] == color.green and 
   body_height[0] >= min_body_height and body_color[0] == color.green and 
   RVIsig < RVI
exitShort = RVI < RVIsig

if longCondition and strategy.opentrades == 0
    strategy.entry("Long", strategy.long)

strategy.close("Long", when=exitLong)

if shortCondition and strategy.opentrades == 0
    strategy.entry("Short", strategy.short)

strategy.close("Short", when=exitShort)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2011, "Backtest Start Year")
testStartMonth = input(10, "Backtest Start Month")
testStartDay = input(7, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()





Plus de