双動平均クロスオーバー戦略を持つ日中のストカスティックオシレーター

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

img

概要

この戦略は,効率的な短期間の取引のためのトレンド逆転の機会を特定するために,ダブル移動平均クロスオーバーとストカスティックオシレーターを組み合わせます.価格が過剰購入領域に入ると短く,価格が過剰販売領域に入ると長くなります.

戦略の論理

この戦略は,二重移動平均のクロスオーバーとストカスティックオシレーターの組み合わせに基づいています.

ダブル・ムービング・平均クロスオーバーは,高速移動平均,スロー・ムービング・平均,超スロー・ムービング・平均から構成される.高速MAがスローMAを超えると,それは購入信号である.高速MAがスローMAを下回ると,それは販売信号である.ダブル・ムービング・平均クロスオーバーは中期トレンド逆転点を特定することができる.

ストコスタスティックオシレーターは,%Kと%D値を含みます. %Kは,過去N日間の最高値と最低値との関係で現在の閉じる値がどこにあるかを示します. %Dは,%KのM日間の単純な移動平均値です.80以上の値は過買いレベルを意味し,20以下の値は過売りレベルを意味します.ストコスタスティックオシレーターは,短期間の過買い/過売りゾーンを特定することができます.

この戦略は,ダブルMAクロスオーバーとストカスティックオシレーターを組み合わせます.ストカスティックが過買い/過売りレベルを示したときに,ダブルMAクロスオーバーからトレンド逆転信号を探します.これは短期的なトレンド逆転を捉えることを目的としています.

利点分析

この戦略の利点は

  1. 双 MA クロスオーバーとストカスティックオシレーターを組み合わせ,中期および短期間のトレンド逆転を識別する.

  2. ストカスティック過剰購入/過剰売却信号を使用して,より効果的なダブルMAクロスオーバー逆転取引を選択します.

  3. 明確な取引規則は 簡単に実行できます

  4. 調整可能な取引時間と月パラメータは,異なる製品と時間帯に適しています.

  5. リスクをコントロールするために ストップ・ロスをします

リスク分析

この戦略のリスクは

  1. ダブルMAは誤ったブレイクアウトがある可能性があります.ストコスタシックは誤ったトレードシグナルにつながる無効なブル/ベアディバージェンスがある可能性があります.パラメータを微調整するか,コンボの確認のために他の指標を追加します.

  2. 基本要素を考慮せずに技術指標のみをベースに 重要な経済イベントで失敗する可能性があります

  3. 精確なMA逆転タイミングを特定するのは困難で,ストップが狭すぎたり幅が広いことが問題になる可能性があります.ストップ損失戦略を最適化します.

  4. 間違ったパラメータ設定は,過剰な取引またはシグナル品質の低下につながる可能性があります. バックテストを通じて異なる製品とタイムフレームのためのパラメータを最適化します.

  5. 短期取引のみに適し 長期保有は禁止

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

戦略は,いくつかの側面で最適化することができます:

  1. KDJ,MACDなどのインディケーターコンボをテストして信号の有効性を向上します

  2. 偽のブレイクを避けるために取引量分析を追加します.

  3. 2倍MAパラメータを最適化して,より正確な逆転点を特定する.

  4. ストップ・ロスの戦略を最適化して ストップ・アウトの可能性を減らす

  5. 経済的出来事のリスク管理モジュールを追加して,大きな出来事による影響を回避する.

  6. 機械学習技術を使って パーマータを自動最適化して 適応性を向上させる

  7. 最良の応用を見つけるために より多くの製品と時間枠をバックテストします

結論

