
Cette stratégie est basée sur un indicateur dynamique de la ligne de parité, permettant un suivi en temps réel de la tendance des prix et émettant des signaux de négociation par rupture de la ligne de parité. L’avantage de la stratégie est la simplicité de la configuration des paramètres, la clarté du jugement des signaux et la possibilité de détenir des positions sur les lignes moyennes et longues.
La stratégie utilise des indicateurs de courbe dynamique, y compris plusieurs types de courbe, tels que ALMA, EMA et SMA. Le principe de base est de faire plus lorsque le prix est au-dessus de la courbe et de faire moins lorsque le prix est en dessous de la courbe.
En particulier, la stratégie utilise la ligne moyenne formée par les hauts et les bas, puis utilise la ligne moyenne des bas comme ligne de signal de multiplication, et la ligne moyenne des hauts comme ligne de signal de réduction. Lorsque le prix de clôture est supérieur à la ligne moyenne des bas, faites plus; lorsque le prix de clôture est inférieur à la ligne moyenne des hauts, faites une réduction.
L’utilisation de l’indicateur de la moyenne pour déterminer la tendance des prix, combinée avec le principe de la rupture pour émettre un signal, forme une stratégie de suivi de tendance simple et pratique.
La stratégie utilise des indicateurs de la même ligne pour déterminer la direction de la tendance des prix et émettre des signaux de négociation basés sur la théorie de la rupture. L’avantage est qu’il est simple et facile à utiliser, adapté à la position de la ligne moyenne et longue, et que les paramètres peuvent être ajustés pour s’adapter aux changements du marché.
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)
//INPUTS
mat = input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline = input(55, title="MA Length")
src = input(ohlc4, title="Closing Source")
offset = input(0.85, step=0.05, title="Offset (alma only)")
sigma = input(10, title="Sigma (alma only)")
useCurrentRes = input(true, title="Use Current Resolution")
resCustom = input("1440", title="Timeframe")
showsignals = input(false, title="Show Signals ?")
//BASELINE
baselinehigh =
mat=="SMA" ? sma(high,baseline) :
mat=="EMA" ? ema(high,baseline) :
mat=="WMA" ? wma(high,baseline) :
mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) :
mat=="VWMA" ? vwma(high,baseline) :
mat=="RMA" ? rma(high,baseline) :
mat=="ALMA" ? alma(high, baseline, offset, sigma) : na
baselinelow =
mat=="SMA" ? sma(low,baseline) :
mat=="EMA" ? ema(low,baseline) :
mat=="WMA" ? wma(low,baseline) :
mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) :
mat=="VWMA" ? vwma(low,baseline) :
mat=="RMA" ? rma(low,baseline) :
mat=="ALMA" ? alma(low, baseline, offset, sigma) : na
//RESOLUTION
res = useCurrentRes ? timeframe.period : resCustom
mtfhigh = security(syminfo.tickerid, res, baselinehigh)
mtflow = security(syminfo.tickerid, res, baselinelow)
//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")
long = src > mtfhigh
short = src < mtflow
barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")
signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])
plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)
alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")
if (long)
strategy.entry("Long", strategy.long)
if (short)
strategy.entry("Short", strategy.short)