Die Schattenhandelsstrategie identifiziert K-Line mit langen unteren oder oberen Schatten, um potenzielle Marktumkehrmöglichkeiten zu bestimmen.
Die Kernlogik der Schattenhandelsstrategie besteht darin, lange obere und untere Schatten in K-Linien zu identifizieren.corpo
und bei den SchattenpinnaL
undpinnaS
Wenn die Größe des Schattens um einen bestimmten Multiplikator größer ist als die Größe des Körpers, wird davon ausgegangen, dass Möglichkeiten zur Umkehrung bestehen können.
corpo
, der der absolute Wert der Differenz zwischen dem Eröffnungs- und dem Schlusskurs ist.pinnaL
, der der absolute Wert der Differenz zwischen dem höchsten Preis und dem Schlusskurs ist.pinnaS
, der der absolute Wert der Differenz zwischen dem niedrigsten Preis und dem Schlusskurs ist.pinnaL > (corpo*size)
, wosize
ist ein einstellbarer Parameter.pinnaS > (corpo*size)
.Darüber hinaus prüft die Strategie auch, ob der K-Linienbereichdim
größer ist als der Mindestwertmin
Um triviale K-Linien mit einem vernachlässigbaren Bereich auszufiltern, werden Stop Loss und Take Profit für den Ausgang verwendet.
Die Schattenhandelsstrategie ist eine einfache und praktische kurzfristige Handelsstrategie. Sie erzeugt Handelssignale unter Verwendung des allgemeinen Prinzips der Schattenumkehrungen. Die Strategielogik ist einfach und einfach zu implementieren und kann je nach Produktunterschieden angepasst und optimiert werden. Gleichzeitig birgt der Schattenhandel auch bestimmte Risiken. Er muss mit Trend und anderen Faktoren für die Filtration kombiniert werden, um falsche Trades zu reduzieren.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-11 23:59:59 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Shadow Trading", overlay=true) size = input(1,type=float) pinnaL = abs(high - close) pinnaS = abs(low-close) scarto = input(title="Tail Tollerance", type=float, defval=0.0018) corpo = abs(close - open) dim = abs(high-low) min = input(0.001) shortE = (open + dim) longE = (open - dim) barcolor(dim > min and (close > open) and (pinnaL > (corpo*size)) and (open-low<scarto) ? navy : na) longcond = (dim > min) and (close > open) and (pinnaL > (corpo*size)) and (open-low<scarto) minimo=low+scarto massimo=high+scarto barcolor( dim > min and(close < open) and (pinnaS > (corpo*size)) and (high-open<scarto) ? orange: na) shortcond = (dim > min) and(close < open) and (pinnaS > (corpo*size)) and (high-open<scarto) //plot(shortE) //plot(longE) //plot(open) ss= shortcond ? close : na ll=longcond ? close : na offset= input(0.00000) DayClose = 2 closup = barssince(change(strategy.opentrades)>0) >= DayClose longCondition = (close > open) and (pinnaL > (corpo*size)) and (open-low<scarto) crossFlag = longcond ? 1 : 0 monthBegin = input(1,maxval = 12) yearBegin = input(2013, maxval= 2015, minval=2000) if(month(time)>monthBegin and year(time) >yearBegin) if (longcond) strategy.entry("short", strategy.short, stop = low - offset) //strategy.close("short", when = closup) shortCondition = (close < open) and (pinnaS > (corpo*size)) and (high-open<scarto) if(month(time)>monthBegin and year(time) >yearBegin) if (shortcond) strategy.entry("long", strategy.long, stop = high + offset) //strategy.close("long", when = closup) Target = input(20) Stop = input(70) //- 2 Trailing = input(0) CQ = 100 TPP = (Target > 0) ? Target*10: na SLP = (Stop > 0) ? Stop*10 : na TSP = (Trailing > 0) ? Trailing : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)