
双移動均線トレンド追跡戦略は,価格の二重指数移動平均を計算して,快線と慢線を形成し,両線の交差形状に基づいて価格トレンドを判断し,トレンド追跡取引を実現する.この戦略は,トレンド追跡に基づく定量取引戦略の1つです.
この戦略は,まず,価格の双指数移動平均を計算し,快線と遅線を含む. 快線は4周期,遅線は8周期のパラメータを持つ. 2つの線が交差すると,買入と売却のシグナルが生じる. 快線が下から遅線を横切ると,買入のシグナルが生じる. 快線が上から下から遅線を横切ると,売却のシグナルが生じる.
この戦略は,まず,価格の動向に従って取引することができ,トランザクションコストを回避する.次に,双移動均線は価格の部分的なノイズをフィルターし,価格の動向を順調に把握することができる.次に,この戦略のパラメータは,柔軟に最適化され,移動均線周期とMACDパラメータは,異なる品種とパラメータに適応して調整できる.最後に,戦略の論理は,シンプルで明確で,容易に理解し,実装され,取引を量化するためのアルゴリズム設計に適している.
この戦略はパラメータ最適化に依存し,パラメータ設定が不適切であれば,大量の誤信号が生じます.さらに,双移動均線は遅滞性があり,価格転換点を見逃す可能性があります.さらに,トレンド取引は,高を追いかけて下落を殺すパターンを形成しやすいため,一定のリスクがあります.さらに,取引品種の流動性および手数料は,戦略の収益にも影響を及ぼします.リスクを減らすために,パラメータを適切に最適化して,他の指標のフィルターシグナルと組み合わせて,ポジションサイズを制御できます.
この戦略は以下の点で最適化できます.
双移動平均線の周期パラメータを最適化して,最適なパラメータの組み合わせを探す
RSI,KDなどの他の指標のフィルタリング信号を追加し,信号の質を向上させる
トレンドが逆転したときに,一時的にストップするストップ・ストラテジーを増やす
市場状況に応じてポジションのサイズを動的に調整し,リスクをコントロールする
異なる取引品種のパラメータに最適化
機械学習などの高度な戦略を組み合わせて,戦略の効果を高める
この戦略は,全体として,双移動平均線に基づく簡単なトレンド追跡戦略である.戦略の考え方は明確で,実行しやすい.パラメータ調整は柔軟で,量化取引の入門戦略として適している.しかし,この戦略には,追尾の落下,信号の遅延などの問題があり,リスクを制御し,安定性を高めるためにさらに最適化する必要がある.全体として,この戦略は,初心者にとって学習アルゴリズム取引の良い機会を提供し,高度な戦略の基礎でもある.
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 12/11/2017
// The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by
// William Blau, except the SMI includes a signal line. The SMI uses double moving averages
// of price minus previous price over 2 time frames. The signal line, which is an EMA of the
// SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine
// tune these signals. The user may change the input (close), method (EMA), period lengths
// and guide values.
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// WARNING:
// - For purpose educate only
////////////////////////////////////////////////////////////
strategy(title="SMI Ergodic Oscillator")
fastPeriod = input(4, minval=1)
slowPeriod = input(8, minval=1)
SmthLen = input(3, minval=1)
TopBand = input(0.5, step=0.1)
LowBand = input(-0.5, step=0.1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xPrice = close
xPrice1 = xPrice - xPrice[1]
xPrice2 = abs(xPrice - xPrice[1])
xSMA_R = ema(ema(xPrice1,fastPeriod),slowPeriod)
xSMA_aR = ema(ema(xPrice2, fastPeriod),slowPeriod)
xSMI = xSMA_R / xSMA_aR
xEMA_SMI = ema(xSMI, SmthLen)
pos = iff(xEMA_SMI < xSMI, -1,
iff(xEMA_SMI > xSMI, 1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xSMI, color=green, title="Ergotic SMI")
plot(xEMA_SMI, color=red, title="SigLin")