
La stratégie de négociation auto-adaptative de prix croisés équidistants est une méthode de négociation quantitative basée sur la moyenne mobile de Hull (HMA). Cette stratégie utilise les prix croisés avec les HMA pour générer des signaux d’achat et de vente, tout en définissant des niveaux fixes de stop loss et de stop loss pour gérer les risques et les gains.
Le cœur de la stratégie est l’utilisation de la moyenne mobile de Hull (HMA) comme indicateur principal. L’HMA est une moyenne mobile avancée qui est capable de répondre rapidement aux variations de prix tout en réduisant le retard. La logique de la stratégie est la suivante:
La stratégie consiste à suivre les positions ouvertes pour s’assurer qu’il n’y a pas de réouverture de position dans les positions existantes. Une fois qu’une transaction est clôturée, le système réinitialise le signal, permettant l’entrée en vigueur d’un nouveau signal de transaction.
La stratégie de trading en ligne croisée à prix auto-adaptatif est une méthode de trading simple et efficace. En tirant parti des avantages de la moyenne mobile de Hull, la stratégie est capable de capturer les tendances du marché tout en protégeant les fonds grâce à des mesures de gestion des risques fixes. Bien que la stratégie présente certains risques potentiels, sa performance et son adaptabilité peuvent être encore améliorées par une optimisation et une amélioration continues.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-03-23 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SHIESTD", overlay=true)
// Function to calculate Hull Moving Average (HMA)
hma(src, length) =>
wma1 = ta.wma(src, length)
wma2 = ta.wma(src, length / 2)
hma = ta.wma(2 * wma2 - wma1, math.round(math.sqrt(length)))
hma
// Parameters
hma_length = 104
// Calculate Hull Moving Average
hma_value = hma(close, hma_length)
// Plot HMA
plot(hma_value, title="104-period Hull Moving Average", color=color.blue, linewidth=2)
// Define SL and TP values in dollars
long_sl_amount = 1.25
long_tp_amount = 37.5
short_sl_amount = 1.25
short_tp_amount = 37.5
// Number of contracts
contracts = 2
// Function to calculate SL and TP prices based on entry price and dollar amounts
long_sl_price(entry_price) =>
entry_price - long_sl_amount
long_tp_price(entry_price) =>
entry_price + long_tp_amount
short_sl_price(entry_price) =>
entry_price + short_sl_amount
short_tp_price(entry_price) =>
entry_price - short_tp_amount
// Trading conditions
price_intersects_hma = ta.crossover(close, hma_value) or ta.crossunder(close, hma_value)
// Long and Short Conditions based on price intersecting HMA
long_condition = ta.crossover(close, hma_value)
short_condition = ta.crossunder(close, hma_value)
// Track open positions
var bool long_open = false
var bool short_open = false
// Handle Long Positions
if (long_condition and not long_open)
entry_price = close
strategy.entry("Long", strategy.long, qty=contracts)
strategy.exit("Exit Long", from_entry="Long", stop=long_sl_price(entry_price), limit=long_tp_price(entry_price))
long_open := true
// Handle Short Positions
if (short_condition and not short_open)
entry_price = close
strategy.entry("Short", strategy.short, qty=contracts)
strategy.exit("Exit Short", from_entry="Short", stop=short_sl_price(entry_price), limit=short_tp_price(entry_price))
short_open := true
// Reset flags when the position is closed
if (strategy.opentrades == 0)
long_open := false
short_open := false