La stratégie de négociation d'ombre identifie la ligne K avec des ombres inférieures ou supérieures longues pour déterminer les opportunités potentielles d'inversion du marché.
La logique de base de la stratégie de négociation d'ombres est d'identifier les ombres supérieures et inférieures longues dans les lignes K. La stratégie calcule la taille du corps de la ligne K.corpo
et par les ombres,pinnaL
etpinnaS
Lorsque la taille de l'ombre est supérieure à la taille du corps d'un certain multiplicateur, il considère qu'il peut y avoir des opportunités d'inversion.
corpo
, qui est la valeur absolue de la différence entre le prix d'ouverture et le prix de clôture.pinnaL
, qui est la valeur absolue de la différence entre le prix le plus élevé et le prix de clôture.pinnaS
, qui est la valeur absolue de la différence entre le prix le plus bas et le prix de clôture.pinnaL > (corpo*size)
, oùsize
est un paramètre réglable.pinnaS > (corpo*size)
.En outre, la stratégie vérifie également si l'intervalle de la ligne Kdim
est supérieure à la valeur minimalemin
Pour filtrer les lignes K triviales avec une plage négligeable, on utilise le stop loss et le take profit pour sortir.
La stratégie de négociation à l'ombre est une stratégie de négociation à court terme simple et pratique. Elle génère des signaux de négociation en utilisant le principe général des inversions d'ombres. La logique de la stratégie est simple et facile à mettre en œuvre, et peut être ajustée et optimisée en fonction des différences de produit. En même temps, le trading à l'ombre comporte également certains risques. Il doit être combiné avec la tendance et d'autres facteurs de filtration pour réduire les faux trades. Lorsqu'il est utilisé correctement, le trading à l'ombre peut devenir une composante efficace dans un système de trading quantitatif.
/*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)