Diese Strategie kombiniert den WaveTrend-Indikator und den Chaikin Money Flow (CMF) -Indikator, um die Trendrichtung zu identifizieren und Trends zu verfolgen.
Der WaveTrend-Indikator kann die Trendrichtung der Preise effektiv identifizieren. Er besteht aus Kanalmitte, Kanaldurchschnitt und Kanalindex. Die Kanalmitte ist ein exponentieller gleitender Durchschnitt des Preises, der den Preistrend widerspiegelt. Der Kanaldurchschnitt ist ein gleitender Durchschnitt der Kanalmitte, der zur Lokalisierung der Kanalmitte verwendet wird. Der Kanalindex spiegelt den Abweichungsgrad des Preises von der Kanalmitte wider und erzeugt Überkauf/Überverkaufssignale.
Der CMF-Indikator kann den Geldzu- und -austrom beurteilen und Trends bestätigen. Dieser Indikator basiert auf der nach Volumen angepassten Akkumulations-/Verteilungslinie, die den Vergleich von Kauf- und Verkaufskraft widerspiegelt. Ein Wert um 0 zeigt ein Gleichgewicht zwischen Geldzu- und -austrom an. Unter 0 zeigt Geldaustrom an und über 0 zeigt Geldaustrom an.
Diese Strategie läuft in einem 15-minütigen Zeitrahmen. Zuerst wird der WaveTrend-Indikator verwendet, um die Kursentwicklungsrichtung zu bestimmen, dann wird der CMF-Indikator verwendet, um die Trends zu bestätigen. Insbesondere, wenn der WaveTrend-Kanalindex unter -60 und die CMF unter -0,2 liegt, geht es lang. Wenn der WaveTrend-Kanalindex über 60 und die CMF größer als 0,2 ist, geht es kurz. Die Ausstiegewährungen basieren hauptsächlich auf dem CMF-Indikator - es schließt eine lange Position, wenn die CMF größer als 0,18, und schließt eine kurze Position, wenn die CMF kleiner als -0,18 ist.
Lösungen:
Diese Strategie verwendet WaveTrend zur Bestimmung des Trends und CMF zur Bestätigung, für ultra-kurzfristige Trendfolgung. Ihre Vorteile liegen in einer angemessenen Indikatorkombination und effektiven Trendfolgung, mit einem 15-minütigen Zeitrahmen, der sie für den kurzfristigen Handel geeignet macht. Es gibt jedoch Risiken wie ungenaue Signale und eine zu kurze Haltezeit. Zukünftige Verbesserungen wie Stop-Loss, Parameteroptimierung und mehr Signalfilterung können seine Stabilität und Rentabilität weiter verbessern.
/*backtest start: 2023-11-08 00:00:00 end: 2023-11-15 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "CMF - WaveTrend", shorttitle = "CMF - WaveTrend", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR) //Chaikin Money Flow len = input(20, minval=1, title="Length") mas = input(title="Aggregation", defval="SUM", options=["SUM", "EMA", "WMA"]) e = input(10.0, title="Volume Exponent (0-10 reduces & 10+ increases volume effect)") p = input(false, title="Show in Percentage") mvs = input(false, "Factor in Price (Money Volume)") src=input(hlc3, title="Source for price factor") trl = min(low,close[1]), trh = max(high,close[1]) // 'true range' fixes issues caused by gaps in price wv = pow(volume,e/10.0)*(mvs ? src : 1) ad = (trh==trl ? 0 : (2*close-(trh+trl))/tr(true))*wv cmf = mas=="SUM" ? sum(ad, len)/sum(wv, len) : mas=="EMA" ? ema(ad, len)/ema(wv, len) : mas=="WMA" ? wma(ad, len)/wma(wv, len) : na cmf_p = if p 50*cmf+50 else cmf b = p ? 50 : 0 //WaveTrend n1 = input(10, "Channel Length") n2 = input(21, "Average Length") obLevel1 = input(60, "Over Bought Level 1") obLevel2 = input(53, "Over Bought Level 2") osLevel1 = input(-60, "Over Sold Level 1") osLevel2 = input(-53, "Over Sold Level 2") ap = hlc3 esa = ema(ap, n1) d = ema(abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ema(ci, n2) wt1 = tci wt2 = sma(wt1,4) // longCondition = wt1 < -60 and cmf < - 0.20 if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = wt1 > 60 and cmf > 0.20 if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) closeLongCondition = cmf_p > 0.18 ? true : false closeShortCondition = cmf_p < -0.18 ? true : false strategy.close("My Long Entry Id", when=(closeLongCondition == true)) strategy.close("My Short Entry Id", when=(closeShortCondition == true))