
この戦略は,まず価格反転信号を利用して取引し,その後,トレンドフィルタリング指標と組み合わせてフィルタリングを行い,二重要因駆動を実現します. 価格反転部分は123反転取引システム,トレンドフィルタリング部分は抽出トレンド取引システム ((Extracting The Trend,ETT) を採用し,両者は二重要因駆動を形成する反転取引戦略を組み合わせます.
価格反転部分は123反転システムを使用する.このシステムは,Ulf Jensenの”私はどのように先物市場で3倍の資金を稼ぐか”の183ページに由来する.その取引シグナルの生成には以下の条件があります.
逆に,この条件を満たす場合,
上記の条件を満たす場合,出売シグナルが発生します.
この部分の反転取引システムは,価格が短期的に反転したときにその動きを捉えることを目的としている.
トレンドフィルター部分では,抽出トレンドシステム ((ETT) を使用する. ETTシステムは,業績の波と均線の組み合わせによってトレンドの方向を判断する. この戦略では,その主な役割は,価格逆転シグナルを検証し,明確なトレンドがないときに逆転操作を避けることである.
この戦略は2つの子戦略の取引シグナルを組み合わせ,最終的に二因子駆動の反転取引を実現する.
双因子組合の逆転取引戦略は,子戦略の組み合わせによって,それぞれの優位性を統合し,主に以下のように表現される.
したがって,この戦略は,トレンドの判断が正しいと仮定して,反転操作を行うため,取引システムの全体的なパフォーマンスを向上させるため,有効な反転信号を効果的にフィルターすることができます.
双要素組合せ反転取引戦略には以下のリスクがある.
上記のリスクを軽減するために,コンパイラパラメータを調整し,反転戦略とETT戦略を最適化し,判断をより正確なものにするとともに,反転取引の止損範囲を適切に緩和することを考えることができます.
この戦略は以下の点で最適化できます.
戦略的思考と主要な取引信号の論理を保持する前提で,パラメータと組み合わせで最適化することで,より良い反射結果が得られる見込みである.
双因子組合せ反転取引戦略は,価格反転信号とトレンドフィルター信号の有機的結合により,複数の因子判断に基づく取引システムを実現する.単一の反転信号と比較して,この戦略は,短期間の価格反転を確実に捕捉し,明確なトレンドシナリオの偽信号を回避することで,信号の質を向上させることができる.パラメータの最適化および他の因子を増やすことで,より良いパフォーマンスを期待できる.
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 03/08/2020
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Extracting The Trend
// The related article is copyrighted material from Stocks & Commodities Mar 2010
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
ETT(Length,Delta,Trigger) =>
pos = 0
xBandpassFilter = 0.0
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter := 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
pos :=iff(xMean > Trigger, 1,
iff(xMean < Trigger, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Extracting The Trend", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthETT = input(20, minval=1)
Delta = input(0.5)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETT = ETT(LengthETT,Delta,Trigger)
pos = iff(posReversal123 == 1 and posETT == 1 , 1,
iff(posReversal123 == -1 and posETT == -1, -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)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )