双重トレンド追跡戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-27 16:14:25
タグ:

概要

ダブルトレンドトラッキング戦略は,市場のトレンドをより正確に把握し,過剰収益を生むために,2つの異なる戦略信号を組み合わせます.まず,価格逆転信号を決定するために123逆転戦略を使用し,その後,オーバーバイト・オーバーセール指標を組み合わせてポジション方向性を決定し,罠にはまりないようにトレンドを追跡します.

戦略の論理

戦略は2つの部分からなる.

  1. 123 逆転戦略

    123 逆転戦略は,まず前2日間の閉店価格関係を判断します.閉店価格が最近逆転した場合 (例えば,閉店価格が昨日上昇し,前日下がった場合),それは潜在的な転換点を示します.

    ストック・インディケーターを組み合わせて購入・販売タイミングを決定する.ストック・ファストラインが一定のレベル (例えば50) 以下の状態で,スローラインが速いラインの上にある場合,oversoldと考えられ,購入信号を生成する.ストック・ファストラインが特定のレベル (例えば50) 以下の状態で,スローラインが速いラインの下にある場合,oversoldと考えられ,セール信号を生成する.

    123の逆転戦略には ストック指標からの確認が必要で 実際の取引信号を生成するために 価格逆転を特定することも必要です

  2. 過剰購入/過剰販売指標

    過剰購入/過剰販売指標は,ストック指標を直接使用する.ストック指標が特定のレベル (例えば90) を上回ると,過剰購入とみなされ,販売信号を生成する.ストック指標が特定のレベル (20) を下回ると,過剰販売とみなされ,購入信号を生成する.

    この指標は,傾向を追跡するために,ストック指標を介して直接過剰購入/過剰販売レベルを判断します.

最後に,戦略は2つの戦略からの信号を組み合わせます.信号が同じ方向にあるときのみ,市場の動向をより正確に把握するために最終的な購入または販売信号が生成されます.

利点分析

デュアル・トレンド・トラッキング戦略の最大の利点は,誤った取引信号を避けるために,価格動向と過買い/過売り条件の両方を検証できるということです. 具体的な利点は:

  1. 2つの戦略信号を組み合わせることで,より強力な検証が可能になり,単一の戦略におけるエラーによる損失を減らすことができます.

  2. 123 逆転戦略は,潜在的なトレンド逆転点を迅速に把握することができます.

  3. 過剰購入/過剰販売指標は,現在の市場状況を検証し,高値と低値を追いかけるのを避けることができます.

  4. この2つの戦略は互いに検証し,誤った信号を回避し,安定性を向上させる.

  5. シンプルで効果的な指標と 分かりやすく応用可能な 明確な論理を組み合わせています

リスク分析

戦略は統合検証によって安定性を向上させるが,いくつかのリスクは依然として存在している.

  1. 123 逆転戦略は逆転点を完璧に特定できず,いくつかの機会を逃す可能性があります.逆転信号の値を下げるためにパラメータを微調整します.

  2. 過剰購入/過剰売却指標は,STOCKの1つの指標のみに依存し,誤った信号を生む可能性があります.検証のためにMA線などを追加します.

  3. 2つの戦略信号は互いにキャンセルされ,機会を逃す可能性があります.制約を減らすためにパラメータを調整します.

  4. ストラテジーは過去データのみでバックテストされています. パラメータはライブ取引で継続的な最適化が必要です. 損失を制御するためにストップ損失メカニズムを追加します.

  5. パラメータは,異なる製品や取引期間に対して独立したテストと最適化が必要です. パラメータを直接コピーしないでください.

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

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

  1. 両方の戦略のパラメータを最適化して,異なる市場条件下で選択できる最適化プログラムのためのパラメータプールを形成する.

  2. 誤った信号を避けるため,MA,ボリンジャー帯などに基づくフィルター条件を追加します.

  3. ストップ・ロスのメカニズムを追加します. トレイリング・ストップ・ロス,ムーブ・ストップ・ロス,タイム・ストップ・ロスなど. 最大引き下げを制御します.

  4. 低流動性を避けるため,異なる商品のボリュームやポジションのフィルターを追加することを検討する.

  5. パラメータの進化を研究し 自動最適化のために機械学習を使用します

  6. トレンドのない市場での過剰取引を避けるためにエントリー頻度を最適化します

結論

ダブルトレンドトラッキング戦略は,123の逆転と過剰購入/過剰販売戦略を組み合わせることで,過剰購入/過剰販売レベルを検証しながら,トレンド逆転を正確に識別する.これは間違った信号をフィルタリングし,過剰収益のための実際のトレンドを捉える.単一指標戦略よりも安定し,収益性がある.しかし,リスクはタイムリーストップ損失によって管理されるべきである.パラメータ最適化,フィルター追加,自動化などを通じて将来の改善が可能である.


/*backtest
start: 2022-09-20 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/03/2021
// 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
// Simple Overbought/Oversold indicator
//
// 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


OO(Length,BuyBand,SellBand) =>
    pos = 0.0
    xOBOS = stoch(close, high, low, Length)
    nRes = iff(close > close[Length], xOBOS / 100, (100 - xOBOS) / 100)
    pos :=iff(nRes < SellBand, -1,
           iff(nRes > BuyBand, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Overbought/Oversold", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Overbought/Oversold ----")
LengthOO = input(10, minval=1)
BuyBand = input(0.92, step = 0.01)
SellBand = input(0.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posOO = OO(LengthOO,BuyBand,SellBand)
pos = iff(posReversal123 == 1 and posOO == 1 , 1,
	   iff(posReversal123 == -1 and posOO == -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 )

もっと