Bitcoin Multi-Faktor-Handelsstrategie


Erstellungsdatum: 2023-09-25 18:24:02 zuletzt geändert: 2023-09-25 18:24:02
Kopie: 9 Klicks: 837
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie ist eine integrierte Handelsstrategie für Bitcoin und andere Kryptowährungen mit 15-Minuten-Zeiträumen. Sie integriert mehrere Indikatoren, um Kauf- und Verkaufssignale zu erzeugen, einschließlich eines Triple-Index-Moving-Averages, einer mittleren realen Schwankungsbreite und eines Gleichgewichts-Line-Flash-Diagramms, und verfügt über Risikomanagementmechanismen wie Stop-Losses.

Strategieprinzip

Die Strategie basiert auf mehreren Kennzahlen:

  • Triple Index Moving Average (TEMA): 3 TEMA mit unterschiedlicher Länge und Quelle, berechnet auf Basis von Höhen, Tiefen und Schlusskurs.

  • Durchschnittliche reale Schwankungsbreite (ATR): Berechnen Sie die Schwankungsrate des Marktes mit einem EMA-glatten, benutzerdefinierten ATR.

  • Übertrend-Indikator: Bestimmung der Trendrichtung anhand von ATR und Multiplikatoren.

  • Einfacher gleitender Durchschnitt ((SMA): SMA für kurzfristige TEMA berechnet als Gleitwert.

  • Der Schlusskurs der Gleichgewichtslinie wird als zusätzliche Trendbestätigung verwendet.

Ein Kaufsignal wird erzeugt, wenn das kurzfristige TEMA höher ist als zwei langfristige TEMA, der Übertrend-Indikator bullish ist, das kurzfristige TEMA höher ist als sein SMA und der Schlusskurs der Gleichgewichtslinie höher ist als am Vortag.

Ein Verkaufssignal wird erzeugt, wenn das kurzfristige TEMA niedriger als zwei langfristige TEMA ist, der Übertrend-Indikator nach unten geht, das kurzfristige TEMA niedriger als sein SMA ist und der Schlusskurs der Gleichgewichtslinie niedriger als am Vortag ist.

Die Stop-Loss-Regelung ist auf 1% bzw. 3% des Einstiegspreises festgelegt.

Analyse der Stärken

  • Mehrfaktorische Analyse zur Erhöhung der Genauigkeit

In Kombination mit mehreren Indikatoren wie Trends, Schwankungen und Formen kann die Genauigkeit der Beurteilung verbessert und falsche Signale vermieden werden.

  • Stopp-Loss-Mechanismen zur vernünftigen Risikokontrolle

Eine vernünftige Stop-Loss-Einstellung kann Gewinne sperren und einzelne Verluste wirksam begrenzen.

  • Optimierung von Parametern

Die Parameter des Indikators können flexibel angepasst werden, um sich an Veränderungen am Markt anzupassen und die beste Kombination zu finden.

  • Die Gebührenfaktoren sind näher an der Plattform zu berücksichtigen.

Durch die Einbeziehung eines Gebührenfaktors können die Rückmeldungsergebnisse der tatsächlichen Handelsleistung näher kommen.

Risikoanalyse

  • Risiko von Fehleinschätzungen bei einer Kombination von Faktoren

Zu viele Kombinationen von Indikatoren können auch zu Fehleinschätzungen führen, und die Wirksamkeit der Indikatoren muss sorgfältig bewertet werden.

  • Kurzzeitoperationen mit höherem Risiko

Die 15-Minuten-Betriebsphase ist im Vergleich zu einer langen Periode stärker von Unfallereignissen betroffen, was zu einem höheren Risiko von Zufälligkeiten führt.

  • Strategische Stabilität steht zur Prüfung

Die Strategie muss noch über einen längeren Zeitraum und in mehreren Märkten überprüft werden, um Stabilität zu gewährleisten.

  • Optimierung von Parametern dauert länger

Eine Kombination aus mehreren Indikatoren bringt eine große Anzahl von Parametern mit sich, und die Optimierung aller Parameterkombinationen erfordert eine längere Zeit.

Optimierungsrichtung

  • Bewertung der tatsächlichen Wirkung der einzelnen Indikatoren

Nachprüfen Sie die tatsächliche Erhöhung der einzelnen Indikatoren und vermeiden Sie die Verwendung von überflüssigen Indikatoren.

  • Optimierungsparameter und Teststabilität

Testparameter-Optimierungsergebnisse in mehr Märkten, um Stabilität und Zuverlässigkeit sicherzustellen.

  • Eintritt in die Stop-Loss-Strategie

Um die Risiken weiter zu kontrollieren, können Sie beispielsweise Stop Loss bewegen oder Stop Loss hängen.

  • Weitere Kostenfaktoren berücksichtigen

Die Rückmessung wird durch die Einschaltung von Slip-Point-Kosten und ähnlichem verbessert.

Zusammenfassen

Die Strategie umfasst mehrere Indikatoren und Risikokontrollmechanismen und ist für den 15-Minuten-Zyklus-Handel von Bitcoin konzipiert. Die Optimierungsmöglichkeiten sind groß und erfordern eine eingehende Rückmeldung zur Bewertung der Indikatorwirkung, umfangreiche Marktstabilitätsprüfungen und die Aufnahme weiterer Festplatten-Betrachtungen, um die optimale Kombination von Parametern in einer Multifaktorstrategie zu finden. Wenn die Strategie kontinuierlich optimiert und verifiziert wird, kann sie zu einem wirksamen Instrument für den Hochfrequenzhandel von Kryptowährungen werden.

Strategiequellcode
/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-09 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © deperp
//@version=5
strategy('3kilos', shorttitle='3kilos BTC 15m', overlay=true, initial_capital=100000, max_bars_back=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0)

short = input.int(50, minval=1)
srcShort = input(high, title='TEMA short')

long = input.int(100, minval=1)
srcLong = input(low, title='TEMA long 2')

long2 = input.int(350, minval=1)
srcLong2 = input(close, title='TEMA long 3')

atrLength = input.int(550, title='ATR Length', minval=1)
mult = input.float(3, title="Multiplier", minval=0.5, step=1)

smaPeriod = input.int(100, title="SMA Period", minval=1)

takeProfitPercent = input.float(1, title="Take Profit (%)", minval=0.1) / 100
stopLossPercent = input.float(3, title="Stop Loss (%)", minval=0.1) / 100


tema(src, length) =>
    ema1 = ta.ema(src, length)
    ema2 = ta.ema(ema1, length)
    ema3 = ta.ema(ema2, length)
    3 * (ema1 - ema2) + ema3

tema1 = tema(srcShort, short)
plot(tema1, color=color.new(color.red, 0), linewidth=2)

tema2 = tema(srcLong, long)
plot(tema2, color=color.new(color.blue, 0), linewidth=2)

tema3 = tema(srcLong2, long2)
plot(tema3, color=color.new(color.green, 0), linewidth=2)

// Custom ATR calculation with EMA smoothing
atr_ema(src, length) =>
    trueRange = math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
    emaTrueRange = ta.ema(trueRange, length)
    emaTrueRange

// Calculate ATR with EMA smoothing
atr = atr_ema(close, atrLength)

// Calculate Supertrend
var float up = na
var float dn = na
var bool uptrend = na
up := na(up[1]) ? hl2 - (mult * atr) : uptrend[1] ? math.max(hl2 - (mult * atr), up[1]) : hl2 - (mult * atr)
dn := na(dn[1]) ? hl2 + (mult * atr) : uptrend[1] ? hl2 + (mult * atr) : math.min(hl2 + (mult * atr), dn[1])
uptrend := na(uptrend[1]) ? true : close[1] > dn[1] ? true : close[1] < up[1] ? false : uptrend[1]

// Calculate SMA
sma = ta.sma(tema1, smaPeriod)

// Heikin-Ashi Close
haTicker = ticker.heikinashi(syminfo.tickerid)
haClose = request.security(haTicker, timeframe.period, close)


// Trend determination using Heikin-Ashi Close
longC = tema1 > tema2 and tema1 > tema3 and uptrend and tema1 > sma and haClose > haClose[1]
shortC = tema1 < tema2 and tema1 < tema3 and not uptrend and tema1 < sma and haClose < haClose[1]


alertlong = longC and not longC[1]
alertshort = shortC and not shortC[1]

useDateFilter = input.bool(true, title="Begin Backtest at Start Date",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2023"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

inTradeWindow = true

stopLossLevelLong = close - atr * mult
stopLossLevelShort = close + atr * mult
longTakeProfitLevel = close * (1 + takeProfitPercent)
longStopLossLevel = close * (1 - stopLossPercent)
shortTakeProfitLevel = close * (1 - takeProfitPercent)
shortStopLossLevel = close * (1 + stopLossPercent)



if inTradeWindow and longC
    strategy.entry('Long', strategy.long, comment='Long')
    strategy.exit("TP Long", "Long", limit=longTakeProfitLevel, stop=longStopLossLevel, comment="TP/SL Long")

if inTradeWindow and shortC
    strategy.entry('Short', strategy.short, comment='Short')
    strategy.exit("TP Short", "Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel, comment="TP/SL Short")

// Alerts

alertcondition(longC, title='Long', message=' Buy Signal ')
alertcondition(shortC, title='Short', message=' Sell Signal ')