
Die Doppel-EMA-Strategie ist eine Trendverfolgungsstrategie, die die Trendrichtung des Preises erkennt, indem sie die EMAs für verschiedene Zeitspannen berechnet. Die Strategie ist einfach und praktisch und eignet sich für trendige Märkte.
Die Strategie basiert hauptsächlich auf zwei EMA-Indikatoren, einem kurzfristigen 9-Tage-EMA und einem längerfristigen 21-Tage-EMA. Ihre Kreuzung ist ein Signal für Lagerhaltung und Lagerhaltung.
Wenn die kurzfristige EMA unter der langfristigen EMA liegt, wird die Strategie als Aufwärtstrend betrachtet, und die Strategie eröffnet mehrere Aufträge und verfolgt die Preiserhöhung. Wenn die kurzfristige EMA unter der langfristigen EMA liegt, wird die Strategie als Abwärtstrend betrachtet, und die Strategie eröffnet einen freien Auftrag und verfolgt die Preiserhöhung.
Die EMA-Anzeige ist in der Lage, die Geräusche in den Preisdaten effektiv zu filtern und die Hauptrends der Preisentwicklung zu erkennen. Daher verwendet die Strategie die doppelte EMA-Anzeige als Grundlage für die Erstellung von Positionen und Positionen, um die länger andauernden Preisentwicklungsprozesse zu erfassen.
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Diese Strategie kann optimiert werden durch:
Die Doppel-EMA-Strategie ist insgesamt eine sehr praktische Trendverfolgungsstrategie. Sie ist einfach zu bedienen, leicht zu verstehen und wirkt hervorragend in stark trendigen Märkten. Die Strategie birgt jedoch auch einige Risiken, die aus mehreren Dimensionen optimiert werden können, um die Strategie-Stabilität zu verbessern.
/*backtest
start: 2023-02-21 00:00:00
end: 2024-02-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// This can only draw so many lines. Use bar replay to go back further
strategy("Strategy Lines", shorttitle="Strategy Lines", overlay=true, max_lines_count=500)
//###########################################################################################################################################
// Replace your strategy here
//###########################################################################################################################################
shortEMA = ta.ema(close, input(9, title="Short EMA Length"))
longEMA = ta.ema(close, input(21, title="Long EMA Length"))
// Entry conditions for long and short positions
longCondition = ta.crossover(shortEMA, longEMA)
shortCondition = ta.crossunder(shortEMA, longEMA)
//###########################################################################################################################################
// Strategy Lines
//###########################################################################################################################################
var timeLow = bar_index
var line li = na
var openLPrice = 0.0000
var openSPrice = 0.0000
LongWColor = input.color(color.rgb(0,255,0,0),"Long Win Color", group="Strategy Lines")
LongLColor = input.color(color.rgb(0,0,255,0),"Long Loss Color", group="Strategy Lines")
ShortWColor = input.color(color.rgb(255,255,0,0),"Short Win Color", group="Strategy Lines")
ShortLColor = input.color(color.rgb(255,0,0,0),"Short Loss Color", group="Strategy Lines")
WinFontColor = input.color(color.rgb(0,0,0,0),"Win Font Color", group="Strategy Lines")
LossFontColor = input.color(color.rgb(255,255,255,0),"Loss Font Color", group="Strategy Lines")
LinesShowLabel = input(false,"Show Labels?",group = "Strategy Lines")
// // Start new line when we go long
// if strategy.position_size >0
// line.delete(li)
// li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)
// // Start new line when we go short
// if strategy.position_size <0
// line.delete(li)
// li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)
// //Delete Lines if we don't have a position open
// if strategy.position_size ==0
// li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=color.rgb(0,0,0,100))
// line.delete(li)
if LinesShowLabel
// Short Label
if strategy.position_size>=0 and strategy.position_size[1] <0
label.new(
timeLow, na,
text=str.tostring((openSPrice-close[1])/(syminfo.mintick*10)),
color=close[1]<openSPrice?ShortWColor:ShortLColor,
textcolor=close[1]<openSPrice?WinFontColor:LossFontColor,
size=size.small,
style=label.style_label_down, yloc=yloc.abovebar)
// Long Label
if strategy.position_size<=0 and strategy.position_size[1] >0
label.new(
timeLow, na,
text=str.tostring((close[1]-openLPrice)/(syminfo.mintick*10)),
color=close[1]>openLPrice?LongWColor:LongLColor,
textcolor=close[1]>openLPrice?WinFontColor:LossFontColor,
size=size.small,
style=label.style_label_down, yloc=yloc.abovebar)
// Open long position and draw line
if (longCondition)
//strategy.entry("Long", strategy.long)
// timeLow := bar_index
// li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)
openLPrice := close
// Open short position and draw line
if (shortCondition)
//strategy.entry("Short", strategy.short)
// timeLow := bar_index
// li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)
openSPrice := close
//###########################################################################################################################################
// Strategy Execution (Replace this as well)
//###########################################################################################################################################
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)