
Die Strategie verwendet die Kombination von Wave Channel-Indikatoren und Kapitalfluss-Indikatoren, um die Trendrichtung zu erkennen und die Trends zu verfolgen. Die Strategie läuft in 15-Minuten-Zeiträumen, um die Preistrendrichtung durch die Wave Channel zu bestimmen, und die Kapitalfluss-Indikatoren werden dann zur Trendbestätigung verwendet, um die Überschneidung der Kurzlinie zu verfolgen.
Der WaveTrend-Indikator kann die Trendrichtung des Preises effektiv erkennen. Er besteht aus der Kanalmittellinie, dem Kanalmittelpreis und dem Kanalindex. Die Kanalmittellinie ist der Index-Moving Average der Preise, der die Preisentwicklung widerspiegelt.
Der Kapitalflussindex (CMF) beurteilt die Ein- und Ausflüsse von Kapital und bestätigt die Tendenz. Der Index basiert auf der Akkumulations-/Auszahlungslinie nach der Transaktionsmenge und spiegelt die Kräfteverhältnisse zwischen den Käufern und Verkäufern wider. Werte in der Nähe von 0 zeigen ein Gleichgewicht zwischen den Ein- und Ausflüssen von Kapital; niedriger als 0 bedeutet einen Kapitalfluss, höher als 0 bedeutet einen Kapitalfluss.
Diese Strategie läuft in 15-Minuten-Zyklen, wobei die Richtung der Kursentwicklung anhand der Wave-Channel-Indikatoren ermittelt und anschließend mit Hilfe der Cashflow-Indikatoren bestätigt wird, um den Trend zu verfolgen. Insbesondere, wenn der Wave-Channel-Indikator-Channel-Index niedriger als 60 ist und der Cashflow-Indikator kleiner als -0.2 ist, wird ein Plus getätigt.
Die Risiken können auf folgende Weise gelöst werden:
Die Strategie nutzt die Wave Channel-Indikatoren, um die Trendrichtung zu bestimmen, und die Kapitalfluss-Indikatoren zur Bestätigung, um überkurze Trendverfolgungsoperationen zu realisieren. Der Vorteil der Strategie ist, dass die Indikatorenportfolio vernünftig und effektiv ist, und der 15-Minuten-Zyklus ist besser geeignet für Kurzlinie-Operationen. Es gibt jedoch auch Risiken, wie z. B. ungenaue Indikatorsignale, zu kurze Haltedauer usw. In Zukunft kann die Strategie durch Verlustminderung, Parameteroptimierung, erhöhte Signalfilterung usw. weiter optimiert werden, um die Stabilität und Ertragsrate der Strategie zu 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))