循環逆転後トレンドフォロー戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月15日 17:13:18
タグ:

img

概要

この戦略は,2つの指標を組み合わせます 移動平均逆転と価格デトレンドオシレーターです 取引シグナルを生成し サイクル逆転後の反転傾向を捉えます

原則

この戦略は,主に以下の2つの技術指標を使用して取引信号を判断します.

  1. 移動平均の逆転

    逆転シグナルが発生するかどうかを判断するために,過去2日の価格上昇傾向または下落傾向を高速線K値と組み合わせて計算します. 過去2日間で価格が上昇し続け,高速線K値がスローラインK値よりも低い場合,購入信号が生成されます. 過去2日間で価格が低下し続け,高速線K値がスローラインK値よりも高い場合,販売信号が生成されます.

  2. 価格デトレンドオシレーター

    デトレンド価格振動器は水平移動平均線を描き,価格と線との関係に基づいて価格サイクルを識別する.計算期間よりも長い傾向をフィルタリングし,隠された短期変動を明らかにする.価格が移動平均線の上にあるとき,それは購入信号である.価格がラインの下にあるとき,それは販売信号である.

この戦略は,2つの指標のシグナルを組み合わせます.つまり,移動平均逆転シグナルが表示され,価格デトレンドオシレーターも逆転シグナルを確認すると,取引オーダーが生成されます.これはいくつかの無効な逆転シグナルをフィルタリングし,逆転後にリバウンドトレンドを捕捉することができます.

利点

この戦略の最大の利点は,不有効な信号を効果的にフィルターし,信号の信頼性を高めることができる補完的な確認のための2つの指標の強みをうまく利用することです.

移動平均逆転指標自体は誤った信号を生成する傾向がある.判断のためにそれだけに頼ることは,上位と底部を追いかける傾向がある.組み合わせのための価格デトレンド振動器の導入は,理想的な振動圏ではない逆転操作を回避することができる.

価格デトレンドオシレータのパラメータ設定は,短期変動のみを特定することを決定します.これは移動平均逆転の判断と非常によく一致し,合理的な逆転タイミングを特定することができます.

リスク

この戦略の主なリスクは以下のとおりです.

  1. リバウンドモメントが不足し 閉じ込められる傾向がある

移動平均の逆転は横向の範囲で起こる傾向があります.リバウンドモメンタムが不十分であれば,再びコールバックしてストップロスを触れる可能性があり,利益を得ることはできません.

  1. パラメータ設定が不適切

価格デトレンドオシレータのパラメータが大きすぎると,中長期の傾向が特定され,小さすぎると,誤判のリスクが増加します.パラメータは異なる製品に対して慎重にテストする必要があります.

  1. 突発的な出来事による逆転障害

主要なニュースイベントは,既存のトレンド判断を混乱させ,逆転信号の失敗をもたらします.ニュースイベントが発生したとき,基本面に注意を払い,盲目取引を避ける必要があります.

オプティマイゼーションの方向性

この戦略は,次の側面においてさらに最適化することができる.

  1. ストップ損失メカニズムを追加する

単一の損失を制御するために,合理的にストップ損失またはタイムストップ損失を設定します.

  1. 音量指標と組み合わせる

音量確認を追加し,平均音量を突破するときにのみ信号を発信するなど,動量不足による非効率な突破を避ける.

  1. 動的パラメータ最適化

市場状況に合わせてパラメータを動的に最適化し,明らかなトレンドでパラメータを適切に緩和し,統合時にパラメータを厳しくします.

  1. ダイナミック最適化のための機械学習方法を使用する

ランダムフォレストのような機械学習方法を用いて ダイナミックなインテリジェント最適化を実現するために パラメータの組み合わせを評価し選択します

概要

この戦略は,2つの指標の強みを合理的に組み合わせて,反転点での反転傾向を捉える. 罠にかかったことやパラメータ最適化などの問題が残っているにもかかわらず,全体的な考えは明確で論理的です. 安定した利益を達成するために,さらなるテストと最適化に価値がある.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/12/2019
// 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
// The Detrend Price Osc indicator is similar to a moving average, 
// in that it filters out trends in prices to more easily identify 
// cycles. The indicator is an attempt to define cycles in a trend 
// by drawing a moving average as a horizontal straight line and 
// placing prices along the line according to their relation to a 
// moving average. It provides a means of identifying underlying 
// cycles not apparent when the moving average is viewed within a 
// price chart. Cycles of a longer duration than the Length (number 
// of bars used to calculate the Detrend Price Osc) are effectively 
// filtered or removed by the oscillator.
//
// 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

DPO(Length) =>
    pos = 0.0
    xPrice = close
    xsma = sma(xPrice, Length)
    nRes = xPrice - xsma
    pos := iff(nRes > 0, 1,
    	     iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Detrended Price Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDPO = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDPO = DPO(LengthDPO)
pos = iff(posReversal123 == 1 and posDPO == 1 , 1,
	   iff(posReversal123 == -1 and posDPO == -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 )

もっと