
Die Strategie nutzt die Kreuzung von Preisen und HMAs, um Kauf- und Verkaufssignale zu erzeugen, und setzt festgelegte Stop-Loss- und Stop-Stop-Levels ein, um Risiken und Gewinne zu verwalten. Die Strategie verwendet die 104-Zyklen-HMA als Hauptindikator, um den Handel in Kombination mit Preiskreuzungen auszulösen.
Der Kern der Strategie ist die Verwendung des Hull Moving Averages (HMA) als Hauptindikator. HMA ist ein fortgeschrittener Moving Average, der schnell auf Preisänderungen reagiert und gleichzeitig die Verzögerung reduziert. Die Strategie-Logik lautet wie folgt:
Die Strategie stellt sicher, dass keine erneuten Positionen eröffnet werden, wenn bereits Positionen eröffnet wurden. Wenn ein Handel platziert ist, wird das System neu markiert, um ein neues Handelssignal in Kraft zu setzen.
Die Strategie bietet die Möglichkeit, Markttrends zu erfassen und gleichzeitig die Gelder durch feste Risikomanagementmaßnahmen zu schützen. Obwohl die Strategie einige potenzielle Risiken birgt, kann ihre Leistung und Anpassungsfähigkeit durch kontinuierliche Optimierung und Verbesserung weiter verbessert werden.
/*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