Cette stratégie est un système de négociation quantitatif basé sur des signaux croisés de moyenne mobile double, qui identifie les changements de tendance du marché à travers l'intersection des moyennes mobiles à court et à long terme, combiné à une gestion dynamique du stop-loss et du take-profit pour contrôler les risques.
La stratégie utilise deux moyennes mobiles simples (MMA) de différentes périodes comme base principale pour les signaux de trading. Un signal long est généré lorsque le MA à court terme dépasse le MA à long terme, et un signal court est généré lorsque le MA à court terme dépasse le MA à long terme. Le système vérifie l'état de la position actuelle lorsque des signaux se produisent, ferme d'abord toutes les contre-positions, puis ouvre de nouvelles positions en fonction de la direction du signal.
Il s'agit d'une stratégie de trading quantitative complète avec une logique claire. Elle capture les changements de tendance grâce à un double croisement MA et gère le risque avec des niveaux de stop-loss et de take-profit dynamiques. Les atouts de la stratégie résident dans son approche systématique et son contrôle des risques, mais il faut prêter attention aux différents risques du marché dans le trading en direct. Grâce à une optimisation et une amélioration continues, la stratégie peut maintenir une performance stable dans différents environnements de marché.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD) // Configurable Inputs stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1) take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1) short_ma_length = input.int(title="Short MA Length", defval=9, minval=1) long_ma_length = input.int(title="Long MA Length", defval=21, minval=1) // Moving Averages short_ma = ta.sma(close, short_ma_length) long_ma = ta.sma(close, long_ma_length) // Plotting Moving Averages plot(short_ma, color=color.blue, title="Short MA") plot(long_ma, color=color.red, title="Long MA") // Buy and Sell Signals buy_signal = ta.crossover(short_ma, long_ma) sell_signal = ta.crossunder(short_ma, long_ma) // Market Buy Logic if (buy_signal and strategy.position_size <= 0) // Close any existing short position if (strategy.position_size < 0) strategy.close(id="Market Sell") // Calculate Stop Loss and Take Profit Prices entry_price = close long_stop = entry_price * (1 - stop_loss_percent / 100) long_take_profit = entry_price * (1 + take_profit_percent / 100) // Enter Long Position strategy.entry(id="Market Buy", direction=strategy.long) strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit) // Alert for Market Buy alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close) // Market Sell Logic if (sell_signal and strategy.position_size >= 0) // Close any existing long position if (strategy.position_size > 0) strategy.close(id="Market Buy") // Calculate Stop Loss and Take Profit Prices entry_price = close short_stop = entry_price * (1 + stop_loss_percent / 100) short_take_profit = entry_price * (1 - take_profit_percent / 100) // Enter Short Position strategy.entry(id="Market Sell", direction=strategy.short) strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit) // Alert for Market Sell alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)