
La stratégie est un système de suivi de tendance basé sur la croisée des deux courbes de la courbe et l’optimisation temporelle. Elle utilise la croisée des moyennes mobiles à court et à long terme pour générer des signaux d’achat et de vente, tout en combinant des fenêtres de temps de négociation spécifiques pour optimiser l’exécution des transactions.
Le principe central de cette stratégie est d’utiliser des moyennes mobiles (MA) de deux périodes différentes pour identifier les tendances du marché et générer des signaux de transaction.
MA à court terme et MA à long terme: la stratégie utilise deux cycles de moyennes mobiles personnalisées par l’utilisateur pour représenter les tendances du marché à court terme et à long terme, respectivement.
Signal de croisement: lorsque la courte MA monte et traverse la longue MA, un signal de vente est généré; lorsque la courte MA descend et traverse la longue MA, un signal de vente est généré.
Optimisation du temps: la stratégie introduit le concept de fenêtre de temps de négociation, qui permet d’exécuter des transactions uniquement dans la zone UTC spécifiée par l’utilisateur, ce qui permet d’éviter les périodes de grande volatilité ou de moindre liquidité du marché.
Prix cibles multiples: la stratégie définit deux prix cibles pour chaque transaction (Target_1 et Target_2), permettant des bénéfices échelonnés.
Gestion des risques: chaque transaction est assortie d’un stop-loss afin de limiter les pertes potentielles.
Visualisation: la stratégie affiche les signaux d’achat et de vente sur le graphique et les étiquettes indiquant que le prix a atteint son objectif, ce qui permet aux traders de comprendre intuitivement la dynamique du marché.
Le suivi des tendances: grâce à l’utilisation de la croisée des moyennes mobiles, la stratégie est capable de capturer efficacement les tendances du marché et d’améliorer les opportunités de profit.
Optimisation du temps: en limitant les fenêtres de temps de négociation, la stratégie peut se concentrer sur les périodes les plus actives et les plus rentables du marché, améliorant ainsi l’efficacité des transactions.
Gestion des risques: plusieurs prix cibles et paramètres de stop-loss aident à équilibrer les risques et les rendements et à protéger la sécurité des fonds.
Flexibilité: les utilisateurs peuvent ajuster les cycles de MA, les prix cibles et les fenêtres de temps de négociation en fonction de leurs préférences personnelles et des caractéristiques du marché.
Aide visuelle: les traders peuvent comprendre plus intuitivement la performance de la stratégie en marquant sur le graphique les signaux d’achat et de vente et l’atteinte du prix cible.
Traite bidirectionnelle: la stratégie soutient à la fois les opérations en surplus et en déficit, et permet de rechercher des opportunités dans divers environnements de marché.
Risque de marché oscillant: dans les marchés oscillants horizontaux, des croisements fréquents de MA peuvent entraîner des faux signaux excessifs et des coûts de transaction.
Risque de glissement: dans un marché rapide, le prix de transaction réel peut être significativement différent du prix au moment de la génération du signal.
Une dépendance excessive à l’égard des données historiques: les moyennes mobiles sont des indicateurs en retard qui peuvent être en retard de réaction face à une évolution rapide du marché.
Les limites de la fenêtre de temps: Les restrictions de temps de négociation peuvent entraîner la perte d’une opportunité de marché importante.
Risque de stop-loss fixe: le stop-loss avec un nombre de points fixe peut ne pas être suffisamment flexible pendant les périodes de forte volatilité.
Surtrading: dans certaines conditions de marché, la stratégie peut générer trop de signaux de trading et augmenter les coûts de trading.
Ajustement des paramètres dynamiques: envisagez d’introduire un mécanisme d’adaptation pour ajuster les cycles de MA et les paramètres de négociation en fonction de la dynamique de la volatilité du marché.
Ajouter un filtre de volatilité: évaluer la volatilité du marché avant de générer un signal de transaction, afin d’éviter les transactions excessives en période de faible volatilité.
Amélioration des mécanismes de stop loss: l’utilisation de stop loss dynamique basé sur l’ATR (Average True Range) peut être envisagée pour s’adapter à différentes conditions de marché.
L’intégration d’autres indicateurs techniques, tels que le RSI ou le MACD, est utilisée pour confirmer la force de la tendance et améliorer la qualité du signal.
Optimisation de la rétroaction: effectuer une rétroaction plus large des données historiques pour trouver la combinaison optimale de paramètres et la configuration de la fenêtre de temps.
Optimisation de la gestion des fonds: mise en œuvre de stratégies de gestion des positions plus complexes, telles que l’ajustement dynamique de la taille des transactions en fonction de la taille des comptes et de la volatilité du marché.
Considérez les facteurs fondamentaux: ajuster votre stratégie avant et après la publication des données économiques importantes et éviter de négocier pendant une période de forte incertitude.
Intégration de l’apprentissage automatique: explorez le processus d’optimisation des paramètres de sélection et de génération de signaux à l’aide d’algorithmes d’apprentissage automatique.
Bien que la stratégie présente des avantages tels que l’intuition et la flexibilité, elle est également exposée à des risques de transaction tels que la volatilité du marché et l’excès. Grâce à l’optimisation et à l’amélioration continues, telles que l’introduction de paramètres dynamiques, l’amélioration des mécanismes de gestion des risques et l’intégration de plus d’indicateurs techniques, la stratégie a le potentiel d’être un système de négociation plus robuste et plus efficace.
/*backtest
start: 2024-07-23 00:00:00
end: 2024-07-30 00:00:00
period: 2m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Gold Trend Trader", shorttitle="Gold Trader", overlay=true)
// User-defined input for moving averages
shortMA = input.int(10, minval=1, title="Short MA Period")
longMA = input.int(100, minval=1, title="Long MA Period")
target_1 = input.int(100, minval=1, title="Target_1")
target_2 = input.int(150, minval=1, title="Target_2")
// User-defined input for the start and end times with default values
startTimeInput = input.int(12, title="Start Time for Session (UTC, in hours)", minval=0, maxval=23)
endTimeInput = input.int(17, title="End Time Session (UTC, in hours)", minval=0, maxval=23)
// Convert the input hours to minutes from midnight
startTime = startTimeInput * 60
endTime = endTimeInput * 60
// Function to convert the current exchange time to UTC time in minutes
toUTCTime(exchangeTime) =>
exchangeTimeInMinutes = exchangeTime / 60000
// Adjust for UTC time
utcTime = exchangeTimeInMinutes % 1440
utcTime
// Get the current time in UTC in minutes from midnight
utcTime = toUTCTime(time)
// Check if the current UTC time is within the allowed timeframe
isAllowedTime = (utcTime >= startTime and utcTime < endTime)
// Calculating moving averages
shortMAValue = ta.sma(close, shortMA)
longMAValue = ta.sma(close, longMA)
// Plotting the MAs
plot(shortMAValue, title="Short MA", color=color.blue)
plot(longMAValue, title="Long MA", color=color.red)
// Tracking buy and sell signals
var float buyEntryPrice_1 = na
var float buyEntryPrice_2 = na
var float sellEntryPrice_1 = na
var float sellEntryPrice_2 = na
// Logic for Buy and Sell signals
buySignal = ta.crossover(shortMAValue, longMAValue) and isAllowedTime
sellSignal = ta.crossunder(shortMAValue, longMAValue) and isAllowedTime
// Entry conditions for long and short trades
if (buySignal)
strategy.entry("Buy_1", strategy.long)
strategy.exit("TP_1", "Buy_1", limit=close + target_1, stop=close - 100)
strategy.entry("Buy_2", strategy.long)
strategy.exit("TP_2", "Buy_2", limit=close + target_2, stop=close - 1500)
if (sellSignal)
strategy.entry("Sell_1", strategy.short)
strategy.exit("TP_3", "Sell_1", limit=close - target_1, stop=close + 100)
strategy.entry("Sell_2", strategy.short)
strategy.exit("TP_4", "Sell_2", limit=close - target_2, stop=close + 150)
// Apply background color for entry candles
barcolor(buySignal ? color.green : sellSignal ? color.red : na)
// Creating buy and sell labels
if (buySignal)
label.new(bar_index, low, text="BUY", style=label.style_label_up, color=color.green, textcolor=color.white, yloc=yloc.belowbar)
if (sellSignal)
label.new(bar_index, high, text="SELL", style=label.style_label_down, color=color.red, textcolor=color.white, yloc=yloc.abovebar)
// Creating labels for 100-point movement
if (not na(buyEntryPrice_1) and close >= buyEntryPrice_1 + target_1)
label.new(bar_index, high, text=str.tostring(target_1), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
buyEntryPrice_1 := na // Reset after label is created
if (not na(buyEntryPrice_2) and close >= buyEntryPrice_2 + target_2)
label.new(bar_index, high, text=str.tostring(target_2), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
buyEntryPrice_2 := na // Reset after label is created
if (not na(sellEntryPrice_1) and close <= sellEntryPrice_1 - target_1)
label.new(bar_index, low, text=str.tostring(target_1), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
sellEntryPrice_1 := na // Reset after label is created
if (not na(sellEntryPrice_2) and close <= sellEntryPrice_2 - target_2)
label.new(bar_index, low, text=str.tostring(target_2), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
sellEntryPrice_2 := na // Reset after label is created