二重逆転重複選択戦略

作者: リン・ハーンチャオチャン開催日:2023年10月26日 16:56:56
タグ:

img

概要

双重逆転重複選択戦略は,逆転取引戦略と過買い過売りフィルターを組み合わせて,資産配分とタイミング取引を達成することを目的としています.過買い過売り指標を使用して不合理な拡張ゾーンで不必要な取引を避ける一方で,トレンド逆転点でロングとショートポジションを取ることを目的としています.

戦略の論理

この戦略は,重複する2つのサブ戦略で構成されています.

  1. 123 逆転戦略

この戦略は,閉店価格の逆転が連続して2日間行われ,逆転シグナルを使用する.特に,閉店価格が過去2日間に上昇し,9日間のスローストキャスティックは50未満で,閉店価格が過去2日間に下落し,9日間の高速ストキャスティックは50を超えると,ロングになり,短くなります.この逆転戦略は,短期的なトレンド逆転を捕捉することを目的としています.

  1. DSSオシレーター戦略

この戦略は,過剰購入過売分析のためにDSSオシレーターを使用する. 5 日間MAが10 日間MAと20 日間oversoldレベルを下回る場合,長行し, 5 日間MAが10 日間MAと80 日間oversoldレベルを下回る場合,短行する.この過剰購入過売戦略は不合理なゾーンで不必要な取引を避けるのに役立ちます.

最終的な信号は,両戦略が一致するときにのみ生成されます.これは,両戦略の強みを組み合わせることで収益性を向上させます.

利点分析

  1. 逆転と買い過ぎで売過ぎの戦略の利点を組み合わせます. 短期的な逆転を捉えながら不合理なゾーン取引を避ける.

  2. シンプルな論理と数少ないパラメータにより,123逆転は簡単に実装できます. DSSは,強固な過買い過売分析のためにダブルスムージングを使用します.

  3. 組み合わせることで 誤った信号を減らすことで 信号の信頼性が向上します

  4. 柔軟なパラメータ調整により 戦略は異なる市場に対応できます

リスク分析

  1. 逆転戦略は 市場を回転させるリスクとリスクを 引き上げます

  2. DSSの最適化は困難でパラメータに敏感です

  3. 異なった信号は 取引機会を逃す可能性があります

  4. シンプルな価格指標が 収益性を制限します

解決策:

  1. 押さえ置く期間を短縮して 鞭のリスクを減らす

  2. 成功例に基づいて 慎重にパラメータを調整します

  3. 戦略を改善するためにフィルターを追加します.

  4. 入力のタイミングや位置のサイズを最適化します

改善の方向性

  1. 信号の精度を向上させるために他の逆転指示を試験する.

  2. RSI のような 買い過ぎ 売り過ぎの指標を探しましょう

  3. ストップ・ロスを追加して 利益と損失を制限します

  4. 異なる市場のためのパラメータを最適化します

  5. ダイナミックパラメータの調整を考えてください

  6. 信号を生成する機械学習モデルを作ります

結論

ダブルリバーサル・オーバーラップ選択戦略は,リバーサルとオーバーバイト・オーバーセール戦略を組み合わせることで,資産配分とタイミングのトレード機能の両方を提供する.柔軟なパラメータ,シンプルな論理,そして不合理なゾーンでのノイズトレードを効果的にフィルタリングする簡単な実装のような利点があります.しかし,リバーサルリスクやパラメータ最適化困難などの制限があります.将来の強化はストップ・ロスト,パラメータ最適化,機械学習の組み込みなどから来ることができます.全体として,それは強力な定量的なトレードソリューションを提供します.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/03/2020
// 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
// Double Smoothed Stochastics (DSS) is designed by William Blaw. 
// It attempts to combine moving average methods with oscillator principles. 
//
// 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

DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold) =>
    pos = 0
    xPreCalc = ema(stoch(close, high, low, PDS), EMAlen)
    xDSS = ema(stoch(xPreCalc, xPreCalc, xPreCalc, PDS), EMAlen)
    xTrigger = ema(xDSS, TriggerLen)
    pos := iff(xTrigger < xDSS and xTrigger < Oversold, -1,
	         iff(xTrigger > xDSS and xTrigger > Overbought, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & DSS Bressert", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
PDS = input(10, minval=1)
EMAlen = input(9, minval=1)
TriggerLen = input(5, minval=1)
Overbought = input(80, minval=1)
Oversold = input(20, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDSS = DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold)
pos = iff(posReversal123 == 1 and posDSS == 1 , 1,
	   iff(posReversal123 == -1 and posDSS == -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 )

もっと