
Die Strategie verwendet die doppelte und die dreifache Gewichtung, kombiniert mit der Zufälligkeit, um eine stabilere und zuverlässigere Trendverfolgungsstrategie zu bilden. Die Hauptidee ist, dass die Gewichtung ein Handelssignal aussendet, wenn ein Gold- oder Todesfork auftritt. Die Zufälligkeit wird verwendet, um Überkauf und Überverkauf zu bestimmen, um falsche Signale bei starken Marktschwankungen zu vermeiden.
Die Strategie besteht aus vier Teilen:
Doppel-Evenline-Indikator: Der Index-Moving-Average ((EMA) wird für 50 und 100 Zyklen berechnet und erzeugt ein Kaufsignal, wenn der kurzfristige EMA über dem langfristigen EMA liegt, und ein Verkaufssignal, wenn er über dem langfristigen EMA liegt.
Drei Indikatoren: Der Index-Moving-Average wird für 50-, 100- und 200-Zyklen berechnet, um die Richtung des Markttrends zu bestimmen. Es handelt sich um einen Mehrkopfmarkt, wenn 50EMA> 100EMA> 200EMA, und um einen Leerkopfmarkt, wenn 50EMA < 100EMA < 200EMA.
Zufällige Indikator: Berechnung der 6-Tage-K-Werte und D-Werte des RSI, um Überkauf und Überverkauf zu bestimmen.
Handelssignale: Der Markt entspricht dem Mehrkopf- oder Hohlkopf-Zustand der Dreiecks-Mittellinie nur, wenn der Binär-Gleichgewicht-Indikator gleichzeitig ein Signal erzeugt, und ein echter Handelsbefehl wird nur dann ausgesprochen, wenn der Zufallsindikator keinen Überkauf-Überverkauf zeigt.
Diese Strategie kombiniert die Vorteile von mittlerer Linie und Zufallsindikatoren. Sie berücksichtigt sowohl die Richtung der Trends als auch die Überkauf- und Überverkaufssituation des Marktes bei der Ausgabe von Handelssignalen, wodurch Geräusche besser gefiltert und eindeutiger Trends verfolgt werden können. Darüber hinaus verwendet sie drei Index-Gleichlinien, um die Gesamttrends zu beurteilen und die Signale zuverlässiger zu machen.
Die größte Gefahr dieser Strategie besteht darin, dass sie auf Indikatoren angewiesen ist, die leicht dazu führen können, dass der Handel fehlschlägt, wenn die Indikatoren falsche Signale senden. Darüber hinaus kann es sein, dass kurzfristige Chancen verpasst werden, wenn die langen Periodenachschnitte verwendet werden, um die Gesamttrends zu beurteilen. Die wichtigsten Risiken sind:
Optimierung der Parameter des Indikators, Anpassung der Periodenzusammenstellung der doppelten und der dreifachen Durchschnittslinie, um sie besser an die Merkmale des Marktes anzupassen.
In Kombination mit weiteren Indikatoren kann ein CANCEL-Operation durchgeführt werden, um den aktuellen Handel zu unterbrechen, wenn der Markt nach einer starken Schwankung beurteilt wird.
Kurzfristige Gelegenheiten in langfristigen Märkten zu nutzen, um Gewinne zu erzielen.
Die Strategie kann vor allem in folgenden Bereichen optimiert werden:
Anpassung der periodischen Parameter der doppelten und der dreiseitigen Durchschnittslinie zur Optimierung der Indikatoren an die Merkmale des Marktes.
Um ein falsches Signal aus der Preisunregelmäßigkeit zu vermeiden, werden Indikatoren wie VOLUME und MACD eingesetzt.
Der Trend wird besser durch die Verwendung von Candle-Modus bestätigt, um Fehlsignale nach kurzfristigen Rückzügen zu vermeiden.
Um die Anpassungsfähigkeit der Strategien zu überprüfen, werden weitere Varianten wie Aktien, Devisen usw. eingesetzt.
In Kombination mit dem VIX-Indikator wird die Gesamtmarktfluktuation beurteilt und die Größe der Positionen kontrolliert.
Die Strategie nutzt die Doppel-Gleichgewichts-Indikatoren, um Handelssignale zu senden, die Drei-Gleichgewichts-Indikatoren und die Zufalls-Indikatoren, um Hilfsurteile zu treffen, um eine stabilere Trendverfolgungsstrategie zu erstellen. Es ist einfach zu verstehen, leicht umzusetzen, hat eine hohe Übereinstimmung mit den Markteigenschaften, die Erträge sind stabiler und ist eine empfehlenswerte quantitative Strategie.
/*backtest
start: 2023-12-07 00:00:00
end: 2023-12-12 08:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='5212 EMA Strategy', shorttitle='5212 EMA', overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=false)
//**Backtest Date sof
useStartPeriodTime = input.bool(true , 'Start Date & Time' , group='Date Range' , inline='Start Period')
startPeriodTime = input(timestamp('16 Apr 2021') , '' , group='Date Range' , inline='Start Period')
useEndPeriodTime = input.bool(false , 'End Date & Time' , group='Date Range' , inline='End Period')
endPeriodTime = input(timestamp('31 Dec 2222') , '' , group='Date Range' , inline='End Period')
enableHighlight = input.bool(false , 'Highlight' , group='Date Range' , inline='Highlight')
highlightType = input.string('Anchors' , '' , group='Date Range' , inline='Highlight' , options=['Anchors', 'Background'])
highlightColor = input.color(color.white , '' , group='Date Range' , inline='Highlight')
start = useStartPeriodTime ? startPeriodTime >= time : false
end = useEndPeriodTime ? endPeriodTime <= time : false
calcPeriod = true
// var line startAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width=2)
// var line endAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width=2)
// useBgcolor = false
// if enableHighlight
// if highlightType == 'Anchors'
// if useStartPeriodTime
// line.set_xy1(startAnchor, startPeriodTime, low)
// line.set_xy2(startAnchor, startPeriodTime, high)
// if useEndPeriodTime
// line.set_xy1(endAnchor, calcPeriod ? time : line.get_x1(endAnchor), low)
// line.set_xy2(endAnchor, calcPeriod ? time : line.get_x1(endAnchor), high)
// if highlightType == 'Background'
// useBgcolor := true
// useBgcolor
// bgcolor(useBgcolor and calcPeriod ? color.new(highlightColor,90) : na, editable=false)
//**Backtest Date eof
src =input(close , 'Source' , group='Support')
showEMA = input(true , 'Show EMA' , group='Support')
//**Stochastic RSI sof
smoothK = input.int(6 , "K" , group='Stochastic RSI' , minval=1)
smoothD = input.int(6 , "D" , group='Stochastic RSI' , minval=1)
lengthRSI = input.int(28 , "RSI Length" , group='Stochastic RSI' , minval=1)
lengthStoch = input.int(28 , "Stoch Length" , group='Stochastic RSI' , minval=1)
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)
//**STochastic RSI eof
//** EMA sof
emain01 = input.int(50 , "EMAma Girang" , group='Moving Average Exponential' , minval=1)
emain02 = input.int(100 , "EMAma Muda" , group='Moving Average Exponential' , minval=1)
emain03 = input.int(200 , "EMAma Tua" , group='Moving Average Exponential' , minval=1)
ema01 = ta.ema(src, emain01)
ema02 = ta.ema(src, emain02)
ema03 = ta.ema(src, emain03)
plot(showEMA ? ema01 : na, 'EMAma Girang' , color = color.new(color.orange, 0))
plot(showEMA ? ema02 : na, 'EMAma Muda' , color = color.new(color.blue, 0))
plot(showEMA ? ema03 : na, 'EMAma Tua' , color = color.new(color.red, 0))
//** EMA eof
//**Condition sof
emaLong = ema01 > ema02 and ema02 > ema03 and low > ema03
emaShort = ema01 < ema02 and ema02 < ema03 and high < ema03
longCond = ta.crossover(k,d) and k <= 23 and emaLong
shortCond = ta.crossunder(k,d) and k >= 77 and emaShort
longClose = ta.crossunder(k,d) and k <= 77
shortClose = ta.crossover(k,d) and k >= 23
longCross = ta.crossover(ema01, ema02)
shortCross = ta.crossunder(ema01, ema02)
//**Condition eof
//**Strategy sof
if calcPeriod and longCond
strategy.entry('long', strategy.long, when=longCond, comment='EN Long')
strategy.close('long', when=shortClose, comment='EX Long')
strategy.close('long', when=shortCross, comment='MD Short')
if calcPeriod and shortCond
strategy.entry('short', strategy.short, when=shortCond, comment='EN Short')
strategy.close('short', when=longClose, comment='EX Short')
strategy.close('short', when=longCross, comment='MD Long')
if calcPeriod == false and ta.crossover(ema01, ema02) or ta.crossunder(ema01, ema02)
strategy.cancel('long')
strategy.cancel('short')
//**Strategy eof
//**Label sof
entryText = str.tostring(strategy.position_avg_price, '##.###')
longText = 'Long Entry : ' + entryText
shortText = 'Short Entry : ' + entryText
noTrade = 'Sleeping Mode'
LongTrade = strategy.position_size > 0
ShortTrade = strategy.position_size < 0
Tekslabel = LongTrade ? longText : ShortTrade ? shortText : noTrade
xPosition = timenow + math.round(ta.change(time)*1)
yPosition = ta.highest(1)
labelColor = LongTrade ? color.new(color.aqua, 0) : ShortTrade ? color.new(color.red, 0) : color.new(color.gray, 0)
textColor = LongTrade ? color.new(color.black, 0) : ShortTrade ? color.new(color.white, 0) : color.new(color.white, 0)
// lab_l = label.new(
// xPosition, yPosition, Tekslabel,
// color=labelColor,
// textcolor=textColor,
// style = label.style_label_left,
// textalign=text.align_left,
// xloc=xloc.bar_time, yloc = yloc.price)
// label.delete(lab_l[1])
//**Strategy eof