
L’idée principale de cette stratégie est de détecter si le prix a franchi le prix le plus bas d’une période donnée, et si le prix a franchi plus, attendre que le prix revienne à la ligne d’équilibre.
La stratégie obtient le prix le plus bas de la période donnée en appelant la méthode ta.lowest du script Pine et en le comparant avec le prix le plus bas de la période précédente, prevLow.
Si le prix le plus bas du dernier cycle est inférieur au prix le plus bas du cycle précédent, un signal de plus est émis. Après avoir fait plus, le prix le plus élevé du dernier cycle est comparé au prix le plus élevé du cycle précédent. Si le prix le plus élevé du dernier cycle est supérieur au prix le plus élevé du cycle précédent, la position est levée.
Cette stratégie permet de choisir une condition de déclenchement, c’est-à-dire que le prix minimum doit franchir 1, 2, 3 ou 4 prix minima précédents de manière consécutive, afin de contrôler la fréquence des transactions.
En outre, la stratégie trace sur le graphique une moyenne des prix les plus bas (lowestLow) et une moyenne des prix les plus élevés (highestHigh) pour visualiser les variations de la tendance.
Cette stratégie capte une reprise après un nouveau bas et a un taux de victoire élevé.
La fréquence des transactions peut être contrôlée en choisissant le nombre de fois où le prix le plus bas peut être franchi.
Le tracé d’une ligne moyenne aide à déterminer intuitivement les points de changement de tendance.
La logique de la stratégie est simple, claire et facile à comprendre.
Les tests d’optimisation peuvent être configurés pour différents stocks et périodes.
La fausse rupture ne permet pas de déterminer le point d’inversion de la tendance et peut entraîner des pertes.
Il est nécessaire de tester la configuration d’optimisation de différentes combinaisons de paramètres, sinon la fréquence de transaction peut être trop élevée ou trop faible.
Les paramètres doivent être ajustés pour les différentes actions et ne conviennent pas à une application mécanique.
Les cycles de rétroaction insuffisants peuvent entraîner une suradaptation de la stratégie.
Les prix peuvent être encore plus bas après la rupture, et des arrêts de perte doivent être mis en place pour contrôler le risque.
Augmentation des mécanismes de stop-loss, tels que le stop-loss mobile, le stop-loss de suivi, etc. pour contrôler les pertes individuelles.
Optimiser le nombre de ruptures, équilibrer la fréquence des transactions et la qualité du signal.
Optimisation des paramètres pour tester différentes actions et périodes de temps.
Les conditions de filtrage ont été renforcées pour éviter les transactions fréquentes dans les marchés instables.
Envisagez d’inclure un indicateur de tendance pour éviter de négocier à contre-courant.
Test des signaux de sortie différents.
Cette stratégie, qui permet de capturer les opportunités de revers en surveillant les ruptures de prix les plus bas, est une stratégie de retour de rupture typique. Ses avantages sont simples et faciles à comprendre, la fréquence de négociation est contrôlable et peut être appliquée à une variété d’actions.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
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/
// © merovinh
//@version=5
strategy(title="Merovinh - Mean Reversion Lowest low",
overlay = true,
default_qty_type = strategy.percent_of_equity,
initial_capital = 10000,
default_qty_value = 10,
commission_type = strategy.commission.percent,
slippage = 1,
commission_value = 0.04)
GR_TIME = 'Time Period'
bars = input(9, title = "Minimum number of bars", tooltip = "The minimum number of bars before updating lowest low / highest high")
numberOfLows = input.string(defval='One', title='Number of broken lows', options=['One', 'Two', 'Three', 'Four'])
//Period
var prevLow = .0
var prevHigh = .0
var prevLow2 = .0
var prevLow3 = .0
var prevLow4 = .0
truetime = true
highestHigh = ta.highest(high, bars)
lowestLow = ta.lowest(low, bars)
if numberOfLows == 'One'
if truetime and prevLow > 0 and lowestLow < prevLow
strategy.entry('long', strategy.long)
if numberOfLows == 'Two'
if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2
strategy.entry('long', strategy.long)
if numberOfLows == 'Three'
if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3
strategy.entry('long', strategy.long)
if numberOfLows == 'Four'
if truetime and prevLow > 0 and lowestLow < prevLow and prevLow < prevLow2 and prevLow2 < prevLow3 and prevLow3 < prevLow4
strategy.entry('long', strategy.long)
if truetime and prevHigh > 0 and highestHigh > prevHigh
strategy.close('long')
if prevLow != lowestLow
prevLow4 := prevLow3
prevLow3 := prevLow2
prevLow2 := prevLow
prevLow := lowestLow
prevHigh := highestHigh
plot(lowestLow, color=color.green, linewidth=1, title="Lowest Low Line")
plot(highestHigh, color=color.green, linewidth=1, title="Highest High Line")