クロストレンド逆転と3つのオシレーターダブル戦略を組み合わせた

作者: リン・ハーンチャオチャン開催日:2024年1月19日 14:41:02
タグ:

img

概要

この戦略は主に2種類の異なる戦略からの信号を組み合わせて戦略信号を重ねて信号品質を改善する.最初のタイプの戦略はクロストレンド逆転戦略であり,第二のタイプの信号は310オシレーター戦略である.

戦略1: 交差トレンド逆転戦略

この戦略は"How I Tripled My Money in the Futures Market"の183ページから由来する.これは逆転型戦略に属する.具体的な論理は,閉店価格が2日連続で前の閉店価格より高く,9日間のスローKラインが50を下回るとロング;閉店価格が2日連続で前の閉店価格より低く,9日間のスローKラインが50を超えるとショート.

戦略2: 3 10 オシレーター戦略

この戦略は,3日間の移動平均線と10日間の移動平均線の違いを使用して指標を構築する.具体的には,3日間の指数関数移動平均線から10日間の指数関数移動平均線を引く.違いは速い線である.この速い線の16日間の単純な移動平均線を取ると,スローラインが得られる.速い線がスローラインを下から上へと突破すると,ロング;速い線がスローラインを上から下へと突破すると,ショート.

戦略原則

  • まず,クロストレンド逆転戦略の posReversal123 の取引信号を計算する.
  • 次に10のオシレーター戦略の3つのうちの posD_3の取引信号を計算します.
  • 2つの信号が同じ方向にあるとき (ダブル・マルチまたはダブル・ショート) 組合せ信号を出力する.
  • 組み合わせられた信号posに基づいて,特定の取引方向と価格を決定する.
  • 異なる色でK線を描きます.

利点分析

この多戦略スタッキングの複合信号には以下の利点があります.

  1. 偽信号をフィルタリングし,信号品質を向上させる

    同じ方向で同時に信号を送るには2つの戦略が必要であるため,単一の戦略で偽信号の影響を回避し,信号の信頼性を向上させることができます.

  2. 複数の取引アイデアを統合する

    逆転戦略とトレンド戦略を組み合わせることで 2つのアイデアを統合します 戦略の盲点を一定程度削減し,より包括的な市場視点を獲得します

  3. 高い柔軟性

    実際のニーズに応じて,参加戦略の組み合わせは,異なるタイプの戦略を組み合わせることで,より多様化された組み合わせ戦略を作成するために調整することができます.

リスク分析

  1. 矛盾する仮定

    この戦略の基本仮定は,複数の戦略が互いに信号を検証できるということです.しかし,理論的には,すべての戦略が同時に間違った信号を与える可能性もあります.

  2. 不一致な信号

    2つの戦略信号が一致しない場合,どちらの戦略がより信頼性があるかを判断することは不可能で,ある程度の意思決定リスクがあります.

  3. パラメータの不一致

    不適切なパラメータ設定により,いくつかの戦略が適切に機能できず,戦略組み合わせの期待された効果が達成されない可能性があります.

対策:

  1. 多数投票のための戦略の数を増やす

  2. 個々の信号からの損失を制御するためのストップ損失ポイントを設定する

  3. 戦略の正常な動作を確保するためにパラメータを最適化

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

この戦略は,次の方向でも最適化できます.

  1. より多くの戦略の組み合わせを増やす

    信号の質をさらに向上させるため,組み合わせの戦略を形成するために,より多くの異なるタイプの戦略を追加し続けます.

  2. 前回のフィルタリング条件

    市場条件に応じて,市場フィルタリングなどの事前条件が設定され,不適切な市場条件下でポジションを開設しないようにします.

  3. 戦略の重みを動的に調整する

    組み合わせの異なる戦略の重さは,過去のパフォーマンスに応じて動的に調整され,より良いパフォーマンスを持つ戦略がより大きな役割を果たすことができます.

  4. パラメータの詳細を最適化

    より体系的なアプローチは,最適なパラメータを得るために,それぞれの戦略の内部パラメータを慎重にテストし最適化するために使用できます.

概要

この戦略は,マルチ戦略オーバーレイ複合戦略に属している.クロストレンド逆転戦略と3〜10振動戦略という2つのサブ戦略を統合している.取引信号が同じ方向にある場合にのみ取引注文を生成し,単一の戦略で偽信号を効果的にフィルタリングし,信号品質を改善することができる.単一の戦略と比較して,このタイプの戦略組み合わせには,より高い信号信頼性,より強いエラー耐性などの利点がある.しかし,一貫性仮定によってもたらされるリスクも注意する必要があるし,それらを制御するために適切な措置をとるべきである.一般的に,このマルチ戦略組み合わせの枠組みは拡大の可能性が高く,より多くのサブ戦略を追加し,パラメータを最適化し,フィルタリング条件を設定することによって深化することができる.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-18 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/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
// TradeStation does not allow the user to make a Multi Data Chart with 
// a Tick Bar Chart and any other type a chart. This indicator allows the 
// user to plot a daily 3-10 Oscillator on a Tick Bar Chart or any intraday interval.
// Walter Bressert's 3-10 Oscillator is a detrending oscillator derived 
// from subtracting a 10 day moving average from a 3 day moving average. 
// The second plot is an 16 day simple moving average of the 3-10 Oscillator. 
// The 16 period moving average is the slow line and the 3/10 oscillator is 
// the fast line.
// For more information on the 3-10 Oscillator see Walter Bressert's book 
// "The Power of Oscillator/Cycle Combinations" 
//
// 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

D_Three(Length1, Length2, Length3) =>
    pos = 0.0
    xPrice =  security(syminfo.tickerid,"D", hl2)
    xfastMA = ema(xPrice, Length1)
    xslowMA = ema(xPrice, Length2)
    xMACD = xfastMA - xslowMA
    xSignal = sma(xMACD, Length3)
    pos := iff(xSignal > xMACD, -1,
    	     iff(xSignal < xMACD, 1, nz(pos[1], 0)))     
    pos

strategy(title="Combo Backtest 123 Reversal & D_Three Ten Osc", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length1 = input(3, minval=1)
Length2 = input(10, minval=1)
Length3 = input(16, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_Three = D_Three(Length1, Length2, Length3)
pos = iff(posReversal123 == 1 and posD_Three == 1 , 1,
	   iff(posReversal123 == -1 and posD_Three == -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 )

もっと