Теневая стратегия определяет K-линию с длинными нижними или верхними тенями для определения потенциальных возможностей переворота рынка. Она длинная, когда определяется длинная нижняя тень, и короткая, когда определяется длинная верхняя тень. Стратегия в основном использует общий принцип переворота теней для торговли.
Основная логика стратегии теневой торговли заключается в определении длинных верхних и нижних теней в K-линиях.corpo
и тенями,pinnaL
иpinnaS
Когда размер тени больше размера тела на определенный мультипликатор, он считает, что могут быть возможности для обратного движения.
corpo
, что является абсолютным значением разницы между ценой открытия и ценой закрытия.pinnaL
, что является абсолютным значением разницы между самой высокой ценой и ценой закрытия.pinnaS
, что является абсолютным значением разницы между самой низкой ценой и ценой закрытия.pinnaL > (corpo*size)
, гдеsize
является регулируемым параметром.pinnaS > (corpo*size)
.Кроме того, стратегия также проверяет, если диапазон K-линииdim
превышает минимальное значениеmin
Для выхода используются стоп-лосс и прибыль.
Стратегия теневой торговли представляет собой простую и практичную краткосрочную торговую стратегию. Она генерирует торговые сигналы с использованием общего принципа теневых перемен. Логика стратегии проста и проста в реализации, и может быть скорректирована и оптимизирована в соответствии с различиями в продуктах. В то же время теневая торговля также несет определенные риски.
/*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)