
Cette stratégie est un système de négociation basé sur la croisée des moyennes mobiles, combinant une méthode de gestion des risques avec des arrêts mobiles dynamiques et des points de profit binaires. La stratégie juge principalement le moment d’entrée en fonction de la croisée des prix et des moyennes mobiles à 200 périodes, tout en définissant des arrêts et des gains flexibles pour contrôler les risques et maximiser les bénéfices.
Signal d’entrée:
Gestion des risques :
Objectif de profit:
Gestion des positions:
Le suivi des tendances: l’utilisation des moyennes mobiles pour capturer les tendances du marché peut aider à tirer profit des grandes tendances.
Contrôle des risques: La combinaison de stop-loss initial et stop-loss mobile dynamique permet de limiter les pertes maximales tout en protégeant les profits réalisés.
Maximiser les bénéfices: en définissant deux prix cibles, vous pouvez continuer à suivre les grandes tendances tout en garantissant une partie des bénéfices.
Automatisation: la stratégie est entièrement automatisée, ce qui réduit le risque d’interférence émotionnelle.
Flexibilité: les paramètres tels que la période de la moyenne mobile, les points d’arrêt et les gains peuvent être ajustés en fonction des conditions du marché.
Risque de marché oscillant: Dans les marchés oscillants horizontaux, il est possible de déclencher fréquemment de faux signaux de rupture, entraînant des pertes continues.
Risque de glissement: dans des conditions de marché rapides, le prix de transaction réel peut être très éloigné du prix idéal.
Trop de transactions: des signaux croisés fréquents peuvent conduire à des transactions excessives, augmentant les coûts de transaction.
Dépendance à un seul indicateur: une dépendance à une seule moyenne mobile peut négliger d’autres informations importantes sur le marché.
Risque de position fixe: le nombre fixe de transactions par transaction peut ne pas être adapté à tous les environnements de marché.
Combinaison multi-indicateurs: envisagez d’introduire d’autres indicateurs techniques tels que le RSI, le MACD, etc., qui peuvent être utilisés en combinaison avec les moyennes mobiles pour améliorer la fiabilité des signaux d’entrée.
Gestion dynamique des positions: Adaptez dynamiquement le nombre de transactions en fonction de la volatilité du marché et du solde du compte pour mieux contrôler les risques.
Filtrage des conditions de marché: augmentation de l’indicateur de force de tendance ou de l’indicateur de volatilité pour éviter l’entrée dans un environnement de marché qui ne convient pas à la négociation.
Optimisation des paramètres: utilisez des données historiques pour repenser différentes combinaisons de paramètres afin de trouver les meilleures périodes de moyenne mobile, les points d’arrêt et les réglages de gain.
Filtrage temporel: envisagez d’ajouter un filtre temporel pour éviter de négocier pendant les périodes de plus grande volatilité ou de moindre liquidité.
Ajout de facteurs fondamentaux: timing des entrées et des sorties de la stratégie en fonction de la publication de données économiques importantes ou d’autres événements fondamentaux.
La stratégie de stop-loss mobile dynamique est un système de trading quantitatif qui combine l’analyse technique et la gestion des risques. La stratégie capture les tendances du marché à l’aide de moyennes mobiles, tout en utilisant des stop-loss dynamiques et des objectifs de profit multiples pour équilibrer les risques et les gains. Le principal avantage de la stratégie réside dans son degré élevé d’automatisation, la flexibilité du contrôle des risques et le potentiel de gains visibles dans des marchés à forte tendance.
/*backtest
start: 2023-07-29 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SOL/USDT Trading Strategy", overlay=true)
// Параметры стратегии
input_quantity = input(2, title="Trade Size (SOL)")
stop_loss_points = input(500, title="Stop Loss Points")
take_profit_points_1 = input(3000, title="First Take Profit Points")
take_profit_points_2 = input(4000, title="Second Take Profit Points")
move_stop_to_entry_points = input(200, title="Move Stop to Entry Points")
ma_period = input(180, title="MA Period")
// Расчет скользящей средней
ma = ta.sma(close, ma_period)
// Условия входа в сделку
long_condition = ta.crossover(close, ma)
short_condition = ta.crossunder(close, ma)
// Текущая цена
var float entry_price = na
// Логика открытия и закрытия сделок
if (long_condition)
entry_price := close
strategy.entry("Long", strategy.long, qty=input_quantity)
if (short_condition)
entry_price := close
strategy.entry("Short", strategy.short, qty=input_quantity)
// Логика выхода из сделок
if (strategy.position_size > 0)
if (close >= entry_price + take_profit_points_1 * syminfo.mintick)
strategy.exit("Partial Take Profit", "Long", qty=0.75 * input_quantity, limit=close)
strategy.exit("Remaining Take Profit", "Long", qty=0.25 * input_quantity, limit=entry_price + take_profit_points_2 * syminfo.mintick, stop=entry_price)
if (close >= entry_price + move_stop_to_entry_points * syminfo.mintick)
strategy.exit("Stop Loss at Entry", "Long", qty=strategy.position_size, stop=entry_price)
else
strategy.exit("Take Profit/Stop Loss", "Long", stop=entry_price - stop_loss_points * syminfo.mintick, limit=entry_price + take_profit_points_1 * syminfo.mintick)
if (strategy.position_size < 0)
if (close <= entry_price - take_profit_points_1 * syminfo.mintick)
strategy.exit("Partial Take Profit", "Short", qty=0.75 * input_quantity, limit=close)
strategy.exit("Remaining Take Profit", "Short", qty=0.25 * input_quantity, limit=entry_price - take_profit_points_2 * syminfo.mintick, stop=entry_price)
if (close <= entry_price - move_stop_to_entry_points * syminfo.mintick)
strategy.exit("Stop Loss at Entry", "Short", qty=strategy.position_size, stop=entry_price)
else
strategy.exit("Take Profit/Stop Loss", "Short", stop=entry_price + stop_loss_points * syminfo.mintick, limit=entry_price - take_profit_points_1 * syminfo.mintick)
// Отображение скользящей средней
plot(ma, title="200 MA", color=color.blue)