ダブルリバーサルハイロー戦略


作成日: 2024-01-03 13:56:04 最終変更日: 2024-01-03 13:56:04
コピー: 0 クリック数: 581
1
フォロー
1621
フォロワー

ダブルリバーサルハイロー戦略

概要

双反転高低戦略は,二重信号を組み合わせた量化戦略である.反転に基づく日内戦略と,昨日の最高値と移動平均の差値を利用したトレンド判断戦略を融合している.この戦略は,より安定した買出信号を実現し,さらに誤った信号の発信を回避することを目的としている.

戦略原則

まず,逆転戦略部分。この戦略は,連続して2日間の閉盘価格が逆転したときに判断し,信号を形成し,同時,ランダムな指標と組み合わせて,超買い超売り状態を判断する。具体的には,連続して2日間の閉盘価格が上値から下値に転換し,急速なランダムな指標が遅いランダムな指標より高いときに売り出し信号;連続して2日間の閉盘価格が下値から上値に転換し,急速なランダムな指標が遅いランダムな指標より低いときに買い出し信号。

さらに,高低戦略部分. この戦略は,昨日の最高価格と,長さ13の指数移動平均の値の差の判断傾向を利用する. 最高価格が移動平均より高いときに買取シグナルを生成し,最高価格が移動平均より低いときに売出シグナルを生成する.

最後に,この戦略は2つのシグナルを統合する. 2つのシグナルが同時に買い信号が出るときは買取操作を行う. 2つのシグナルが同時に売り信号が出るときは売り操作を行う.

優位分析

この戦略は,ダブルシグナル指標を組み合わせて,誤った信号と不必要な取引回数を効果的に減らすことができます.反転部分は,超買い超売り現象を判断し,高殺し落下を避けることができます.高低部分は,価格傾向が現象から背き,偽突破を回避することを判断することができます.両者の判断が組み合わせられたとき,双信号が同定時にしか実際の取引信号を生じない場合のみ,信号の信頼性を大幅に高め,無効取引回数を減らすことができます.

さらに,反転部分と高低部分では,異なるタイプの指標と判断基準を使用し,両者は相互検証の効果を及ぼし,誤った信号をさらに減らすことができます.市場が特殊な状況にあるとき,単一の指標は誤った信号を発信しやすいが,判断を組み合わせると,部分的な間違いを抵消することができます.この多指標総合判断の戦略は,より信頼性の高い,より安定した取引信号を得ることができます.

リスク分析

この策略の最大のリスクは,強いトレンド市場では,継続的に合理的な片側信号が無視される可能性があるということである.傾向が非常に明白であるとき,反転部分の信号判断は誤りであり,これは高-低部分の片側信号が取引に現金化されないことにつながり得る.これは傾向牛市と熊市では特に顕著である.

さらに,パラメータ設定が不適切であることも戦略に影響を与える.反転部分のパラメータ設定は周期平均線システムを考慮し,高低部分の移動平均線周期と調整する設定が必要である.両者の周期が不適切である場合,普通に奇抜な偽信号または直接の信号がない状況が発生する.

最適化の方向

第一に,高低部分の移動平均の長さのパラメータをテストして,反転部分の周期指数とより調和させることができる.現在,高低部分の13周期指数を使用した判断は過度に敏感である可能性があり,より安定した判断を得るために,長周期を試すことができる.

第二に,反転部分も,K線実体によるテストの方法に改めることが可能であり,現在,閉盘価格のみで影響を受けやすい.実体より大きなK線の反転を考慮すると,より強いシグナル作用を持つ可能性がある.

最後に,盤に反転信号が出たときにのみ取引を検討することもできます.現在の日内ポジション方式はリスクが高いです.一時的な反転取引を採用することで,部分的なポジションリスクを回避できます.

要約する

双反転高低戦略は,複数の指標信号を統合し,買い売り信号を発信する前に二重検証が行われます.この厳格な信号フィルタリング機構は,無効信号と誤信号が実際の取引に与える影響を効果的に減らすことができます.戦略は,無効取引の頻度をうまく制御し,毎回の取引をより信頼性のあるものにし,波動的に流れていく盲目取引を避けます.パラメータを最適化することによって,またはいくつかの市場でより良いパフォーマンスを得ることができます.

ストラテジーソースコード
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/11/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
// This indicator plots the difference between the High (of the previous period)
// and an exponential moving average (13 period) of the Close (of the previous period).
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
// It buy if indicator above 0 and sell if below.
//
// 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

    
HEMA(Length) =>
    pos = 0.0
    xPrice = close  // You can use any series
    xEMA = ema(xPrice, Length)
    nRes = high[1] - nz(xEMA[1])
    pos:= iff(nRes > 0, 1,
    	   iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High - EMA Strategy", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_HEMA = input(13, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHEMA = HEMA(Length_HEMA)
pos = iff(posReversal123 == 1 and posHEMA == 1 , 1,
	   iff(posReversal123 == -1 and posHEMA == -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 )