그림자 거래 전략은 잠재적인 시장 반전 기회를 결정하기 위해 긴 하위 또는 상위 그림자와 K 라인을 식별합니다. 긴 하위 그림자가 확인되면 길게 이동하고 긴 상위 그림자가 확인되면 짧게 이동합니다. 전략은 주로 상거래를 위해 그림자 반전의 일반적인 원리를 사용합니다.
그림자 거래 전략의 핵심 논리는 K-라인에서 긴 상위와 하위 그림자를 식별하는 것입니다. 전략은 K-라인 몸의 크기를 계산합니다.corpo
그늘의 크기를 두고 맹세하나니pinnaL
그리고pinnaS
. 그림자의 크기가 몸의 크기를 어느 정도 더 커지면, 역행 가능성이 있다고 생각합니다. 구체적으로 전략에는 다음과 같은 단계가 포함됩니다.
corpo
이 값은 오픈 가격과 종료 가격의 절대 값입니다.pinnaL
가장 높은 가격과 닫는 가격의 절대값입니다.pinnaS
가장 낮은 가격과 가장 가까운 가격의 절대값입니다.pinnaL > (corpo*size)
, 어디size
조절 가능한 매개 변수입니다.pinnaS > (corpo*size)
.또한 전략은 K-라인 범위가dim
최소값보다 크다min
무시할 수 없는 범위의 사소한 K선을 필터링합니다.
그림자 거래 전략은 간단하고 실용적인 단기 거래 전략이다. 그림자 반전의 일반적인 원리를 사용하여 거래 신호를 생성한다. 전략 논리는 간단하고 구현하기 쉽고 제품 차이에 따라 조정 및 최적화 될 수 있다. 동시에 그림자 거래는 또한 특정 위험을 초래한다. 잘못된 거래를 줄이기 위해 트렌드와 다른 요인과 필터레이션을 결합해야합니다. 올바르게 사용하면 그림자 거래는 양자 거래 시스템의 효과적인 구성 요소가 될 수 있습니다.
/*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)