複数の指標による衝突逆転戦略

作者: リン・ハーンチャオチャン開催日:2024年1月4日 (月) 18:02:12
タグ:

img

概要

この戦略は,二重指標信号を組み合わせて効率的な逆転戦略として設計されています.ストカスタスティック指標に基づいて逆転信号と連続アップ日の数を追跡するシステムを統合しています.この戦略は,両方の信号が同時に購入または販売を誘発するときにのみ注文をします.このマルチインジケーター衝突メカニズムは,いくつかの無効な信号を効果的にフィルタリングし,勝利率を改善することができます.

原則

この戦略は2つの部分から構成される.最初の部分は123逆転システムで,過去2日間の閉値の変化と3期間のスローストキャスティック指標の値を観察する.具体的には,昨日の閉盤が前2日より低く,今日の閉盤が昨日のより高く,9期間のスローストキャスティックは50を下回ると,ロング;逆に,今日の閉盤が昨日より低く,急速ストキャスティックは50を超えると,ショートする.

2番目の指標は,最近 n 日間にわたって連続して上昇した日の数を追跡します.最後の n 日がすべて上昇している場合,出力値は 1 です.そうでなければ 0 です.この指標は,トレンド形成を特定するために使用されます.

最後に,この戦略は123の逆転信号と連続したアップ日数の両方が同時に購入または販売状態を示す場合にのみ取引を実行します.この多指標衝突重量化されたアプローチは,いくつかの無効な信号をフィルタリングし,戦略の全体的な安定性を向上させることができます.

利点分析

この多指標コンボ戦略の最大の利点は,いくつかの無効な信号をフィルタリングすることによって信号の信頼性を向上させることができるということです.特に主な利点は次のとおりです.

  1. 123の逆転自体は,ノイズ干渉を避けるためのいくつかのスクリーニング能力を持っています.連続日カウンターと組み合わせると,傾向をさらに特定し,逆転ブランスを回避することができます.

  2. 9日間と3日間の高速線と遅い線を比較するストキャスティックパラメータは,パラメータの変化をスムーズにし,短期変動を回避し,安定性を高めることができます.

  3. ストックを含むカスタマイズ可能なパラメータ,上昇日の数パラメータは,異なる市場に適応することを可能にします.

  4. 両方向で取引できるので ショートカットする機会が増える

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 多指標コンボは信号の精度を向上させながら 機会を逃して利益を制限する可能性があります

  2. 逆転信号には 閉じ込められるリスクが固有で リスクを制御するためにストップ損失が必要になります

  3. パラメータの設定が正しくない場合,市場間での調整を必要とするパフォーマンスに影響を与える可能性があります.

  4. 適切なストップ・ロスのない長期ポジションを保持したり 株価の逆転を追いかけるのもリスクがあります

したがって,リスクを軽減するために,次の措置が講じられます.

  1. 適度にパラメータ条件を緩和して 取引機会を拡大します

  2. ストップ・ロスのポイントを,取引損失ごとに制限するように設定します.

  3. パラメータを最適化し,異なる市場のためのパラメータルルルールを設定します.

  4. 長期にわたって単一の株を保有することを避け 流動性を維持します

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

この多指標の逆転戦略を最適化するには,主に次の側面から大きな可能性が残っています.

  1. より良いマッチを見つけるためにより多くの指標の組み合わせをテストします.

  2. マシン学習アルゴリズムを使って パラメータを自動最適化します

  3. ストップ・ロストと 収益条件を追加して 安定性を高めます

  4. トレンドインジケーターの部分で異なる時間枠をテストします.

  5. 株式指数,外為,商品,暗号通貨の適用性を評価する.

  6. 複合戦略を設計し,複数の市場で同時配分を動的に調整する.

概要

この戦略は,効率的で安定した逆転取引戦略を設計するために,複数の指標を巧みに組み合わせます.単一の指標と比較して,マルチインジケータ衝突メカニズムは誤った信号を効果的にフィルターします.一方,この戦略は,信号確認のための新しいトレンドインジケーターを追加することによって伝統的な逆転方法を更新します.パラメータ最適化,ストップ損失,市場間での適応などにより,これは強力な定量的な取引ツールキットになります.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/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
// Evaluates for n number of consecutive higher closes. Returns a value 
// of 1 when the condition is true or 0 when false.
//
// 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


NBU(nLength) =>
    pos = 0.0
    nCounter = 0
    nCounter :=  iff(close[1] >= open[1], nz(nCounter[1],0)+1,
                  iff(close[1] < open[1], 0, nCounter))
    C1 = iff(nCounter >= nLength, 1, 0)
    posprice = 0.0
    posprice := iff(C1== 1, close, nz(posprice[1], 0)) 
    pos := iff(posprice > 0, 1, 0)
    pos

strategy(title="Combo Backtest 123 Reversal & N Bars Up", 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, "---- N Bars Up ----")
nLength = input(4, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posNBU = NBU(nLength)
pos = iff(posReversal123 == 1 and posNBU == 1 , 1,
	   iff(posReversal123 == -1 and posNBU == -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 )

もっと