
Cette stratégie, combinée à l’indicateur de la ceinture de Brin et à l’indicateur du volume de transactions, permet d’identifier les opportunités de rupture de la ceinture de Brin dans un environnement de volume de transactions élevé et d’effectuer des opérations d’achat. Elle est également combinée à l’indicateur de la moyenne mobile pour déterminer la direction de la tendance et réduire le risque de position bloquée.
La stratégie prend en compte principalement trois facteurs: le prix, la dynamique et la tendance. Lorsque le prix dépasse le Brin et entre dans la zone d’achat, un afflux massif de fonds entraîne une flambée de volume de transactions, indiquant un soutien et une dynamique de tendance plus forts.
Les signaux de négociation sont précis et évitent les faux rebond. En combinaison avec l’indicateur de volume de négociation, achetez uniquement dans des conditions de vraie force, réduisant le risque de position.
Les moyennes mobiles permettent de déterminer la direction de la tendance, de stopper les pertes en temps opportun et de réduire les pertes de positions vides.
Une stratégie quantitative de prise de décision combinant plusieurs indicateurs est mise en œuvre, les paramètres peuvent être ajustés de manière flexible pour s’adapter à différentes variétés et périodes.
La structure du code est claire et la lisibilité de la stratégie est améliorée. Les modules sont organisés pour faciliter la maintenance ultérieure.
Les bandes de Brin, qui servent d’indicateurs de la gamme de fluctuation, peuvent être inefficaces pour les conditions extrêmes. Si des fluctuations anormales se produisent, le signal d’achat sera manqué ou un faux signal sera produit.
Quand le volume des transactions est insuffisant, la stratégie ne peut pas être rentable. Si le volume des transactions dans l’ensemble du marché est insuffisant, il est difficile de tirer profit même en générant un signal d’achat.
Les moyennes mobiles peuvent également être inefficaces comme indicateur de tendance, ne garantissant pas une perte totale.
Une mauvaise configuration des paramètres peut également affecter les gains de la stratégie. Par exemple, la fenêtre de temps de négociation est trop courte, le renversement de tendance est manqué, etc.
Il est possible d’envisager d’ajouter plus d’indicateurs techniques permettant de déterminer les tendances, de soutenir les points de résistance et d’améliorer l’effet d’arrêt des pertes, tels que la forme de la ligne K, les indicateurs du canal, les points de soutien clés, etc.
Augmentation de la probabilité que les modèles d’apprentissage automatique déterminent les véritables percées et réduction du taux de faux signaux. Modèles d’apprentissage en profondeur tels que LSTM.
Optimiser les stratégies de gestion de fonds, telles que l’ajustement dynamique des positions, le suivi des lignes de stop-loss, etc.; réduire l’impact des pertes individuelles;
Tester plus de variétés et de paramètres de périodes de temps. Ajuster les paramètres de la bande de Bryn, les paramètres de volume des transactions, etc., pour optimiser les stratégies d’adaptation au marché.
La stratégie intègre l’indicateur Brin Belt et l’indicateur de volume de transactions pour identifier le moment d’acheter dans des conditions de forte concurrence. En même temps, l’indicateur de moyenne mobile est utilisé pour juger de la tendance et arrêter les pertes à temps.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 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/
// © KAIST291
//@version=4
initial_capital=1000
strategy("prototype", overlay=true)
length1=input(1)
length3=input(3)
length7=input(7)
length9=input(9)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma9= sma(close,length9)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
mult4= input(2.5, minval=0.001, maxval=50, title="exp2")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
dev4= mult4 * stdev(src, length)
upper2=basis + dev4
lower2=basis - dev4
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=( BV>SV and BV>Davgvol)
bull2=(BV>SV and BV>Davgvol)
bux =(close>Supper and close>Slower and volume<Davgvol)
bear=(SV>BV and SV>Davgvol)
con=(BV>Wavgvol and rsi>80)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>upper1 and close>Supper and high>upper and rsi<80)
strategy.entry("Long",strategy.long)
if (strategy.position_avg_price*1.02<close)
strategy.close("Long")
else if (low<ma9 and strategy.position_avg_price<close)
strategy.close("Long")
else if (ma20>close and strategy.position_avg_price<close )
strategy.close("Long")
else if (rsi>80 and strategy.position_avg_price<close)
strategy.close("Long")
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
strategy.close("Long")
else if (high<upper and strategy.position_avg_price<close)
strategy.close("Long")
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
strategy.entry("Short",strategy.short,when=low<ma20 and low<lower1 and close<Slower and crossunder(ma60,ma120))
if (close<strategy.position_avg_price*0.98)
strategy.close("Short")
else if (rsi<20)
strategy.close("Short")