この戦略は,トレンドを脱する合成価格 (Detrended Synthetic Price,DSP) に基づく双均線取引戦略である.DSPは,実際の価格支配周期と同期する関数であり, 1/4サイクルEMAを1/2サイクルEMAから引いて計算することによって得られる.DSPが軌道に乗るか,軌道下を突破するときに,一方的な取引が行われる.
価格を計算する1/2周期HL平均値xHL2。
長さのパラメータに基づいてxHL2の1/4周期EMA ((xEMA1) と1/2周期EMA ((xEMA2) を計算する.
xEMA1を減算してxEMA2を計算すると,脱トレンド合成価格DSP。が得られる.
上下軌道パラメータを設定し,DSP上上線時に多し,下下線時に空にする.
リバースパラメータの切り替えで多空方向を行うことができる.
この戦略の利点は以下の通りです.
DSPは価格主導のサイクルを捉え,二次周期に誤導されないようにする.
双EMA設計は,主導回路の変化を効果的に追跡する.
鉄道の上下は簡単で,過度な取引は避けられます.
多空方向に切り替える便利で,異なる市場環境に対応する.
複雑なパラメータの最適化を必要とせず,シンプルで実用的です.
この戦略の主なリスクは
DSPサイクルが正しく設定されず,主導回路が逃れている可能性があります.
軌道上下幅の最適化が必要で,そうでなければ,取引が頻度が高い可能性があります.
固定サイクルの設計で,急激に変化する市場への適応性が低い.
DSPの取引のみで,変動する市場の反復の交差錯誤に容易である.
ストップ・ロスを考慮していないため,大きな損失のリスクがあります.
この戦略は以下の方向から最適化できます.
オプティマイズパラメータ,最適な周期パラメータの組み合わせを探します.
波動率に基づいた動的な上下軌道設定を追加します.
トレンドと波動率の指標を組み合わせてフィルタリングし,偽信号を減らす.
モバイルストップまたは追跡ストップを追加してリスクを制御する.
共通性を評価する多種多様性パラメータの調整を行う.
機械学習のアルゴリズムを追加し,DSPサイクルを自律的に最適化します.
この戦略は全体的に非常に簡潔で実用的な二均線取引戦略である.これは合理的な周期分析に基づいており,DSPによって主導サイクルを効果的に追跡する.パラメータ最適化,ストップダストメカニズム,フィルタリング条件などの改善により,より信頼性の高い量化取引戦略になることができる.
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/03/2017
// Detrended Synthetic Price is a function that is in phase with the
// dominant cycle of real price data. This DSP is computed by subtracting
// a half-cycle exponential moving average (EMA) from the quarter cycle
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP")
Length = input(14, minval=1)
SellBand = input(25)
BuyBand = input(-25)
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
hline(SellBand, color=red, linestyle=line)
hline(BuyBand, color=green, linestyle=line)
xHL2 = hl2
xEMA1 = ema(xHL2, Length)
xEMA2 = ema(xHL2, 2 * Length)
xEMA1_EMA2 = xEMA1 - xEMA2
pos = iff(xEMA1_EMA2 > SellBand, 1,
iff(xEMA1_EMA2 < BuyBand, -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(xEMA1_EMA2, color=blue, title="D_DSP")