Stratégie de régression basée sur les cassures


Date de création: 2024-03-01 11:58:56 Dernière modification: 2024-03-01 11:58:56
Copier: 2 Nombre de clics: 651
1
Suivre
1617
Abonnés

Stratégie de régression basée sur les cassures

Aperçu

Cette stratégie est une méthode systématique visant à tirer profit de la volatilité des marchés à terme du pétrole brut. Elle mesure la portée moyenne de la courbe, ce qui signifie que si la moyenne mobile rapide est supérieure à la moyenne mobile lente, la courbe est plus grande; si la moyenne mobile lente est supérieure à la moyenne mobile rapide, la courbe est plus petite.

Selon ce principe, identifier les potentiels points d’entrée longs et points d’entrée courts. La position ne conserve qu’un certain nombre de bars, ce paramètre étant contrôlé par l’entrée de la barre Exit after bars.

Principe de stratégie

  1. Calculer le prix de clôture le plus élevé des 9 lignes K les plus récentes, comme critère de jugement de rupture
  2. Calculer le prix de clôture le plus bas des 50 dernières lignes de K comme critère de rupture
  3. Calculer la comparaison de l’amplitude moyenne des 5 et des 20 lignes K les plus récentes pour déterminer si la forme de la ligne K s’agrandit ou se réduit progressivement
  4. Identifier les signaux de rupture des lignes longues et courtes: faire plus lorsque le prix de clôture est égal au prix de clôture le plus élevé et que la ligne K se rétrécit progressivement; faire plus lorsque le prix de clôture est égal au prix de clôture le plus bas et que la ligne K se rétrécit progressivement
  5. Le placement de la ligne K de la racine fixe après la rupture: paramètres réglables pour modifier l’intervalle de placement

Analyse des avantages

  1. Stratégie de régression pour juger de la direction du marché en comparant avec les sommets historiques
  2. La combinaison de jugements volatiles peut éviter les fausses percées
  3. La ligne de départ de la racine K fixe permet de bloquer un certain gain et d’éviter le retrait.

Analyse des risques

  1. Les limites historiques changent avec la structure du marché et peuvent entraîner des défaillances de signaux
  2. Une fausse effraction conduit à la prison
  3. Les paramètres d’intervalle d’absence sont incorrects et peuvent entraîner une perte de plus de bénéfices ou une perte accrue.

Direction d’optimisation

  1. Les paramètres extrêmes peuvent être optimisés par la statistique pratique
  2. Indicateur de volatilité pouvant être ajouté pour évaluer la vraie probabilité de rupture
  3. Le nombre de racines de sortie peut être optimisé par des stratégies de retouche

Résumer

Cette stratégie utilise les ruptures et les retours pour juger des tendances à court terme et appartient à la stratégie de volatilité. En optimisant les paramètres de réglage et en ajoutant des indicateurs de volatilité, il est possible de réduire la probabilité de fausses ruptures et d’améliorer le niveau de profit.

Code source de la stratégie
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Celestial_Logic

//@version=5
strategy("Crudeoil Breakout strategy", overlay = true, initial_capital = 20000, default_qty_type = strategy.fixed, default_qty_value = 1)


highestCloseLookback = input(9 , title = 'Highest Close lookback')
lowestCloseLookback  = input(50, title = 'Lowest Close lookback'  ) 

exitAfter = input(10, title = 'Exit after bars')

hc = ta.highest(close,highestCloseLookback)
lc = ta.lowest(close,lowestCloseLookback)

rangeFilter = (ta.sma( (high - low), 5 ) > ta.sma((high-low), 20) ) // Candles getting bigger.

longCondition  = (close == hc ) and not rangeFilter
shortCondition = (close == lc ) and not rangeFilter
if  longCondition
    strategy.entry(id = 'long', direction = strategy.long) 
if shortCondition
    strategy.entry(id = 'short', direction = strategy.short)



var int longsince = 0 
var int shortsince = 0 

if strategy.position_size > 0 
    longsince += 1
else
    longsince := 0

if strategy.position_size < 0 
    shortsince += 1 
else 
    shortsince := 0

if longsince >= exitAfter 
    strategy.close(id = 'long', comment = 'long close')
if shortsince >= exitAfter
    strategy.close(id = 'short', comment = 'short close')