
Cette stratégie est basée sur la trajectoire ascendante et descendante de la ceinture de Brin, jugeant que le prix fait plus lorsqu’il franchit la ceinture de Brin et fait moins lorsqu’il franchit la ceinture de Brin.
La stratégie utilise les courbes moyenne, supérieure et inférieure de la ceinture de Brin pour déterminer la gamme de prix extrême. La courbe moyenne est la moyenne mobile simple des prix de clôture des 25 derniers cycles, la courbe supérieure et inférieure étant respectivement la distance entre la courbe moyenne et la courbe inférieure.
Si le prix est inférieur à la ligne descendante, achetez plus; si le prix est supérieur à la ligne descendante, vendez à zéro. Lorsque le prix est supérieur à la ligne descendante, définissez la ligne d’arrêt comme le prix d’entrée multiplié par le facteur d’arrêt, et la ligne d’arrêt comme le prix d’entrée multiplié par le facteur d’arrêt.
La stratégie a également ajouté des règles auxiliaires, telles que l’autorisation d’envoyer un seul signal par 24 heures, afin d’éviter des transactions inutiles.
Mesures de contrôle des risques :
La stratégie est une stratégie de suivi de tendance simple, utilisant les bandes de Brin pour détecter les anomalies de prix et suivre la tendance. Il y a de la place pour l’optimisation des paramètres, le contrôle des risques et le filtrage des signaux, mais l’idée centrale est simple et claire, adaptée à l’apprentissage de la stratégie.
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)
leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)
var lastSellHour = 0
var disableAdditionalBuysThisDay = false
if(time > lastSellHour + 1000 * 60 * 60 * 6)
disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
disableAdditionalBuysThisDay := true
lastSellHour := time
source = close
//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)
plot(upper, color=color.white)
plot(lower, color=color.white)
strategy.initial_capital = 50000
if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)
if(strategy.position_size > 0)
strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
strategy.close("Long", when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")