リバースクロスオーバーキャプチャ戦略


作成日: 2024-01-17 16:29:13 最終変更日: 2024-01-17 16:29:13
コピー: 2 クリック数: 558
1
フォロー
1617
フォロワー

リバースクロスオーバーキャプチャ戦略

概要

リバース・クロス・キャプチャ戦略は,リバース・トレードと指標のクロスを組み合わせた複合戦略である.これは,まず価格のリバース形態を利用して取引シグナルを生成し,次にランダムな指標の多空のクロスと組み合わせてフィルタリングを行い,短期市場の逆転の機会をキャプチャする.

戦略原則

この戦略は以下の2つの子戦略で構成されています.

  1. 123 逆転戦略
  • 2日間の閉店価格が高点から低点に移動すると,9日のランダムな指標の低点 (((ある数値以下) は,買い信号を生成する
  • 2日間の閉盘価格が低点から高点に移動すると,9日のランダムな指数高点 (((ある数値以上) は,セールシグナルを生成します.
  1. ランダム指数金叉死叉戦略
  • %K線が%D線を上から下へと下落し,同時に%K線と%D線がオーバーバイ領域にあるとき,売り込み信号が生成される.
  • %K線が%D線を上下から突破し,同時に%K線と%D線がオーバーソール領域にあるとき,買取信号が生成される

この複合策略は2つの子策略の信号を判断し,2つの子策略の取引信号が一致すると,実際の取引信号を生成する.

戦略的優位性

この戦略は,反転と指標の交差を組み合わせて,価格と指標の情報を総合的に判断し,偽信号を効果的にフィルターし,潜在的な反転の機会を掘り出し,収益率を向上させます.

具体的には以下の通りです.

  1. 市場の反転を捉え,早く反転し,波動を待たずに
  2. 2種戦略のクロス検証により信号の正確性が向上
  3. 価格の判断と指標分析を組み合わせて,勝利率を上げる

戦略リスク

この戦略にはリスクもあります.

  1. 市場が急激に波動すると,短期的に価格の方向転換を明確にすることが困難になり,誤ったシグナルが生じやすい.
  2. 指数パラメータの設定が不適切であることも信号の質に影響を与える.
  3. 逆転の時間は把握できないので,一定の時間リスクがあります.

これらのリスクは,指標パラメータの調整,停止メカニズムの設定などによって制御できます.

戦略最適化の方向性

この戦略は,以下の側面から最適化できます.

  1. 指数パラメータを調整し,パラメータの組み合わせを最適化
  2. 他の指標のフィルタリング信号を追加します.例えば,取引量指標など.
  3. 各種の特徴と市場環境に応じて指標パラメータをカスタマイズする
  4. ストップ・ストップ・ストラテジックのリスクの増強
  5. 機械学習技術と組み合わせた信号判断

要約する

リバース・クロス・キャプチャー・ストラテジーは,複数のストラテジーの優位性を総合的に利用し,リスクをコントロールした前提で,強力な収益能力を有する.継続的な最適化と改善により,自分のスタイルに適した高効率のストラテジーを構築し,変化する市場環境に対応することができる.

ストラテジーソースコード
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/09/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
// This back testing strategy generates a long trade at the Open of the following 
// bar when the %K line crosses below the %D line and both are above the Overbought level.
// It generates a short trade at the Open of the following bar when the %K line 
// crosses above the %D line and both values are below the Oversold level.
//
// 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


StochCross(Length, DLength,Oversold,Overbought) =>
    pos = 0.0
    vFast = stoch(close, high, low, Length)
    vSlow = sma(vFast, DLength)
    pos := iff(vFast < vSlow and vFast > Overbought and vSlow > Overbought, 1,
    	      iff(vFast >= vSlow and vFast < Oversold and vSlow < Oversold, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Stochastic Crossover", 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, "---- Stochastic Crossover ----")
LengthSC = input(7, minval=1)
DLengthSC = input(3, minval=1)
Oversold = input(20, minval=1)
Overbought = input(70, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posmStochCross = StochCross(LengthSC, DLengthSC,Oversold,Overbought)
pos = iff(posReversal123 == 1 and posmStochCross == 1 , 1,
	   iff(posReversal123 == -1 and posmStochCross == -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 )