Cette stratégie utilise l'indicateur Bollinger Bands pour déterminer la direction de la tendance du marché, et prend des transactions contre-tendance lorsque l'inversion de tendance se produit. Il va long lorsque le prix dépasse la bande inférieure dans une tendance haussière; et court lorsque le prix dépasse la bande supérieure dans une tendance baissière.
Cette stratégie utilise la bande moyenne, la bande supérieure et la bande inférieure des bandes de Bollinger pour déterminer la direction de la tendance du marché. La bande moyenne est la moyenne mobile exponentielle de n périodes, tandis que la bande supérieure et la bande inférieure sont respectivement la bande moyenne +2,3 écart type et la bande moyenne -2,3 écart type. Lorsque le prix dépasse la bande inférieure, cela indique une tendance haussière actuelle. Lorsque le prix dépasse la bande supérieure, cela indique une tendance baissière actuelle.
En outre, la stratégie définit une moyenne mobile simple de 200 périodes (SMA) comme référence pour le jugement de la tendance à long terme. Les signaux de négociation ne sont déclenchés que lorsque les indicateurs BB et SMA s'accordent sur la même direction. Cela peut filtrer efficacement certaines fausses ruptures.
La logique de négociation spécifique est la suivante:
Améliorations:
Dans l'ensemble, il s'agit d'une stratégie simple et facile à comprendre, en utilisant BB pour déterminer les tendances et prendre des contrats contre tendance aux points tournants.
/*backtest start: 2023-10-23 00:00:00 end: 2023-11-22 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/ // © Aayonga //@version=5 strategy("布林趋势震荡单", overlay=true,initial_capital=10000,default_qty_type=strategy.fixed, default_qty_value=1 ) bollL=input.int(20,minval=1,title = "长度") bollmult=input.float(2.3,minval=0,step=0.1,title = "标准差") basis=ta.ema(close,bollL) dev=bollmult*ta.stdev(close,bollL) upper=basis+dev lower=basis-dev smaL=input.int(200,minval=1,step=1,title = "趋势分界线") sma=ta.sma(close,smaL) //多头趋势 longT=upper>sma and basis>sma and lower>=sma //空头趋势 shortT=upper<sma and basis<sma and lower<=sma //入场位 longE=ta.crossover(close,lower) shortE=ta.crossover(close,upper) //出场位 longEXIT=ta.crossover(high,upper) shortEXIT=ta.crossunder(close,basis) or ta.crossover(close,ta.sma(close,230)) if longT and longE strategy.entry("多",strategy.long) if longEXIT strategy.close("多",comment = "多出场") if shortE and shortT strategy.entry("空",strategy.short) if shortEXIT strategy.close("空",comment = "空出场")