
Die MyQuant-Strategie zur Trenderkennung ist eine Strategie für den täglichen Bitcoin-Handel. Die Strategie identifiziert Markttrends durch die Berechnung des Moving Averages des Preises und seiner Primär- und Sekundärderivate und trifft auf diese Grundlage Kauf- und Verkaufsentscheidungen.
Die Strategie berechnet zunächst den Adaptive Moving Average (ALMA) des Preises und seine Primär- und Sekundärleiter. Primärleiter spiegeln die Geschwindigkeit der Preisänderung wider, Sekundärleiter die Kurskurve. Nach den Werten der Primär- und Sekundärleiter wird beurteilt, ob sich die Preise derzeit in einer Aufwärts-, Abwärts- oder Schwankungsphase befinden.
Die Strategie basiert auf folgenden Kennzahlen:
Wenn die Kaufbedingungen erfüllt sind, wird die Anzahl der gekauften Aktien nach CAUSED.Accumulation/Distribution Bands und Caused Exposure Top and Bottom Finder Signalen berechnet. Wenn die Verkaufsbedingungen erfüllt sind, wird die gesamte Position verkauft.
Die Strategie kombiniert Trend- und Indikator-Beschlüsse, um die Wendepunkte der Markttrends effektiv zu identifizieren. Die Verwendung von Preis-Erst- und Zweitstufengriffen zur Trend-Beschlüsse, um die Auswirkungen von Preisschwankungen zu vermeiden und die Signale klarer zu machen. Im Vergleich zu den üblichen Moving Average-Strategien hat die Strategie einen höheren Vorteil bei der Entscheidungsgenauigkeit.
Die Strategie ist sehr sensibel für die Wahl der Handelszeiträume und die Anpassung der Parameter. Wenn die Zeiträume nicht richtig ausgewählt werden und keine wichtigen Preiswendepunkte abdecken, kann dies zu einer schlechten Strategie führen. Wenn die Indikatorparameter nicht richtig eingestellt sind, werden die Kauf- und Verkaufssignale durch mehr Geräusche beeinflusst, was die Strategie beeinflusst.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Die MyQuant-Strategie zur Trenderkennung identifiziert die Markttrends von Bitcoin durch die Berechnung von First- und Second-Class-Derivaten an den adaptiven Moving Averages des Preises und trifft entsprechende Kauf- und Verkaufsschlüsse. Die Strategie wird in Kombination mit mehreren Indikatoren beurteilt und verhindert, dass das Signal durch übermäßigen Lärm gestört wird. Die Wirksamkeit der Strategie kann durch weitere Optimierung der Zeit und der Parameter verbessert werden.
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © spacekadet17
//
//@version=5
strategy(title="Trend Identifier Strategy", shorttitle="Trend Identifier Strategy", format=format.price, precision=4, overlay = false, initial_capital = 1000, pyramiding = 10, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.03)
//start-end time
startyear = input.int(2020,"start year")
startmonth = input.int(1,"start month")
startday = input.int(1,"start day")
endyear = input.int(2025,"end year")
endmonth = input.int(1,"end month")
endday = input.int(1,"end day")
timeEnd = time <= timestamp(syminfo.timezone,endyear,endmonth,endday,0,0)
timeStart = time >= timestamp(syminfo.timezone,startyear,startmonth,startday,0,0)
choosetime = input(false,"Choose Time Interval")
condTime = (choosetime ? (timeStart and timeEnd) : true)
// time frame?
tfc = 1
if timeframe.isdaily
tfc := 24
// indicators: price normalized alma, and its 1st and 2nd derivatives
ema = ta.alma(close,140,1.1,6)
dema = (ema-ema[1])/ema
stodema = ta.ema(ta.ema(ta.stoch(dema,dema,dema,100),3),3)
d2ema = ta.ema(dema-dema[1],5)
stod2ema = ta.ema(ta.ema(ta.stoch(d2ema,d2ema,d2ema,100),3),3)
ind = (close-ta.ema(close,120*24/tfc))/close
heat = ta.ema(ta.stoch(ind,ind,ind,120*24/tfc),3)
index = ta.ema(heat,7*24/tfc)
//plot graph
green = color.rgb(20,255,100)
yellow = color.yellow
red = color.red
blue = color.rgb(20,120,255)
tcolor = (dema>0) and (d2ema>0)? green : (dema>0) and (d2ema<0) ? yellow : (dema < 0) and (d2ema<0) ? red : (dema < 0) and (d2ema>0) ? blue : color.black
demaema = ta.ema(dema,21)
plot(demaema, color = tcolor)
//strategy buy-sell conditions
cond1a = strategy.position_size <= 0
cond1b = strategy.position_size > 0
if (condTime and cond1a and ( ( ((tcolor[1] == red and demaema<0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == yellow and demaema>-0.02) ) and tcolor == green) or (tcolor[1] == red and tcolor == blue and demaema < -0.01) ) and index<85 and ind<0.4)
strategy.entry("buy",strategy.long, (strategy.equity-strategy.position_size*close)/1/close)
if (condTime and cond1b and ( (((tcolor[1] == yellow and demaema > -0.02) or (tcolor[1] == blue and demaema < 0.02) or (tcolor[1] == green and demaema < 0.02)) and tcolor == red) or (tcolor[1] == green and tcolor == yellow and demaema > 0.015) ) and index>15 and ind>-0.1)
strategy.order("sell",strategy.short, strategy.position_size)