
Cette stratégie est une stratégie combinée, combinant un indicateur de dynamique, un indicateur de suivi de tendance et un indicateur de la courbe, permettant de suivre la tendance et de briser les achats / ventes. Le moment d’achat / vente est principalement déterminé par la combinaison de l’indicateur Stochastic et de l’indicateur Supertrend, avec l’aide de la courbe EMA pour déterminer la tendance principale du marché.
La stratégie est principalement composée des indicateurs suivants:
EMA moyenne: utilisez les EMA 25, 50, 100 et 200 pour déterminer la tendance principale. Si une EMA25 est traversée par une EMA50 et une EMA100 par une EMA200, c’est une tendance à la hausse, sinon à la baisse.
Indicateur de suivi de la tendance Supertrend: paramètres Factor 3 et ATR 10, pour déterminer si le prix actuel est dans une tendance haussière ou baissière. Lorsque Supertrend est vert, c’est une tendance haussière, rouge est une tendance baissière.
Indicateur de la dynamique stochastique: %K 8 et %D 3, pour déterminer si le stochastique produit un phénomène de fourche dorée ou de fourche morte. Lorsque la ligne %K traverse la ligne %D depuis le bas, c’est un signal de fourche dorée, et vice versa.
La stratégie d’achat est la suivante: EMA affichant une tendance à la hausse + Supertrend affichant une tendance à la hausse + Horaire de la fourche dorée stochastique. La stratégie de vente est la suivante: EMA montre une tendance à la baisse + Supertrend montre une tendance à la baisse + Stochastic Dead Forks time.
Cette stratégie combine trois indicateurs: la tendance, la dynamique et la rupture, afin de déterminer de manière plus fiable les tendances et les points de vente et d’achat.
Les principaux avantages de cette stratégie sont les suivants:
La combinaison de plusieurs indicateurs et un jugement plus fort permettent de filtrer efficacement les fausses percées.
L’ajout d’indicateurs de dynamique permet de déterminer plus tôt le point de basculement.
Les paramètres sont personnalisables et adaptés à différents environnements de marché.
La mise en place d’un système de stop-loss et d’arrêt relativement efficace.
Il est possible d’effectuer une rétrospective à des cycles élevés, comme la lumière du jour, avec de meilleurs résultats.
Cette stratégie comporte aussi des risques:
Une mauvaise configuration des paramètres peut entraîner une fréquence de transaction ou une instabilité du signal. Il est nécessaire d’ajuster les paramètres.
Il y a toujours un risque d’erreur dans le choix du moment. Vous pouvez envisager d’ajouter plus d’indicateurs de fluctuation.
Le stop loss est défini comme la valeur maximale de l’indicateur stochastique, qui peut être trop proche, et une relaxation appropriée peut être envisagée.
Les données de retour sont insuffisantes et peuvent avoir un impact sur l’adéquation des paramètres.
Cette stratégie peut être optimisée dans les directions suivantes:
Testez plus de combinaisons de paramètres pour trouver le paramètre optimal. Par exemple, ajustez les paramètres Factor de Supertrend.
l’ajout d’autres indicateurs de filtrage, tels que l’indicateur d’énergie, l’indicateur de fluctuation, etc., réduit la probabilité d’erreur de jugement.
Il est possible de tester différentes méthodes de stop loss, par exemple en définissant un certain pourcentage de stop loss à un point extrême.
Optimiser les méthodes de stop-loss, comme la prise en compte des stop-loss dynamiques, afin de dégager plus de bénéfices.
Élargir le champ d’application de la stratégie, par exemple en essayant de s’adapter à plus de variétés de transactions ou en essayant de l’utiliser à des cycles plus élevés.
L’idée générale de la stratégie est claire, le choix des indicateurs est raisonnable, le suivi de la tendance et la rupture des transactions sont réalisés et les résultats de la rétroaction sont meilleurs. Cependant, il reste de la place pour l’optimisation.
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-06 07:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Supertrend + Stoch Strategy", overlay=true)
// ---inputs---
pl = input(1.5, title="P/L", minval=0.1)
lossPercentage = input(1, title="Loss Percentage", minval=1, maxval=100)
atrPeriod = input(10, "ATR Length")
factor = input(3, "Supertrend Factor")
periodK = input(8, title="%K Length", minval=1)
smoothK = input(3, title="%K Smoothing", minval=1)
periodD = input(3, title="%D Smoothing", minval=1)
ema1l = input(25, title="EMA 1 Length", minval=1)
ema2l = input(50, title="EMA 2 Length", minval=1)
ema3l = input(100, title="EMA 3 Length", minval=1)
ema4l = input(200, title="EMA 4 Length", minval=1)
// ---lines---
ema1 = ema(close, ema1l)
ema2 = ema(close, ema2l)
ema3 = ema(close, ema3l)
ema4 = ema(close, ema4l)
trendUpper = ema1 > ema2 and ema3 > ema4
trendLower = ema1 < ema2 and ema3 < ema4
[supertrend, direction] = supertrend(factor, atrPeriod)
supertrendUpper = direction < 0
supertrendLower = direction > 0
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
stochCrossOver = crossover(k, d)
stochCrossUnder = crossunder(k, d)
// ---plot---
plot(ema1, color=color.green)
plot(ema2, color=color.orange)
plot(ema3, color=color.blue)
plot(ema4, color=color.purple)
bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0 ? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 95), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 95), fillgaps=false)
// ---stop place compute---
edge = 0. // periodly high/low
edge := stochCrossOver ? high : stochCrossUnder ? low : k > d ? max(edge[1], high) : k < d ? min(edge[1], low) : edge[1]
// plot(edge)
// ---trade condition---
// longCond = trendUpper and supertrendUpper and stochCrossOver
// shortCond = trendLower and supertrendLower and stochCrossUnder
longCond = trendUpper and supertrendUpper and stochCrossOver and strategy.position_size == 0
shortCond = trendLower and supertrendLower and stochCrossUnder and strategy.position_size == 0
// ---stop & take---
stop = 0.
stop := nz(stop[1], stop)
take = 0.
take := nz(take[1], take)
if longCond
stop := edge[1]
take := close + (close - stop) * pl
if shortCond
stop := edge[1]
take := close - (stop - close) * pl
// ---trade---
qty = strategy.equity / abs(stop - close) / 100 * lossPercentage
strategy.entry("Buy", strategy.long, when=longCond, qty=qty)
strategy.exit("Close Buy","Buy", limit=take, stop=stop)
strategy.entry("Sell", strategy.short, when=shortCond, qty=qty)
strategy.exit("Close Sell","Sell", limit=take, stop=stop)
stopLine = plot(strategy.position_size != 0 ? stop : na, color=color.red, style=plot.style_linebr)
takeLine = plot(strategy.position_size != 0 ? take : na, color=color.green, style=plot.style_linebr)
entryLine = plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.blue, style=plot.style_linebr)
fill(entryLine, stopLine, color.new(color.red, 90), fillgaps=false)
fill(entryLine, takeLine, color.new(color.green, 90), fillgaps=false)