K-line 종가 롱숏 비교 및 ​​EMA 필터링을 기반으로 한 양적 거래 전략


생성 날짜: 2023-12-27 14:38:28 마지막으로 수정됨: 2023-12-27 14:38:28
복사: 1 클릭수: 755
avatar of ChaoZhang ChaoZhang
1
집중하다
1623
수행원

K-line 종가 롱숏 비교 및 ​​EMA 필터링을 기반으로 한 양적 거래 전략

전략 개요

이 전략은 K 라인 종결 가격의 공백을 EMA 필터와 비교하는 K 라인 종결 가격의 공백을 기반으로 한 양적 거래 전략이다. 이 전략은 K 라인 종결 가격의 최근 일정 기간 동안 구성된 다중 K 라인 및 공백 K 라인의 수를 통계하여 EMA 필터와 결합하여 거래 시간대에 해당하는 경우 더 많은 공백 신호를 판단한다.

2. 전략 원칙

이 전략의 핵심 논리는 통계적으로 최근 룩백 사이클에서 상향상승한 K선수 upCloseCount와 하향상승한 K선수 downCloseCount을 나타내고, 상향상승한 K선수가 많으면 다단시장으로 판단하고, 하향상승한 K선수가 많으면 공백시장으로 판단한다. 또한, EMA 지표와 결합하여 가격 트렌드를 판단하고 필터로써, 가격이 EMA보다 높을 때만 더 많은 것을 고려하고, 가격이 EMA보다 낮을 때만 공백을 고려한다. 또한, 전략은 거래 시간 1session과 2session을 설정하고, 이 두 시간 동안만 거래한다.

이 논리는 다음과 같습니다.

다중자 신호 발동 조건: inSession는 true (거래 시간 내에) 그리고 upCloseCount > downCloseCount (상승한 종결 K선 수가 많음) 그리고 close > ema (종결 가격이 EMA보다 높음) 그리고 currentSignal은 “long”이 아닌 (현재 포지션이 없다)

공수 신호 트리거 조건: inSession가 true이고 downCloseCount > upCloseCount ((상하의 클로즈카운트 K선 수가 많음) 그리고 close < ema ((클로즈카운트 가격이 EMA보다 낮음) 그리고 currentSignal가 “short”이 아닌 ((현재 포지션이 없다))

세, 전략적 장점 분석

  1. 특정 역사적 기간 동안의 K선 종식 가격의 다공간 비교를 통해 가격 추세와 시장 심리를 판단하여 특정 추세에 따른 효과를 나타냅니다.
  2. EMA와 함께 가격 추세를 필터링하여 불안정한 상황에서 잘못된 거래를 피하십시오.
  3. 특정 거래 시간대를 설정하여 주요 거래 시간대가 아닌 시끄러운 환경에서 거래하는 것을 피하십시오.
  4. 트렌드와 빈번한 거래의 균형

4 전략적 위험 분석

  1. 수평 정리 시, 종결 가격의 과잉 공평은 오해의 소지가 있으며, 불필요한 손실을 초래합니다.
  2. EMA 파라미터를 잘못 설정하면 필러 효과도 떨어질 수 있습니다.
  3. 거래시간을 잘못 설정하면 많은 거래 기회를 잃거나 잘못 거래할 수 있습니다.
  4. 이 사건으로 인한 Gap의 행태를 효과적으로 추적할 수 없습니다.

대책:

  1. 최적의 균형을 찾기 위해 EMA 변수를 최적화합니다.
  2. 거래 기간 최적화
  3. 단편적 손실을 제어하는 HTTPS 전략과 함께

다섯째, 전략적 최적화

  1. 거래 시기를 최적화하여 최적의 거래 시기를 찾습니다.
  2. EMA 주기 및 부드러움에 대한 파라미터 최적화
  3. ATR 기반의 손실 제도를 추가
  4. Gap의 위험성을 방지하기 위해 돌발사고에 대한 인식 모듈을 추가합니다.
  5. 더 나은 필터링 입시 조건을 찾기 위해 다른 지표와 조합을 고려하십시오.
  6. 다양한 품종의 성능 차이를 테스트하고, 차이에 따라 파라미터를 조정합니다.

VI. 결론

이 전략은 일정한 역사 주기 동안 K 라인 종식 가격으로 구성된 다목 및 공수 K 라인 수를 통계적으로, EMA 지표의 필터 효과와 결합하여, 설정된 특정 거래 시간대에 트렌드 신호를 식별한다. 특정 트렌드 추적 효과가 있다. 그러나 또한 특정 잘못된 거래 위험이 있으며, 매개 변수 최적화, 상쇄 전략, 필터 신호 등의 방법으로 개선해야 하며, 재측정에서 효과를 검증한다.

전략 소스 코드
/*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=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")