
La stratégie est un système de négociation multi-zones de grille basé sur les moyennes mobiles MA100. Elle permet la constitution de positions par lots en définissant différentes zones de retrait de prix (−8, 15 et 20%) et les achats progressifs en cas de baisse importante du marché et les gains lorsque le prix rebondit de 3%. La stratégie utilise la logique de la grille intelligente pour contrôler les risques en limitant le nombre maximal de positions et l’intervalle de négociation dans chaque zone.
La logique de base de la stratégie comprend les éléments suivants:
Cette stratégie a une meilleure capacité de résistance au risque en cas de retournement majeur du marché. Bien que certains risques potentiels existent, des paramètres raisonnables et des mesures de contrôle des risques permettent d’obtenir un effet de négociation stable. La possibilité d’optimiser davantage réside principalement dans l’ajout de plus d’indicateurs d’adaptation au marché et l’amélioration des mécanismes de contrôle des risques.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// BTC SOL ETH BNB XMR RNDR AKT OM ONDO IO
strategy("MA100 crash buy 3 Zone // 15 min", overlay=true, calc_on_every_tick=true)
// Définition des MA
maH1 = ta.sma(close, 100)
maB2 = ta.sma(close, 100)
maB3 = ta.sma(close, 100)
maB4 = ta.sma(close, 100)
// Définition du niveau d'achat et de vente
sellLevel1 = maH1 * 1.03 //+3%
buyLevel2 = maB2 * 0.92 //-8%
buyLevel3 = maB2 * 0.85 //-15%
buyLevel4 = maB2 * 0.80 //-20%
// Nombre max de trades simultanés
maxTrades2 = 2
maxTrades3 = 3
maxTrades4 = 4
// Délais entre deux ordres (en bougies)
tradeDelay = 50
var float lastTradeTime = na
var float lastSellTime = na
tradeDelay2 = 50
var float lastTradeTime2 = na
tradeDelay3 = 50
var float lastTradeTime3 = na
tradeDelay4 = 50
var float lastTradeTime4 = na
// Condition d'achat et de vente
buyCondition2 = low <= buyLevel2 and strategy.opentrades < maxTrades2 and (na(lastTradeTime2) or bar_index - lastTradeTime2 > tradeDelay2)
buyCondition3 = low <= buyLevel3 and strategy.opentrades < maxTrades3 and (na(lastTradeTime3) or bar_index - lastTradeTime3 > tradeDelay3)
buyCondition4 = low <= buyLevel4 and strategy.opentrades < maxTrades4 and (na(lastTradeTime4) or bar_index - lastTradeTime4 > tradeDelay4)
sellCondition = strategy.position_size > 0 and high >= sellLevel1 and (na(lastSellTime) or bar_index - lastSellTime > tradeDelay)
if buyCondition2
strategy.entry("Buy", strategy.long)
lastTradeTime2 := bar_index // Enregistre le moment du trade
if buyCondition3
strategy.entry("Buy", strategy.long)
lastTradeTime3 := bar_index // Enregistre le moment du trade
if buyCondition4
strategy.entry("Buy", strategy.long)
lastTradeTime4 := bar_index // Enregistre le moment du trade
if sellCondition
strategy.close("Buy") // Ferme 50% de toutes les positions ouvertes // , qty_percent=30
lastSellTime := bar_index // Enregistre le moment du trade
// Affichage des niveaux
plot(sellLevel1, color=#fa930d, title="Sell Level")
plot(buyLevel2, color=#15bbfd, title="Buy Level")
plot(buyLevel3, color=#1229aa, title="Buy Level")
plot(buyLevel4, color=#9812aa, title="Buy Level")