
Cette stratégie permet d’automatiser le trading de plusieurs balises sur plusieurs périodes en combinant les trois indicateurs: le Parabolic SAR (indicateur de dérivation de la parabole), le MACD (indicateur de la moyenne mobile de l’indice) et le RSI (indicateur de la relative faiblesse). La stratégie s’applique principalement au day trading d’actions et de produits de base.
L’indicateur PSAR est utilisé pour déterminer la direction des prix et les points de retournement de tendance.
L’indicateur MACD détermine la dynamique des prix. La ligne MACD et la ligne SIGNAL se brisent vers le haut comme des signaux à plusieurs têtes et vers le bas comme des signaux à vide.
L’indicateur RSI détermine le phénomène de sur-achat et de survente. Le RSI est un signal à plusieurs têtes lorsqu’il est supérieur à la marge et un signal à vide lorsqu’il est inférieur à la marge.
La synthèse des signaux de ces trois indicateurs forme la décision finale.
Il s’adapte à l’utilisation de l’indicateur Chop Index pour filtrer les marchés consolidants et éviter les whipsaws.
La pyramide inverse est utilisée pour la gestion dynamique des risques et des bénéfices par la définition des points de rupture et de rupture.
Une combinaison d’indicateurs pour juger de la tendance, du dynamisme et des caractéristiques de survente et de survente, améliorant la précision de la prise de décision.
Adaptez-vous aux caractéristiques du marché et évitez de vous faire piéger par le filtrage des indicateurs de Chop Index sur les marchés qui se consolident.
Gestion dynamique des risques et des bénéfices, réalisation d’un arrêt de perte actif par le principe de mise en position inverse de la pyramide.
Les paramètres sont personnalisables et optimisés et peuvent être facilement adaptés à différentes variétés et environnements de marché.
Il prend en charge plusieurs fuseaux horaires et offre une grande flexibilité pour les transactions sur des lignes courtes ou moyennes et longues.
La décision de la tête d’espace multiple dépend de paramètres, et les paramètres inappropriés peuvent entraîner des erreurs.
Il y a une probabilité que l’indicateur émette le mauvais signal, ce qui peut entraîner des décisions contraires à la tendance.
Le stop loss est mal réglé et peut augmenter les pertes ou réduire les bénéfices.
Les paramètres doivent être surveillés et ajustés fréquemment, et les coûts d’intervention humaine sont élevés.
Ajout d’un module de vérification de modèle pour évaluer les paramètres de réglage et l’efficacité du signal.
Ajout de modules d’apprentissage automatique pour optimiser automatiquement les paramètres et les modèles.
L’accès à plus de sources de données, plus d’espace de fonctionnalités et une meilleure prise de décision.
Développer des systèmes automatisés de surveillance et d’exploitation pour réduire les coûts d’intervention humaine.
Augmenter les évaluations de retour et de simulation et l’efficacité des stratégies de test.
Cette stratégie permet d’automatiser et de quantifier les transactions basées sur des règles en utilisant une combinaison de plusieurs indicateurs techniques. La stratégie offre un espace d’optimisation plus grand et une plus grande extensibilité, elle est adaptée aux ajustements de paramètres, aux extensions de fonctionnalités et à l’optimisation de l’apprentissage automatique.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
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/
// © vikris
//@version=4
strategy("[VJ]Phoenix Force of PSAR +MACD +RSI", overlay=true, calc_on_every_tick = false,pyramiding=0)
// ********** 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=3) * 0.01
shortProfitPerc = input(title="Short Take Profit (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 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=3) * 0.01
shortLossPerc = input(title="Short Stop Loss (%)",
type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
// ********** 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
// 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)
// ********** Supporting functions - End **********
// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)
// Trade only if intraday session is active
//=================Strategy logic goes in here===========================
psar = sar(0.02,0.02,0.2)
c1a = close > psar
c1v = close < psar
malen = input(50, title="MA Length")
mm200 = sma(close, malen)
c2a = close > mm200
c2v = close < mm200
fast = input(12, title="MACD Fast EMA Length")
slow = input(26, title="MACD Slow EMA Length")
[macd,signal,hist] = macd(close, fast,slow, 9)
c3a = macd >= 0
c3v = macd <= 0
rsilen = input(7, title="RSI Length")
th = input(50, title="RSI Threshold")
rsi14 = rsi(close, rsilen)
c4a = rsi14 >= th
c4v = rsi14 <= th
chopi = input(7, title="Chop Index lenght")
ci = 100 * log10(sum(atr(1), chopi) / (highest(chopi) - lowest(chopi))) / log10(chopi)
buy = c1a and c2a and c3a and c4a ? 1 : 0
sell = c1v and c2v and c3v and c4v ? -1 : 0
//Final Long/Short Condition
longCondition = buy==1 and ci <50
shortCondition = sell==-1 and ci <50
//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 **********