양적 거래 가격 돌파 전략


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

양적 거래 가격 돌파 전략

개요

이 전략은 간단한 이동 평균 ((SMA), 지수 이동 평균 ((EMA), 켈트너 채널, MACD 지표, 무작위 지표 ((Stochastic) 의 단선 정량화 거래 전략이다. 그것은 가격이 SMA와 EMA를 뚫고 나가는 방법에 따라, 켈트너 채널, MACD 지표, 스토카스틱 지표의 다공간 신호를 결합하여 자동화 된 거래 입출구를 구현한다.

전략 원칙

이 전략은 25주기 SMA, 200주기 EMA를 사용하여 쌍용 이동 평균 지표를 구성한다. 가격이 아래에서 위쪽으로 쌍용 이동 평균을 돌파 할 때 구매 신호를 생성한다. 가격이 위에서 아래로 쌍용 이동 평균을 돌파 할 때 판매 신호를 생성한다.

한편, 이 전략은 10주기를 사용하여 켈트너 통로를 구성하며, 가격 돌파 통로의 상단 및 하단 궤도도 보조 신호로 작용한다. MACD 지표는 빠른 라인, 느린 라인 및 MACD 기둥 형식을 통해 매매 신호를 발생시킨다.

구체적으로 말해서, 마감 가격이 SMA와 EMA보다 높고 Keltner 채널 안에 있을 때, MACD 기둥 그래프는 마이너스이며, Stochastic% K 값이 50보다 낮으면, 구매 신호를 발생시키고, 더 많이 한다. 마감 가격이 SMA와 EMA보다 낮고, Keltner 채널 안에 있을 때, MACD 기둥 그래프는 긍정이며, Stochastic% K 값이 50보다 높으면, 판매 신호를 발생시키고, 공백한다.

전략적 이점

  1. 이중 이동 평균을 통로 지표와 결합하여 가짜 돌파구를 효과적으로 필터링 할 수 있습니다.
  2. 다양한 기술 지표 신호를 통합하여 신호의 신뢰성을 높일 수 있다.
  3. 다공간 신호 규칙이 명확하고, 프로그램 실행 효율이 높다.
  4. 짧은 라인에서 자주 거래되는 양적 전략.

위험과 최적화

  1. 단선 거래 전략으로 거래 빈도가 너무 높을 위험이 있습니다.
  2. 하지만, 이 경우에도, 그 위험은 매우 높습니다.
  3. 변동률 지표를 추가하여 포지션 개시 및 중지 조건을 최적화 할 수 있습니다.
  4. 다양한 주기 변수의 장단점을 테스트할 수 있으며, 최적의 변수 조합을 찾는다.

요약하다

이 전략은 이동 평균, 통로 지표, MACD 지표 및 스토카스틱 지표 네 가지의 일반적인 기술 지표를 통합한다. 가격의 돌파와 불 돌파를 통해 다공간을 판단하는 것은 전형적인 짧은 라인 양적 거래 전략에 속한다. 단일 지표에 비해 여러 지표 판단을 종합적으로 사용하면 신호 정확성을 향상시킬 수 있으며 추가 테스트 및 최적화를 가치가 있다.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=5
strategy(title="Scalping Trading System Crypto and Stocks", overlay=true)
src = input(low, title="Source")

//sma and ema
len = input.int(25, minval=1, title="Length SMA" , group="Moving Averages")
len2 = input.int(200, minval=1, title="Length EMA", group="Moving Averages")

out = ta.sma(src, len)
out2 = ta.ema(src, len2)


//keltner
lengthk = input.int(10, minval=1, title="Length Keltner Channel",group="Keltner")
mult = input(2.0, "Multiplier",group="Keltner")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style",group="Keltner")
atrlength = input(14, "ATR Length",group="Keltner")

ma = ta.sma(src, lengthk)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, lengthk)
upper = ma + rangema * mult
lower = ma - rangema * mult

//stoch
periodK = input.int(10, title="%K Length", minval=1,group="Stochastic")
smoothK = input.int(1, title="%K Smoothing", minval=1,group="Stochastic")
periodD = input.int(1, title="%D Smoothing", minval=1,group="Stochastic")
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)

//macd 1
fast_length = input(title="Fast Length MACD", defval=4,group="MACD Fast")
slow_length = input(title="Slow Length MACD", defval=34,group="MACD Fast")
signal_length = input.int(title="Signal Smoothing MACD",  minval = 1, maxval = 50, defval = 5,group="MACD Fast")
sma_source = input.string(title="Oscillator MA Type MACD",  defval="EMA", options=["SMA", "EMA"],group="MACD Fast")
sma_signal = input.string(title="Signal Line MA Type MACD", defval="EMA", options=["SMA", "EMA"],group="MACD Fast")

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal




long= close > out and close < upper and close > lower and hist < 0 and k < 50 and close > out2 

short= close < out and close < upper and close > lower and hist > 0 and k > 50 and close < out2 

strategy.entry("long",strategy.long,when= long)

strategy.entry("short",strategy.short,when=short)