이것은 간단한 이동 평균 (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보다 높을 때, 짧은 엔트리 신호가 트리거됩니다.
이 전략은 일반적으로 사용되는 네 가지 기술 지표 - 이동 평균, 채널, 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)