
L’idée centrale de cette stratégie est de combiner l’indicateur de tendance super et l’indicateur de tendance moyenne (ADX) pour permettre le jugement et le suivi de la tendance. L’indicateur de tendance super est utilisé pour identifier la direction de la tendance des prix actuelle.
Dans l’ensemble, la stratégie est une stratégie de suivi de tendance, qui vise à capturer des tendances claires en ligne moyenne-longue, sans être perturbée par les correlations et les oscillations.
Utilisez l’indicateur de super-tendance pour déterminer la direction de la tendance des prix. Lorsque le prix est en super-tendance, il s’agit d’un signal à plusieurs têtes et lorsqu’il est en super-tendance, il s’agit d’un signal à vide.
Utilisez l’ADX pour déterminer l’intensité de la tendance. Un signal de transaction n’est généré que lorsque l’ADX est supérieur au seuil de réglage, ce qui permet de filtrer les périodes d’ambiguïté.
La couleur de l’entité de la ligne K détermine si la tendance actuelle est à la hausse ou à la baisse, en combinaison avec l’indicateur de tendance supérieure, pour former une confirmation.
L’augmentation du volume des transactions est un signal d’affirmation. La mise en place d’une position n’est effectuée que lorsque le volume des transactions augmente.
Il a mis en place des stop-loss et des stop-loss pour bloquer les profits et contrôler les risques.
Évacuer toutes les positions avant la fin du temps de jeu.
Le but est de suivre une tendance claire, d’éviter les chocs et d’obtenir un taux de profit plus élevé.
Les paramètres de stratégie sont moins nombreux et plus faciles à comprendre et à mettre en œuvre.
Le contrôle du risque est en place, avec des paramètres de stop-loss et de stop-loss.
L’utilisation de plusieurs indicateurs de confirmation peut réduire les faux signaux.
La profondeur de la plaque peut entraîner des pertes importantes.
Les résultats d’une action peuvent être inversés de façon spectaculaire.
L’événement Black Swan, qui a entraîné un changement majeur dans la politique
Les solutions pour faire face aux risques:
Adaptez les paramètres ADX de manière à ce qu’ils ne soient négociés que dans une tendance forte.
L’augmentation de la marge de manœuvre et la maîtrise des pertes individuelles
Suivre de près les politiques et les événements importants, et intervenir en cas de besoin.
Il est possible de tester différentes combinaisons de paramètres de super-tendance, en choisissant des paramètres qui produisent un signal plus stable.
Les différents paramètres de l’ADX peuvent être testés pour déterminer la meilleure combinaison de paramètres.
D’autres indicateurs peuvent être ajoutés pour la confirmation, comme le taux de volatilité, les bandes de Brin, etc., afin de réduire encore les faux signaux.
Il est possible de combiner des stratégies telles que la rupture avec une rupture de tendance.
Cette stratégie est clairement conçue pour déterminer la direction de la tendance des prix en utilisant les supertrends, pour déterminer la force de la tendance en utilisant l’ADX et pour suivre la tendance en cas de forte tendance. En même temps, il est possible de définir des arrêts de perte pour contrôler le risque.
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Intraday Strategy Template
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris
//@version=4
strategy("[VJ]Hulk Smash Intra", overlay=true, calc_on_every_tick = false, pyramiding=0,default_qty_type=strategy.percent_of_equity, default_qty_value=100,initial_capital=2000)
// ********** Strategy inputs - Start **********
// Used for intraday handling
// Session value should be from market start to the time you want to square-off
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session,
defval="0915-1455", confirm=true)
// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
shortProfitPerc = input(title="Short Take Profit (%)",
type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01
shortLossPerc = input(title="Short Stop Loss (%)",
type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01
var float i_multiplier = input(title = "ST Multiplier", type = input.float,
defval = 2, step = 0.1, confirm=true)
var int i_atrPeriod = input(title = "ST ATR Period", type = input.integer,
defval = 10, confirm=true)
len = input(title="ADX Length", type=input.integer, defval=14)
th = input(title="ADX Threshold", type=input.integer, defval=20)
adxval = input(title="ADX Momemtum Value", type=input.integer, defval=25)
// ********** Strategy inputs - End **********
// ********** Supporting functions - Start **********
// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0
// ********** Supporting functions - End **********
// ********** Strategy - Start **********
[superTrend, dir] = supertrend(i_multiplier, i_atrPeriod)
colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 100)
// Super Trend Long/short condition
stlong = close > superTrend
stshort = close < superTrend
// Figure out take profit price
longExitPrice = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)
// Determine stop loss price
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)
//Vol Confirmation
vol = volume > volume[1]
//Candles colors
greenCandle = (close > open)
redCandle = (close < open)
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)
// Trade only if intraday session is active
TrueRange = max(max(high - low, abs(high - nz(close[1]))), abs(low - nz(close[1])))
DirectionalMovementPlus = high - nz(high[1]) > nz(low[1]) - low ? max(high - nz(high[1]), 0) : 0
DirectionalMovementMinus = nz(low[1]) - low > high - nz(high[1]) ? max(nz(low[1]) - low, 0) : 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - nz(SmoothedTrueRange[1]) / len + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) -
nz(SmoothedDirectionalMovementPlus[1]) / len + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) -
nz(SmoothedDirectionalMovementMinus[1]) / len + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus) * 100
ADX = sma(DX, len)
// a = plot(DIPlus, color=color.green, title="DI+", transp=100)
// b = plot(DIMinus, color=color.red, title="DI-", transp=100)
//Final Long/Short Condition
longCondition = stlong and redCandle and vol and ADX>adxval
shortCondition = stshort and greenCandle and vol and ADX >adxval
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
stop_level = longStopPrice
profit_level = longExitPrice
strategy.entry("My Long Entry Id", strategy.long)
strategy.exit("TP/SL", "My Long Entry Id",stop=stop_level, limit=profit_level)
//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
stop_level = shortStopPrice
profit_level = shortExitPrice
strategy.entry("My Short Entry Id", strategy.short)
strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")
// ********** Strategy - End **********