これは,単純な移動平均 (SMA),指数的な移動平均 (EMA),ケルトナーチャネル,MACD指標,ストキャスティックオシレーターに基づいた短期的定量的な取引戦略である.これは,SMAとEMAの価格突破と,ケルターチャネル,MACD,ストキャスティックからの長短信号を組み合わせて,取引エントリーと出口を自動化するために使用する.
この戦略は,25期SMAと200期EMAを使用して,二重移動平均線を構築する.価格が二重移動平均線を上向きに突破すると,購入信号が生成される.価格が二重移動平均線を下向きに突破すると,販売信号が生成される.
この戦略は,10期ケルトナーチャネルを使用している.チャネル上下帯の突破も補助信号として機能する.MACDインジケータは,高速線,スローライン,ヒストグラムで取引信号を生成する.ストカスティックオシレーターは,%K線と%D線の黄金十字と死十字で長短信号も形成する.
具体的には,閉じる価格がSMAとEMAの両方よりも高く,Keltnerチャネル内では,MACDヒストグラムがマイナスで,ストカスティック%Kが50以下である場合,ロングエントリー信号が起動する.閉じる価格がSMAとEMAの両方よりも低く,Keltnerチャネル内では,MACDヒストグラムが正であり,ストカスティック%Kが50以上である場合,ショートエントリー信号が起動する.
この戦略は,一般的に使用される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)