
La stratégie intègre plusieurs indicateurs techniques et concepts de négociation qui peuvent être utilisés pour générer automatiquement des signaux d’achat et de vente. La principale caractéristique est la combinaison d’un indicateur d’analyse de la tendance pour optimiser le stop loss, tout en utilisant la croisée des lignes pour générer des signaux de négociation.
Indicateur UTSTC personnalisé: un indicateur de suivi de stop-loss adaptatif basé sur l’amplitude réelle moyenne est réalisé, permettant d’ajuster la plage de stop-loss en fonction de la volatilité du marché.
Indicateur STC: différence entre les moyennes mobiles simples rapides et les moyennes mobiles simples lentes, utilisé pour déterminer la direction des tendances du marché et les points de revers potentiels.
Les moyennes mobiles simples (SMA) et les moyennes mobiles indicielles (EMA): calculer et tracer des moyennes mobiles de différentes périodes pour fournir des informations supplémentaires sur les tendances.
Signal d’achat: produit lorsque l’indicateur UTSTC est traversé par le prix de clôture et que l’indicateur STC est en hausse.
Signal de vente: produit lorsque le prix de clôture est en baisse sur l’indicateur UTSTC et que l’indicateur STC est en baisse.
L’intégration de plusieurs indicateurs permettra d’améliorer la précision des signaux.
L’indicateur UTSTC ajuste automatiquement le seuil de stop loss en fonction de l’amplitude réelle, ce qui permet de contrôler efficacement chaque perte.
Les signaux de transaction sont simples et efficaces, en utilisant la croix de la même ligne.
Les différentes combinaisons de paramètres peuvent être adaptées à un plus grand nombre de conditions de marché.
Les indicateurs de jugement de tendance tels que le STC sont en retard et risquent de manquer une opportunité de reprise à court terme.
Le signal de croisement de la même ligne peut produire un faux signal.
Les paramètres doivent être soigneusement évalués, car une mauvaise combinaison peut réduire les bénéfices ou augmenter les pertes.
Une portée trop grande peut augmenter le risque de perte, et une portée trop petite peut entraîner une perte prématurée.
Tester les paramètres de l’indicateur STC de différentes longueurs de cycle pour trouver le réglage ayant le moins d’impact sur la stratégie.
Essayez de filtrer les faux signaux en combinant avec d’autres indicateurs, tels que KDJ, MACD, etc.
Adaptez les paramètres de stop loss en fonction des résultats de la rétroanalyse pour trouver la combinaison optimale de paramètres.
Évaluer les différents réglages de tenue de position pour trouver la période de tenue optimale.
La stratégie intègre plusieurs modules de jugement de tendance, de gestion automatique des stop-loss et de jugement des signaux de négociation, formant un programme de négociation quantitatif plus complet. Des gains stables sont attendus grâce à l’optimisation des paramètres et à l’extension des fonctions.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("OB+LQ+UTSTC+SMA+EMA-NORA-MIP21-Jashore-Bangladesh-OneMinuteTF", shorttitle="OB+LS+UTSTC-MIP21-Jashore-Bangladesh-OneMinuteTF", overlay=true)
// Order Block + Liquidity Swings [NORA] Settings
pivot_length = input(14, title="Pivot Lookback")
bull_ext_last = input(3, title="Bullish OB Extension")
bear_ext_last = input(3, title="Bearish OB Extension")
swing_length = input(5, title="Swing Length")
area = input("Wick Extremity", title="Swing Area", options=["Wick Extremity", "Full Range"])
min_profit = input(0.5, title="Minimum Profit Target")
max_loss = input(0.5, title="Maximum Loss Stop")
// Variables
var float bull_ob_price = na
var float bear_ob_price = na
var float swing_high = na
var float swing_low = na
// Calculate Order Block Prices
var float low_lowest = na
var float high_highest = na
if bar_index >= pivot_length
low_lowest := lowest(low, pivot_length)
high_highest := highest(high, pivot_length)
bull_ob_price := low_lowest
bear_ob_price := high_highest
// Calculate Swing High/Low Prices
var float low_lowest_swing = na
var float high_highest_swing = na
if area == "Wick Extremity"
low_lowest_swing := lowest(low, swing_length)
high_highest_swing := highest(high, swing_length)
else
low_lowest_swing := lowest(high - low, swing_length)
high_highest_swing := highest(high - low, swing_length)
swing_low := low_lowest_swing
swing_high := high_highest_swing
// Trading Logic for Order Block + Liquidity Swings
buy_liquidity = crossover(close, bull_ob_price) and close > swing_low
sell_liquidity = crossunder(close, bear_ob_price) and close < swing_high
// Plot Buy/Sell Signals for Order Block + Liquidity Swings
plotshape(series=buy_liquidity, style=shape.labelup, location=location.belowbar, color=color.rgb(39, 166, 175), size=size.small, title="Bullish LQ")
plotshape(series=sell_liquidity, style=shape.labeldown, location=location.abovebar, color=color.rgb(248, 95, 215), size=size.small, title="Bearish LQ")
// UTSTC-SMA-EMA-NORA-New Settings
keyvalue = input(3, title="UT Bot Key Value", step=0.5)
atrperiod = input(10, title="UT Bot ATR Period")
src = close
xATR = atr(atrperiod)
nLoss = keyvalue * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss),
iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
pos = 0
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
plot(xATRTrailingStop, color=xcolor, title="UT Bot Trailing Stop")
// STC Settings
stc_length = input(12, title="STC Length")
fastLength = input(26, title="STC Fast Length")
slowLength = input(50, title="STC Slow Length")
fastMA = ema(close, fastLength)
slowMA = ema(close, slowLength)
STC = fastMA - slowMA
STCColor = STC > STC[1] ? color.green : color.red
plot(STC, color=STCColor, title="STC")
// Add SMAs
sma21 = sma(close, 21)
sma44 = sma(close, 44)
plot(sma21, color=color.blue, title="SMA 21")
plot(sma44, color=color.orange, title="SMA 44")
// Add EMA
ema5 = ema(close, 5)
plot(ema5, color=color.yellow, title="EMA 5")
// Combined Strategy
buySignal = crossover(src, xATRTrailingStop) and STC < 25 and STCColor == color.green
sellSignal = crossunder(src, xATRTrailingStop) and STC > 75 and STCColor == color.red
// Plot Buy and Sell signals as triangles
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)