Stratégie de trading basée sur la moyenne mobile adaptative et la cassure de tendance


Date de création: 2023-09-19 15:49:37 Dernière modification: 2023-09-19 15:49:37
Copier: 0 Nombre de clics: 793
1
Suivre
1617
Abonnés

Aperçu

La stratégie juge les entrées en s’adaptant aux moyennes mobiles et aux ruptures de lignes de tendance et décide des sorties à l’aide de l’indicateur RSI. Son objectif est d’entrer dans le marché lorsque les conditions de tendance sont remplies, de s’arrêter et de s’arrêter dans les zones de surachat, tout en contrôlant le fait de ne faire qu’une seule transaction par mois.

Principe de stratégie

  1. Calculer une moyenne mobile adaptative de longueur 99 pour déterminer la direction de la tendance générale

  2. Le pic local de longueur calculée est de 14, et la ligne de pression est tracée sur la voie.

  3. Lorsque le cours de clôture est en hausse et qu’il n’y a pas encore de commandes pour le mois en cours, faites une entrée supplémentaire

  4. Calculer le RSI à 14 cycles et le stop-loss lorsque le RSI est supérieur à 70 (zone de survente)

  5. Suivez le mois de la dernière entrée, assurez-vous de ne faire que des transactions une fois par mois

Analyse des avantages

  1. Les moyennes mobiles adaptables permettent de suivre dynamiquement les changements de tendance

  2. La rupture de la ligne de tendance peut améliorer la précision d’entrée

  3. L’indicateur RSI est un outil efficace pour détecter les sur-achats et les sur-ventes et contrôler les risques en temps réel.

  4. Une transaction par mois réduit la fréquence des transactions et les frais

  5. Les règles sont simples, claires et faciles à comprendre et à appliquer.

Analyse des risques

  1. Une mauvaise configuration des paramètres peut entraîner l’erreur d’un bon point d’entrée

  2. Les indicateurs de sortie fixes ne suivent pas en temps opportun les changements du marché

  3. Il existe un certain risque de retrait

  4. L’incapacité à maîtriser les risques liés aux positions à long terme

  5. Des conditions de filtrage trop strictes peuvent entraîner l’interdiction d’entrée

Direction d’optimisation

  1. Test des paramètres différents pour trouver le paramètre optimal

  2. Ajout d’autres indicateurs de filtrage pour améliorer la stabilité de la stratégie

  3. Développer des stratégies de stop-loss dynamiques et de suivi

  4. Optimisation de la logique d’entrée pour identifier les plus fortes percées

  5. Variété et paramètres de cycle à tester

  6. Filtrage des signaux de fausse rupture combinés à des indicateurs de tendance

Résumer

La stratégie intègre l’analyse de tendance et l’indicateur de survente et de survente, ce qui permet un suivi de tendance relativement stable. En optimisant davantage le paramétrage, le mécanisme de sortie dynamique, etc., elle peut devenir un système de trading quantitatif fiable.

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

//@version=5
strategy('Bannos Strategy', shorttitle='Bannos', overlay=true)

//The provided script is an indicator for TradingView written in Pine Script version 5. The indicator is used to determine entry and exit points for a trading strategy. Here's a detailed breakdown of what the script does:

// Strategy Definition:

// Bannos Strategy is the full name, with a short title Bannos.
// The overlay=true option indicates that the strategy will be overlayed on the price chart.
// Tracking Entry Month:

// A variable lastEntryMonth is set up to track the month of the last entry.
// currentMonth identifies the current month.
// Trend Regularity Adaptive Moving Average (TRAMA):

// It takes an input of length 99 as default.
// It uses adaptive calculations to track trend changes.
// Trendlines with Breaks:

// Identifies local peaks over a given period (in this case, 14) and calculates a slope based on these peaks.
// Relative Strength Index (RSI):

// Uses a length of 14 (default) to calculate the RSI.
// RSI is an oscillation indicator that indicates overbought or oversold conditions.
// Strategy Logic for Long Entry:

// A long position is opened if:
// The close price is above the TRAMA.
// There's a crossover of the close price and the upper trendline.
// The position is taken only once per month.
// Strategy Logic for Long Exit:

// The long position is closed if the RSI exceeds 70, indicating an overbought condition.
// Plotting:

// The TRAMA is plotted in red on the chart.
// A horizontal line is also drawn at 70 to indicate the RSI's overbought zone.
// In summary, this strategy aims to enter a long position when certain trend and crossover conditions are met, and close the position when the market is considered overbought as per the RSI. Additionally, it ensures entries only occur once a month.
//



// Variable pour suivre le mois de la dernière entrée
var float lastEntryMonth = na
currentMonth = month(time)

// Parameters for Trend Regularity Adaptive Moving Average (TRAMA)
length_trama = input(99)
src_trama = close
ama = 0.
hh = math.max(math.sign(ta.change(ta.highest(length_trama))), 0)
ll = math.max(math.sign(ta.change(ta.lowest(length_trama)) * -1), 0)
tc = math.pow(ta.sma(hh or ll ? 1 : 0, length_trama), 2)
ama := nz(ama[1] + tc * (src_trama - ama[1]), src_trama)

// Parameters for Trendlines with Breaks
length_trend = 14
mult = 1.0
ph = ta.pivothigh(length_trend, length_trend)
upper = 0.
slope_ph = 0.
slope_ph := ph ? mult : slope_ph
upper := ph ? ph : upper - slope_ph

// Parameters for RSI
rsiLength = 14
up = ta.rma(math.max(ta.change(close), 0), rsiLength)
down = ta.rma(-math.min(ta.change(close), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

// Strategy Logic for Long Entry
longCondition = close > ama and ta.crossover(close, upper) and (na(lastEntryMonth) or lastEntryMonth != currentMonth)
if (longCondition)
    lastEntryMonth := currentMonth
    strategy.entry('Long', strategy.long)

// Strategy Logic for Long Exit
exitCondition = rsi > 70
if (exitCondition)
    strategy.close('Long')

// Plotting
plot(ama, 'TRAMA', color=color.red)
hline(70, 'Overbought', color=color.red)