양적 거래 가격 돌파 전략

저자:차오장, 날짜: 2023-12-22 12:42:15
태그:

img

전반적인 설명

이것은 간단한 이동 평균 (SMA), 기하급수적인 이동 평균 (EMA), 켈트너 채널, MACD 지표 및 스토카스틱 오시레이터에 기반한 단기적인 양적 거래 전략입니다. 그것은 Keltner 채널, MACD 및 스토카스틱에서 긴 및 짧은 신호와 결합하여 SMA 및 EMA의 가격 돌파구를 사용하여 거래 입출을 자동화합니다.

전략 원칙

이 전략은 이중 이동 평균 라인을 구축하기 위해 25 기간 SMA, 200 기간 EMA를 사용합니다. 가격이 이중 이동 평균을 상향으로 돌파하면 구매 신호가 생성됩니다. 가격이 이중 이동 평균을 하향으로 돌파하면 판매 신호가 생성됩니다.

동시에, 이 전략은 10주기 켈트너 채널을 사용한다. 채널 상단 및 하단 밴드의 돌파도 보조 신호로 작용한다. MACD 지표는 빠른 선, 느린 선 및 히스토그램으로 거래 신호를 생성한다. 스토카스틱 오시레이터는 또한 %K 선과 %D 선의 황금 십자 및 죽은 십자로 긴 및 짧은 신호를 형성한다.

구체적으로, 닫는 가격이 SMA와 EMA 둘 다 이상이고, 켈트너 채널 내에서 MACD 히스토그램이 음수이고, 스토카스틱 %K가 50보다 낮을 때, 긴 엔트리 신호가 트리거됩니다. 닫는 가격이 SMA와 EMA 둘 다 아래에 있고, 켈트너 채널 내에서 MACD 히스토그램이 긍정적이고, 스토카스틱 %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)


더 많은