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.
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.
In Kombination mit mehreren Indikatoren wie Trends, Schwankungen und Formen kann die Genauigkeit der Beurteilung verbessert und falsche Signale vermieden werden.
Eine vernünftige Stop-Loss-Einstellung kann Gewinne sperren und einzelne Verluste wirksam begrenzen.
Die Parameter des Indikators können flexibel angepasst werden, um sich an Veränderungen am Markt anzupassen und die beste Kombination zu finden.
Durch die Einbeziehung eines Gebührenfaktors können die Rückmeldungsergebnisse der tatsächlichen Handelsleistung näher kommen.
Zu viele Kombinationen von Indikatoren können auch zu Fehleinschätzungen führen, und die Wirksamkeit der Indikatoren muss sorgfältig bewertet werden.
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.
Die Strategie muss noch über einen längeren Zeitraum und in mehreren Märkten überprüft werden, um Stabilität zu gewährleisten.
Eine Kombination aus mehreren Indikatoren bringt eine große Anzahl von Parametern mit sich, und die Optimierung aller Parameterkombinationen erfordert eine längere Zeit.
Nachprüfen Sie die tatsächliche Erhöhung der einzelnen Indikatoren und vermeiden Sie die Verwendung von überflüssigen Indikatoren.
Testparameter-Optimierungsergebnisse in mehr Märkten, um Stabilität und Zuverlässigkeit sicherzustellen.
Um die Risiken weiter zu kontrollieren, können Sie beispielsweise Stop Loss bewegen oder Stop Loss hängen.
Die Rückmessung wird durch die Einschaltung von Slip-Point-Kosten und ähnlichem verbessert.
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.
/*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 ')