이동평균선과 지지선, 저항선을 기반으로 한 일본식 캔들스틱 패스트갭 전략


생성 날짜: 2023-12-27 15:27:45 마지막으로 수정됨: 2023-12-27 15:27:45
복사: 0 클릭수: 617
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

이동평균선과 지지선, 저항선을 기반으로 한 일본식 캔들스틱 패스트갭 전략

개요

이 전략은 일본 ?? 기술 분석에 기반한 빠른 점프 전략이며, 동선 지표와 지지 저항 지표와 결합하여 추세와 위치를 판단한다. 주요 아이디어는 동선과 동선 지표가 확인된 후 가격이 빠르게 점프하고 빠르게 멈추는 것을 기다리는 것이다.

전략 원칙

이 전략은 길이 20의 간단한 이동 평균 SMA와 길이 200의 지수 이동 평균 EMA를 사용하여 트렌드 방향을 판단한다. 가격이 상승 추세에 있을 때 (SMA는 EMA 위에), 그리고 현재 일본 ?? 실물 종료 가격이 개시 가격보다 높을 때 (백 실물), 다면 세력이 증가하는 것을 나타냅니다. 가격이 하향 추세에 있을 때 (SMA는 EMA 아래에), 그리고 현재 일본 ?? 실물 종료 가격이 개시 가격보다 낮을 때 (검은 실물), 공백 세력이 증가하는 것을 나타냅니다.

동향과 힘이 확인된 상태에서, 이 전략은 가격이 빠르게 뛰어내리고, 진입할 것을 기다리고 있다. 이른바, 폭격 폭격은 가격 폭격이 필터링이 미리 설정한 세 개의 ATR 채널들 중 첫 번째 채널 라인인 (200일 ATR과 계수를 기준으로 계산된 채널) 에서 두 번째 채널 라인 안에 진입하는 것이다. 이것은 높은 확률의 돌파 신호이다.

진입 후, 스톱 또는 스로드 규칙은 매우 간단하다. 가격이 통로의 외곽을 만지면 즉시 스톱 또는 스로드를 한다. 이것은 전략의 빠른 수익을 보장한다.

전략적 이점

이 전략의 가장 큰 장점은 수익을 빨리 보존하는 것이다. 빠른 공중으로 접근하는 방법을 사용하여 여러 차례의 포지션을 조정하는 것을 피한다. 통로 돌파가 초래하는 경향 가속 효과는 짧은 시간에 더 많은 돈을 얻을 수 있다.

긴 라인 보유에 비해, 이렇게 효율적인 공평 포지션 방법은 전략의 공백 포지션을 현저하게 감소시키고, 자금 사용 효율성을 더욱 향상시킵니다. 또한, 신속한 중지 중지 손실 메커니즘은 단독 손실을 효과적으로 제어 할 수 있습니다.

전략적 위험

이 전략은 주로 평균선 지표에 의존하여 트렌드 방향을 판단하며, 회귀와 변동의 위험이 있습니다. 가격이 통로의 내부에서 변동할 때, 초소형 선은 역으로 입장을 개설하고 손실을 초래할 수 있습니다.

또한, 이 전략은 기술 지표에 지나치게 의존하고, 기본 사항과 주요 사건 분석을 결합하지 않는다. 블랙 스완 사건이 발생하면 기술 지표 QIAN이 무효화되고, 전략은 큰 손실을 입을 수 있다.

리스크를 제어하기 위해 채널 범위를 적절히 넓히고 포지션 개설 횟수를 줄일 수 있습니다. 또는 포지션 관리 모듈을 추가하여 자금 규모에 따라 단일 포지션을 동적으로 조정할 수 있습니다.

전략 최적화

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 포지션 관리 모듈을 추가한다. 계좌 자금 규모에 따라 각 포지션 개시 수를 동적으로 조정하고, 단위 손실 비율을 제어한다.

  2. 기초적인 필터를 추가한다. 기술 지표가 포지션 개설 조건을 유발할 때, 회사의 기초적인 요소와 중요한 사건을 판단하고, 변동을 피한다.

  3. 주식 풀 관리와 함께 ᆞ 주식 선별 규칙을 설정하고, 주식 풀을 동적으로 조정한다. ᆞ 다양한 단계에서 최적의 주식 풀을 선택하여 안정성을 높인다.

  4. 기계 학습 모델과 결합 AI를 통해 트렌드 및 핵심 가격 지점을 예측하여 통로 범위 및 포지션 개시 시간을 결정하는 데 도움을줍니다.

요약하다

이 전략은 간결하고 효율적인 관점이다. 평균선을 사용하여 큰 추세를 판단하고, 일본 은 힘 방향을 판단하고, 빠른 점프 입장을 취하고, 빠른 스톱 스톱 손실을 취한다. 단기간에 이익을 얻을 수 있으며, 고주파 거래에 적합하다. 그러나 또한 회수 및 불확실성의 위험이 있습니다. 지속적인 최적화를 통해 전략은 다양한 시장 환경에서 안정적으로 작동 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Kana with S/R Strategy", title = "KANA with S/R", overlay=true)

len = input(20, minval=1, title="Length")
multiplier1 = input(1, minval=1, title="multiplier1")
multiplier2 = input(2, minval=1, title="multiplier2")
multiplier3 = input(3, minval=1, title="multiplier3") 
srTimeFrame = input(240, minval=1, title="Support Resistance TimeFrame")
useSR = input(true, type = bool, title="Use Support/Resistance")
tpPercent = input(0.5, type=float, title = "Take Profit Percent")
useTP = input(false, type=bool, title = "Use Take Profit")
tp = (close * tpPercent / 100) / syminfo.mintick

src = input(close, title="Source")
mid = sma(src, len)
plot(mid, title="SMA", color=blue)

trend = ema(close, 200)
plot(trend, title="Trend", color=green)


upper1 = mid + atr(200) * multiplier1
upper2 = mid + atr(200) * multiplier2
upper3 = mid + atr(200) * multiplier3

lower1 = mid - atr(200) * multiplier1
lower2 = mid - atr(200) * multiplier2
lower3 = mid - atr(200) * multiplier3

plot(upper1, color = orange)
plot(upper3, color = red)

plot(lower1, color = orange)
plot(lower3, color = red)

haClose = request.security(heikinashi(syminfo.tickerid), timeframe.period, close)
haOpen = request.security(heikinashi(syminfo.tickerid), timeframe.period, open)

resistance = request.security(syminfo.tickerid,tostring(srTimeFrame), high)
support  = request.security(syminfo.tickerid,tostring(srTimeFrame), low)
rsPos = (close - support[srTimeFrame]) / (resistance[srTimeFrame] - support[srTimeFrame])

MACD = ema(close, 120) - ema(close, 260)
aMACD = ema(MACD, 90)
hisline = MACD - aMACD

longCondition = (mid > trend) and (haOpen[1] < haClose[1]) and (mid > mid[1]) and (close < upper1) and hisline > 0 and (useSR == true ? (rsPos > 100) : true)
shortCondition = (mid < trend) and (haOpen[1] > haClose[1]) and (mid < mid[1]) and (close > lower1) and hisline < 0 and (useSR == true ? (rsPos < 0) : true)

longExit = (close > upper3 ) or (close < lower2)
shortExit = (close < lower3) or (close > upper2)

if (longCondition)
    strategy.entry("Long", strategy.long)
    if (useTP)
        strategy.exit("Exit Long", "Long", profit = tp)
        
if (longExit)
    strategy.close("Long")
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    if (useTP)
        strategy.exit("Exit Short", "Short", profit = tp)
    
if (shortExit)
    strategy.close("Short")