이동평균선 교차를 기반으로 한 양적 거래 전략


생성 날짜: 2024-01-23 11:05:50 마지막으로 수정됨: 2024-01-23 11:05:50
복사: 0 클릭수: 505
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균선 교차를 기반으로 한 양적 거래 전략

개요

이 전략은 간단한 이동 평균 (SMA) 의 금포크 사다리 원리를 이용하여 구성된다. 전략은 3일선과 5일선의 금포크를 입문 신호로, 스톱 또는 스톱을 퇴출 신호로 한다.

전략 원칙

이 전략은 주로 두 개의 SMA, 즉 3 일선과 5 일선에 기초한다. 이 중 3 일선은 단기 트렌드를 나타내고, 5 일선은 더 긴 중기 트렌드를 나타낸다. 단기 급격한 상승, 즉 3 일선에서 5 일선을 통과하면, 현재 상승세를 나타냅니다. 이 때 입장이 더 많이 이루어집니다. 반대로, 단기 급격한 하락, 즉 3 일선 아래 5 일선을 통과하면, 현재 하락세를 나타냅니다. 이 때 입장이 공백합니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 전략적 논리는 간단하고 명확하며, 이해하기 쉽고 실행하기 쉽습니다.
  2. 평균선 교차전략은 시장의 큰 경향에 대한 판단이 더 정확하며, 진입 확률이 높다.
  3. 두 개의 다른 기간의 평균선을 선택하면 시장의 변화를 더 잘 파악할 수 있습니다.
  4. 스티프 스톱 손실 메커니즘을 구현하여 손실을 효과적으로 제어합니다.

위험 분석

이 전략에는 위험도 있습니다.

  1. 더 짧은 평균주기를 사용함으로써 시장의 단기 변동에 영향을 받기 쉽기 때문에 손실을 막는 확률이 증가 할 수 있습니다.
  2. 전략은 기계화되어 있으며, 특별한 시장 상황에 맞게 조정할 수 없습니다.
  3. 큰 주기의 추세를 고려하지 않고 전략은 시장의 장기적인 하락에서 큰 손실을 입을 수 있습니다.

위험을 줄이기 위해, 진입의 평균 선수를 최적화하거나, 긴 주기 평균 선의 보조 판단을 추가하는 것을 고려할 수 있다. 또한, 정지 손실의 지점을 조정하여 실제 시장 상황에 더 적합하게 만들 수도 있다.

최적화 방향

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

  1. 더 많은 다른 주기의 평균선을 추가하여 다단계 필터를 형성하고 전략의 안정성을 향상시킵니다.
  2. 다른 기술 지표 판단, 예를 들어 MACD, 강도 지표 등에 가입을 보조한다.
  3. 큰 주기적 추세에 대한 판단에 참여하여 장기적인 하락상황에서 여전히 더 많은 입주를 피하십시오.
  4. 정지 손실의 지점을 최적화하여 시장의 실제 변동에 더 잘 적응할 수 있도록 합니다.
  5. 더 긴 재측정주기를 테스트하고, 변수 안정성을 평가한다.

요약하다

이 전략은 평선 교차 원칙에 기초하여 구성되어 있으며, 금강 입점, 정지/손실 퇴출의 전략 논리를 채택하고, 간단하고 쉽게 구현되며, 재측정 성능도 안정적이다. 더 많은 보조 기술 지표, 최적화 매개 변수 및 재측정 범위를 확장하는 등의 조치를 추가함으로써 전략의 안정성과 수익 수준을 더욱 향상시킬 수 있다.

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

//@version=3
strategy(title="Revolut v1.0", overlay=true)

// === GENERAL INPUTS ===
ATR = atr(3)
ema3 = ema(close, 3)
ema5 = ema(close, 5)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true// create function "within window of time"


// === PLOTTING ===
plot(ema3, title="Ema 3", color = white, linewidth = 2, transp=0)
plot(ema5, title="Ema 5", color = aqua, linewidth = 2, transp=0)



// === ENTRY POSITION LOGIC ===
entryCondition = crossover(ema(close, 3), ema(close, 5))
if (entryCondition)
    strategy.entry("ENTRY", strategy.long, when=window())
    

// === EXIT POSTION LOGIC ===
//strategy.exit("Take Profit", "ENTRY", profit=6, loss=5, when=window())
strategy.exit("Take Profi Or STOP", "ENTRY", profit = 6, loss = 5, when=window())
  

// #####################################
// We can start to incorperate this into the script later
// We can program a emergency exit price
//strategy.close_all()

// You can use this if you want another exit
//strategy.exit("2nd Exit", "ENTRY", profit=1500, stop=500, when=window())