Die Ressourcen sind geladen. Beförderung...

EHMA-Bereichsstrategie

Schriftsteller:ChaoZhang, Datum: 2022-05-09 23:31:59
Tags:EHMA

Dieses Skript ist eine modifizierte Version von @borsermans Skript für den Exponential Hull Moving Average Alle Anerkennung für die EHMA geht an ihn.

Das EHMA-System ist ein System, welches sich durch eine Reihe von Schritten durchsetzt, die sich auf den EHMA-Bereich beziehen.

Mit dem Bereich um die EHMA, tritt die Strategie nur in eine Long/Exit-Short-Position, wenn eine Bar über den oberen Bereich kreuzt. Umgekehrt, tritt sie nur in eine Short/Exit-Long-Position, wenn eine Bar unter dem unteren Bereich kreuzt. Dies vermeidet Positionen, wenn sich Bars innerhalb der EHMA-Bereich beweglich verhalten und tritt nur in eine Position, wenn der Markt in seiner Richtung zuversichtlich ist. Das heißt, Fakeouts sind immer noch möglich, aber viel seltener. Nachdem diese Strategie im Vergleich zur regulären EHMA-Strategie (und mit verschiedenen Einstellungen experimentiert) zurückgetestet wurde, scheint diese Version viel robuster und profitabler zu sein!

Haftungsausschluss Bitte beachten Sie, dass frühere Leistungen möglicherweise keine Indikatoren für zukünftige Ergebnisse sind. Aufgrund verschiedener Faktoren, einschließlich der sich ändernden Marktbedingungen, kann die Strategie möglicherweise nicht mehr so gut funktionieren wie bei historischen Backtests. Dieser Beitrag und das Drehbuch bieten keine finanzielle Beratung.

Zurückprüfung

img


/*backtest
start: 2021-05-08 00:00:00
end: 2022-05-07 23:59:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Credit is due where credit is due:
// Hull Moving Average: developed by Alan Hull
// EHMA: coded by Twitter @borserman
// I've built on their work in an attempt to create a strategy more robust to fake moves
// @0xLetoII

//@version=4
//strategy(
//  title="EHMA Range Strategy",
//  process_orders_on_close=true,
//  explicit_plot_zorder=true,
//  overlay=true, 
//  initial_capital=1500, 
//  default_qty_type=strategy.percent_of_equity, 
//  commission_type=strategy.commission.percent, 
//  commission_value=0.085,
//  default_qty_value=100
//  )
  

// Position Type
pos_type = input(defval = "Both", title="Position Type", options=["Both", "Long", "Short"])

// Inputs
Period = input(defval=180, title="Length")
RangeWidth = input(defval=0.02, step=0.01, title="Range Width")
sqrtPeriod = sqrt(Period)

// Function for the Borserman EMA
borserman_ema(x, y) =>
    alpha = 2 / (y + 1)
    sum = 0.0
    sum := alpha * x + (1 - alpha) * nz(sum[1])

// Calculate the Exponential Hull Moving Average
EHMA = borserman_ema(2 * borserman_ema(close, Period / 2) - borserman_ema(close, Period), sqrtPeriod)

// Create upper & lower bounds around the EHMA for broader entries & exits
upper = EHMA + (EHMA * RangeWidth)
lower = EHMA - (EHMA * RangeWidth)

// Plots
EHMAcolor = (close > EHMA ? color.green : color.red)
plot(EHMA, color=EHMAcolor, linewidth=2)
plot(lower, color=color.orange, linewidth=2)
plot(upper, color=color.blue, linewidth=2)


// Strategy
long = close > upper
exit_long = close < lower
short = close < lower
exit_short = close > upper


// Calculate start/end date and time condition
//startDate  = input(timestamp("2017-01-01T00:00:00"))
//finishDate = input(timestamp("2029-01-01T00:00:00"))
 
time_cond  = true


// Entries & Exits
if pos_type == "Both"
    strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
    strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
    strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
    strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)
if pos_type == "Long"
    strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
    strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
if pos_type == "Short"
    strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
    strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)
    

Verwandt

Mehr