섀도우 트레이딩 전략


생성 날짜: 2023-11-03 16:03:59 마지막으로 수정됨: 2023-11-03 16:03:59
복사: 0 클릭수: 986
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

섀도우 트레이딩 전략

개요

그림자 거래 전략은 K선에서 긴 하향 그림자 또는 긴 상향 그림자의 K선이 나타나는 것을 식별하여 시장이 역전될 수있는 시점을 판단합니다. 긴 하향 그림자 라인을 식별 할 때, 더 많은 것을하십시오. 긴 상향 그림자 라인을 식별 할 때, 공백하십시오. 이 전략은 주로 긴 그림자 라인이 역전되는 일반적인 법칙을 사용하여 거래합니다.

전략 원칙

그림자 거래 전략의 핵심 논리는 K선에서 나타나는 긴 상도선과 긴 하도선이다. 전략은 K선 개체 크기를 계산하여corpo그림자 크기와pinnaLpinnaS그림자 선의 크기가 개체 크기의 일정한 배가 될 때, 회전 기회가 발생할 수 있다고 생각한다. 구체적으로, 전략은 다음과 같은 단계를 포함한다:

  1. K선 엔터티 크기를 계산합니다.corpo, 즉, 오픈 가격과 클로징 가격의 절대값.
  2. 그림자 선에 대한 계산pinnaL, 즉 최고 가격과 종식 가격의 차이의 절대값.
  3. 그림자 줄을 계산합니다.pinnaS, 즉, 최저 가격과 종식 가격의 절대 값.
  4. 상상선이 실체보다 크거나 크지 않은지 판단하기 위해pinnaL > (corpo*size),size은 조정 가능한 변수입니다.
  5. 그 그림자 선이 개체의 일정한 배수보다 크는지 여부를 판단하기 위해pinnaS > (corpo*size)
  6. 위의 조건이 성립하면, 그림자 선이 나타나는 K 선이 닫힐 때, 공백을 만들거나 추가로 만들 수 있다.

이 전략은 또한 K선 변동의 크기를 판단합니다.dim최소값보다 크거나 크지 않은 경우min필터링을 통해 너무 작은 파동의 불쾌한 K선을 제거하십시오. 입구 후 스톱 손실과 스톱 탈퇴를 설정하십시오.

전략적 강점 분석

  • 그림자 회전이라는 일반적인 법칙을 이용한 거래 신호
  • 전략 논리는 간단하고 명확하며, 매개 변수 설정은 직관적이며, 쉽게 습득할 수 있습니다.
  • 입금 빈도를 조정할 수 있는 매개 변수, 거래 위험을 유연하게 제어할 수 있다
  • 추세, 지지, 저항과 같은 요소를 결합하여 더 나은 결과를 얻을 수 있습니다.

위험과 해결책

  • 긴 그림자 회전 실패, 회전 실패의 확률이 존재, 파라미터를 조정하여 위험을 줄일 수 있다
  • 트렌드를 판단하고 역동적인 동작을 피하기 위해 combination with가 필요합니다.
  • 특정 품종에 대한 최적화가 필요하며, 다른 품종에 따라 달라질 수 있습니다.
  • 다른 지표와 결합하여 진입 기회를 필터링하여 승률을 높이기 위해 수익률을 낮추는 방법

전략 최적화 방향

  • 다양한 품종의 매개 변수에 따라 최적화하여 전략의 안정성을 높인다.
  • 이동 평균 등 지표와 결합하여 추세를 판단하여 역동적인 동작을 피하십시오.
  • 전략의 효율성을 높이기 위해 초기의 고점이나 낮은 점에 대한 판단을 높여줍니다.
  • 수익성을 유지하면서 손실 위험을 최소화하기 위해 스톱 스톱 위치를 최적화하고 조정합니다.
  • 포지션 제어 최적화, 다른 품종에 대해 다른 포지션을 설정

요약하다

그림자 거래 전략은 비교적 간단하고 실용적인 짧은 선 거래 전략이다. 그것은 긴 그림자 선의 반전의 일반적인 법칙을 활용하여 거래 신호를 생성한다. 이 전략의 논리는 간단하고 구현하기 쉽고, 품종 차이에 따라 조정 및 최적화 할 수 있다. 동시에, 그림자 거래 전략에는 약간의 위험이 있으며, 추세와 다른 요소와 결합하여 필터링을 수행하여 잘못된 거래 가능성을 줄여야 한다.

전략 소스 코드
/*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)