この戦略は,ダブルMAクロスオーバーとストカスティック・ブル/ベア・ディバージェンスによって識別された中期トレンド逆転点で取引する.単一の指標を使用すると比較して,明確なルールで取引の収益性を向上させることができます.しかし,パラメータとストップロスの最適化,より多くのフィルターとリスク制御を必要とするリスクもあります.全体として,信頼性のある中頻度短期取引戦略です.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Intraday Stochiastic Strategy", shorttitle="Intraday Stochiastic Strategy", overlay=true, initial_capital = 1000)
//WORKS FOR BTCUSD M30
//OBVERVED GOOD PERFORMANCES FOR SELL MODE M15 : US30USD / UK100GBP / JP225USD / SPX500USD / BCOUSD / EURGBP
//Best Forex Hours are 7-21
//0 is Long Position
//1 is Short Position
//2 No position
mode=input(1, maxval=2, title="Mode")
lossLimit=input(10000, maxval=10000, title="Loss Limit")
hourStart=input(2, maxval=24, title="Hour Start")
hourStop=input(13, maxval=24, title="Hour Stop")

//Month selected for back testing. 0 is maximum number of months
monthSelected = input(0, maxval=12, title="Month Selected")

/////////////////////////////////////////////////

fast = 20, slow = 50, ultraSlow = 200
fastMA = sma(close, fast)
slowMA = sma(close, slow)
ultraSlowMA = sma(close, ultraSlow)

colorFast = red
colorSlow = black
colorUltraSlowMA = purple

if(timeframe.period == "1" or timeframe.period == "3" or timeframe.period == "5" or timeframe.period == "15" or timeframe.period == "30" or timeframe.period == "45" or timeframe.period == "60" or timeframe.period == "120" or timeframe.period == "180" or timeframe.period == "240")
    fastMA := ema(close, fast)
    slowMA := ema(close, slow)
    ultraSlowMA := ema(close, ultraSlow)
    colorFast := orange
    colorSlow := gray
    colorUltraSlowMA := blue

p1 = plot(fastMA, color=colorFast)
p2 = plot(slowMA, color=colorSlow, linewidth=2)  
p3 = plot(ultraSlowMA, color=colorUltraSlowMA, linewidth=3)

fill(p1, p2, color = fastMA > slowMA ? green : red)

////////////////////////////////////////////////

ema150 = 200
ema150MA = ema(close, ema150)

smooth = input(3, minval=1), K = input(14, minval=1), D=input(3,minval=1)
hh=highest(high,K)
ll=lowest(low,K)
k = sma((close-ll)/(hh-ll)*100, smooth)
d = sma(k, 3)
//plot(k, color=blue)
//plot(d, color=red)
//h0 = hline(80)
//h1 = hline(20)
//fill(h0, h1, color=purple, transp=95)


//plot(hour*100, color=red, linewidth=2)

stochiasticHigh = 80
stochiasticLow = 20

data = close < ema150MA and k>stochiasticHigh and d>stochiasticHigh and close>open
plotshape(data, style=shape.triangledown, location=location.belowbar, color=red)

data2 = close > ema150MA and k<stochiasticLow and d<stochiasticLow and close<open
plotshape(data2, style=shape.triangleup, location=location.abovebar, color=green)

isData = 0
isData := isData[1]

    
if(isData == 0)
    if(data)
        if(mode==1 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected)) //DOW hours : 2-13
            strategy.entry("SCALP SHORT", strategy.short)  
            isData := 1
else
    if(k<stochiasticLow and d<stochiasticLow)
        if(mode==1)
            strategy.close_all(when = true)
        isData := 0
        
isData2 = 0
isData2 := isData2[1]
    
if(isData2 == 0)
    if(data2)
        if(mode==0 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected))
            strategy.entry("SCALP LONG", strategy.long)  
            isData2 := 1
else
    if(k>stochiasticHigh and d>stochiasticHigh)
        if(mode==0)
            strategy.close_all(when = true)
        isData2 := 0

strategy.exit("STOP LOSS", "SCALP LONG", loss=lossLimit)
strategy.exit("STOP LOSS", "SCALP SHORT", loss=lossLimit) 

もっと