자동 고점 및 저점 예측 및 거래 전략


생성 날짜: 2024-03-15 17:22:36 마지막으로 수정됨: 2024-03-15 17:22:36
복사: 0 클릭수: 653
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

자동 고점 및 저점 예측 및 거래 전략

개요

이 전략은 오전 9시 15분에 높은 낮은 지점을 식별하여 자동으로 과잉 포지션의 목표 가격과 중지 가격을 계산하고 조건이 충족되면 자동으로 포지션을 열습니다. 전략은 상대적으로 강한 지표 ((RSI) 를 사용하여 오버 바이와 오버 소드를 판단하고 9:15에 높은 낮은 지점을 돌파하여 진입 기회를 결정합니다.

전략 원칙

  1. 9시부터 9시 15분까지의 고도와 낮은 지점의 구간을 결정한다.
  2. 9시 15분에 기록된 최고 가격과 최저 가격은 각각 sessionHigh와 sessionLow 였습니다.
  3. 각각 다중목표 가격 ((sessionHigh+200), 공수목표 가격 ((sessionLow-200) 과 그에 따른 스톱로스 가격을 계산한다.
  4. 현재 종전 가격과 RSI 지표를 얻으십시오.
  5. 다자 상장 조건: 종결 가격 세션 하이를 돌파하고 RSI가 초과 레벨보다 크다.
  6. 공백점 포지션 개시 조건: 종결 가격이 세션 로우 아래로 떨어지고 RSI가 초매 수준보다 작다.
  7. 관련 가격을 그리며, 상장 조건에 따라 자동으로 상장 또는 공백을 열 수 있다.

우위 분석

  1. 간단하고 사용하기 쉬운: 전략은 명확한 9:15 하위 및 RSI 지표에 기반하고 논리가 명확하고 이해하기 쉽고 실행할 수 있습니다.
  2. 자동화 수준: 전략은 목표 가격과 중지 가격의 계산과 포지션 개시 조건의 판단을 내장하여 거래를 자동화 할 수 있습니다.
  3. 적시에 중지: 9:15 높낮이에 따라 중지 가격을 설정하고, 포지션을 열었을 때 명확한 중지 지점이 있어 위험을 효과적으로 제어할 수 있다.
  4. 트렌드 추적: RSI 지표를 통해 과매매를 판단하고, 트렌드 형성 초기에 개입하여 진행에 도움이 됩니다.

위험 분석

  1. 매개 변수 최적화 위험: 전략 매개 변수인 RSI의 길이와 오버 바이 오버 시드 값은 시장 특성에 따라 최적화되어야 하며, 다른 매개 변수는 다른 결과를 가져올 수 있다.
  2. 단일 지표 위험: 전략은 주로 RSI 지표에 의존하며, 특정 시장 상황에서는 지표가 실패할 수 있습니다.
  3. 상장 변동 위험: 9:15 이후의 가격 변동은 스톱로스를 유발하여 트렌드를 놓칠 수 있습니다.
  4. 포지션 관리의 부족: 전략의 부족으로 포지션에 대한 통제와 자금 관리가 부족하고, 너무 자주 포지션을 열면 추가적인 위험이 발생할 수 있다.

최적화 방향

  1. 동적 스톱: 가격 변동량이나 ATR과 같은 지표에 따라 스톱 지점에 동적으로 조정하여 가격 변화를 추적한다.
  2. 다른 지표와 결합: MACD, 평균선 시스템과 같은 다른 지표가 도입되어 트렌드 판단에 대한 인증을 형성하고, 포지션 개시 정확도를 높인다.
  3. 최적화된 입시 조건: RSI의 오버 바이 오버 소드 경계를 적응적으로 조정하여 고정 경치가 가져오는 제한을 피하십시오.
  4. 포지션 관리를 도입: 시장의 변동 상황에 따라 포지션을 제어합니다. 예를 들어, 비율 위험 모델과 같은 방법을 사용합니다.

요약하다

이 전략은 9:15의 높고 낮은 지점을 기반으로, RSI 지표를 사용하여 트렌드를 판단하고, 목표 가격과 중지 가격을 자동으로 계산하고, 포지션 개시 조건에 따라 자동으로 멀티 헤드 또는 빈 헤드 포지션을 개설한다. 전략의 논리는 간단하고, 자동화 수준이 높으며, 트렌드 상황을 신속하게 포착할 수 있다. 그러나, 전략에는 파라미터 최적화, 단일 지표 수지, 중동 및 포지션 관리와 같은 위험도 있다.

전략 소스 코드
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("9:15 AM High/Low with Automatic Forecasting", overlay=true)

// Parameters
showSignals = input(true, title="Show Signals")

// Define session time
sessionStartHour = input(9, title="Session Start Hour")
sessionStartMinute = input(0, title="Session Start Minute")
sessionEndHour = input(9, title="Session End Hour")
sessionEndMinute = input(15, title="Session End Minute")

// Calculate session high and low
var float sessionHigh = na
var float sessionLow = na
if (hour == sessionStartHour and minute == sessionStartMinute)
    sessionHigh := high
    sessionLow := low

// Update session high and low if within session time
if (hour == sessionStartHour and minute >= sessionStartMinute and minute < sessionEndMinute)
    sessionHigh := high > sessionHigh or na(sessionHigh) ? high : sessionHigh
    sessionLow := low < sessionLow or na(sessionLow) ? low : sessionLow

// Plot horizontal lines for session high and low
plot(sessionHigh, color=color.green, title="9:00 AM High", style=plot.style_stepline, linewidth=1)
plot(sessionLow, color=color.red, title="9:00 AM Low", style=plot.style_stepline, linewidth=1)

// Calculate targets and stop loss
longTarget = sessionHigh + 200
longStopLoss = sessionLow
shortTarget = sessionLow - 200
shortStopLoss = sessionHigh

// Plot targets and stop loss
plot(longTarget, color=color.blue, title="Long Target", style=plot.style_cross, linewidth=1)
plot(longStopLoss, color=color.red, title="Long Stop Loss", style=plot.style_cross, linewidth=1)
plot(shortTarget, color=color.blue, title="Short Target", style=plot.style_cross, linewidth=1)
plot(shortStopLoss, color=color.red, title="Short Stop Loss", style=plot.style_cross, linewidth=1)

// RSI
rsiLength = input(14, title="RSI Length")
overboughtLevel = input(60, title="Overbought Level")
oversoldLevel = input(40, title="Oversold Level")
rsi = ta.rsi(close, rsiLength)

// Entry conditions
longCondition = close > sessionHigh and rsi > overboughtLevel
shortCondition = close < sessionLow and rsi < oversoldLevel

// Long entry
if (showSignals and longCondition)
    strategy.entry("Long", strategy.long)

// Short entry
if (showSignals and shortCondition)
    strategy.entry("Short", strategy.short)