定量的な取引価格突破戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-22 12:42:15
タグ:

img

概要

これは,単純な移動平均 (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以上である場合,ショートエントリー信号が起動する.

戦略 の 利点

  1. チャンネルインジケーターと組み合わせたダブル・ムービング・メアリーは 誤ったブレイクを効果的にフィルタリングできます
  2. 複数の技術指標からの信号を統合することで,信頼性が向上します.
  3. 明確な長/短ルールにより,プログラム実行効率が向上します.
  4. 高周波の定量取引戦略に適しています

戦略リスクと最適化

  1. 短期的な取引戦略として,高い取引頻度のリスクがあります.
  2. ストップ・ロスのメカニズムは存在せず,大きな損失リスクが生じる.
  3. 入場条件とストップ損失条件を最適化するために波動性指標を追加することを検討する.
  4. 最適な組み合わせを見つけるために異なるパラメータ期間を試験することができる.

結論

この戦略は,一般的に使用される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)


もっと