複合ストカスティックオシレーターと123逆転戦略

作者: リン・ハーンチャオチャン開催日:2023年10月26日17時27分
タグ:

img

概要

この戦略は123逆転パターンとストカスティックオシレータを組み合わせ,価格が底部逆転を示し,ストカスティックオシレータも底部から逆転したときに購入信号を生成します. 底部逆転を効果的に識別することができ,ダブル確認フィルターは取引頻度を削減し,信号精度を向上させます.

戦略の論理

  1. 123 逆転戦略

    • 閉じる価格が前2日閉じる価格より高く,9日ストキャスティック・ファストラインがスローライン以下で50以下である場合,買い信号が生成されます.

    • 閉店価格が前2日閉店価格より低く,9日間のストカスティック・ファストラインがスローライン上と50以上であれば,セール・シグナルが生成されます.

  2. ストカスティックオシレーター戦略

    • ストカスティック %K線が上部帯 (デフォルト 20) を越えた場合,買い信号が生成されます.

    • ストキャスティック %K線が下帯 (デフォルト 80) を越えた場合,セールシグナルが生成されます.

  3. 二重確認

    買い信号は,123逆転とストカスティック戦略の両方が買い信号を与える場合にのみ生成される.売り信号は類似している.この二重確認は,偽信号をフィルタリングして精度を向上させることができます.

利点

  1. 双重確認はノイズをフィルタリングし 信号の精度を向上させます

  2. 123回転は底と上回転を捉える ストカスティックは偽のブレイクを回避する

  3. ストキャスティックは 過剰購入と過剰販売を 効果的に識別します 123の逆転と素晴らしいマッチです

  4. パラメータ調整による高い最適化柔軟性

  5. シンプルな論理,分かりやすい,初心者にとって良い.

リスク

  1. 双重確認によって チャンスが失われ 取引頻度が低下する可能性があります

  2. ストカスティックは 誤った信号を生むかもしれない 慎重に調べる必要がある

  3. 適切なパラメータ調節が必要で,不適切な設定はパフォーマンスに影響します.

  4. 逆転パターンを示す市場でのみ 持続的なトレンドにはなりません

  5. 戦略信号を厳格にフォローし 自分の判断から偏見を避ける

リスクソリューション:パラメータを最適化し,シグナルを厳格にフォローし,適用可能な市場状況を調整します

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

  1. ストカスティックパラメータを最適化して 安定性を高める

  2. ストップ・ロスト戦略を追加します

  3. 音量確認のようなフィルターを追加して信号の質を向上させます

  4. 異なる逆転戦略とストカスティックの組み合わせをテストする.

  5. マシン学習を活用して パラメータを訓練し最適化します

  6. 安定性をテストするために 異なる市場で戦略を適用する.

  7. 他の指標との組み合わせを探ります

結論

この戦略はストカスティックオシレーターと123逆転パターンを組み合わせ,底部逆転の機会を効果的に捉える.単一指標と比較して,マルチインジケータの組み合わせは信号品質と勝利率を大幅に改善する.改善の余地があるものの,全体的な論理はシンプルで理解しやすいため,初心者のライブトレーディング実践に理想的です.繰り返しテストと最適化により,パラメータは一貫したポジティブな結果のためにより堅牢になることができます.


/*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 07/07/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 up UpBand line.
// It generates a short trade at the Open of the following bar when the %K line 
// crosses down DownBand line.
//
// 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


Stochastic(Length,DLength,UpBand,DownBand) =>
    pos = 0.0
    vFast = stoch(close, high, low, Length)
    vSlow = sma(vFast, DLength)
    pos := iff(vFast > UpBand, 1,
	         iff(vFast < DownBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Stochastic", 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 ----")
LengthS = input(7, minval=1)
DLengthS = input(3, minval=1)
UpBand = input(20, minval=1)
DownBand = input(80, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posStochastic = Stochastic(LengthS,DLengthS,UpBand,DownBand)
pos = iff(posReversal123 == 1 and posStochastic == 1 , 1,
	   iff(posReversal123 == -1 and posStochastic == -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 )

もっと