La stratégie Leledec identifie les renversements de tendance en détectant des modèles d'épuisement dans l'indicateur Leledec.
L'indicateur Leledec identifie les points extrêmes locaux de prix en analysant la relation entre les prix de clôture et d'ouverture sur plusieurs barres.
La logique de base de la stratégie est la suivante:
Calculer l'indicateur majeur Leledec (maj) en utilisant les paramètres nombre de barres (maj_qual) et période de rétrospective (maj_len).
Lorsque le majeur Leledec dépasse les barres maj_qual consécutivement, et que le haut de la barre dépasse le plus haut des barres maj_len précédentes, une épuisement ascendant majeur Leledec est identifié qui génère un signal long.
Calculer l'indicateur de Leledec mineur (min) à l'aide des paramètres nombre de barres (min_qual) et période de rétrospective (min_len).
Lorsqu'un Leledec mineur dépasse les barres min_qual de façon consécutive et que le bas de la barre est inférieur au plus bas des barres min_len précédentes, une épuisement à la baisse mineur de Leledec est détectée, ce qui génère un signal court.
Selon la logique de l'indicateur Leledec, les schémas d'épuisement représentent des points d'extrême potentiels et des renversements de tendance, d'où les signaux de trading.
La stratégie possède de fortes capacités d'identification des tendances. Leledec peut détecter efficacement les points extrêmes locaux.
Flexibilité pour s'adapter à différents délais et conditions du marché grâce à un réglage des paramètres.
Peut utiliser le Leledec majeur seul ou incorporer le Leledec mineur pour des signaux plus complets.
Sensibilité personnalisable grâce au nombre de barres et aux paramètres de la période d'observation.
Le risque de faux signaux nécessite une validation à l'aide d'autres indicateurs.
L'optimisation des paramètres est nécessaire pour différents produits et délais.
Il s'appuie principalement sur des tendances de chandelier, peut manquer des opportunités lors d'oscillations de prix à court terme.
Il faut regarder de vrais corps de barres de signaux pour des renversements de tendance échoués.
Optimiser les combinaisons de paramètres pour une meilleure adaptabilité.
Incorporer d'autres indicateurs tels que le volume, les moyennes mobiles, etc. pour filtrer les signaux.
Mettre en œuvre un stop loss pour contrôler la baisse des transactions uniques.
Incorporer des indicateurs à court terme pour saisir les opportunités d'oscillations mineures.
Test sur différents produits pour trouver un environnement optimal.
Optimiser les stratégies de gestion de l'argent telles que la taille des positions, le risque par transaction, etc.
La stratégie Leledec capte les renversements de tendance en identifiant des modèles extrêmes dans l'indicateur Leledec. C'est une tendance efficace en suivant la méthodologie. Bien qu'elle soit avantageuse pour évaluer les tendances, une optimisation supplémentaire, une validation supplémentaire du signal et une bonne gestion des risques sont nécessaires pour la rentabilité à long terme.
/*backtest start: 2023-09-01 00:00:00 end: 2023-09-30 23:59:59 period: 2h basePeriod: 15m 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/ // © Joy_Bangla //@version=4 strategy("A Strategy for Leledec", shorttitle ="Leledec Strategy", overlay=true, commission_value=0.075, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10) maj = input(true, "Major Leledec Exhausion Bar :: Show") min=input(false, "Minor Leledec Exhausion Bar :: Show") leledcSrc = input(close, "Major Leledec Exhausion Bar :: Source") maj_qual = input(6, "Major Leledec Exhausion Bar :: Bar count no") maj_len = input(30, "Major Leledec Exhausion Bar :: Highest / Lowest") min_qual=input(5, "Minor Leledec Exhausion Bar :: Bar count no") min_len=input(5, "Minor Leledec Exhausion Bar :: Bar count no") bindexSindex = input(1, "bindexSindex") closeVal = input(4, "Close") lele(qual, len) => bindex = 0 sindex = 0 bindex := nz(bindex[bindexSindex], 0) sindex := nz(sindex[bindexSindex], 0) ret = 0 if close > close[closeVal] bindex := bindex + 1 bindex if close < close[closeVal] sindex := sindex + 1 sindex if bindex > qual and close < open and high >= highest(high, len) bindex := 0 ret := -1 ret if sindex > qual and close > open and low <= lowest(low, len) sindex := 0 ret := 1 ret return = ret return major = lele(maj_qual, maj_len) minor=lele(min_qual,min_len) plotchar(maj ? major == -1 ? high : na : na, char='•', location=location.absolute, color=color.red, transp=0, size=size.large) plotchar(maj ? major == 1 ? low : na : na, char='•', location=location.absolute, color=color.lime, transp=0, size=size.large) plotchar(min ? (minor==1?high:na) : na, char='x', location=location.absolute, color=color.red, transp=0, size=size.small) plotchar(min ? (minor==-1?low:na) : na, char='x', location=location.absolute, color=color.lime, transp=0, size=size.small) leledecMajorBullish = major==1?low:na leledecMajorBearish = major==-1?high:na leledecMinorBullish = minor==1?low:na leledecMinorBearish = minor==-1?high:na buySignalBasedOnMajorLeledecOnly = major==1?low:na sellSignalBasedOnMajorLeldecOnly = minor==-1?high:na // === INPUT BACKTEST RANGE === fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2018, title = "From Year", type = input.integer, minval = 2017, maxval = 2030) thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 11) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 30) thruYear = input(defval = 2030, title = "Thru Year", type = input.integer, minval = 2017, maxval = 2030) // === INPUT SHOW PLOT === showDate = input(defval = true, title = "Show Date Range", type = input.bool) // === FUNCTION EXAMPLE === start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" if (window()) strategy.entry("buy", strategy.long, when=buySignalBasedOnMajorLeledecOnly) strategy.entry("sell", strategy.short, when=sellSignalBasedOnMajorLeldecOnly)