この戦略は,効率的な短期間の取引のためのトレンド逆転の機会を特定するために,ダブル移動平均クロスオーバーとストカスティックオシレーターを組み合わせます.価格が過剰購入領域に入ると短く,価格が過剰販売領域に入ると長くなります.
この戦略は,二重移動平均のクロスオーバーとストカスティックオシレーターの組み合わせに基づいています.
ダブル・ムービング・平均クロスオーバーは,高速移動平均,スロー・ムービング・平均,超スロー・ムービング・平均から構成される.高速MAがスローMAを超えると,それは購入信号である.高速MAがスローMAを下回ると,それは販売信号である.ダブル・ムービング・平均クロスオーバーは中期トレンド逆転点を特定することができる.
ストコスタスティックオシレーターは,%Kと%D値を含みます. %Kは,過去N日間の最高値と最低値との関係で現在の閉じる値がどこにあるかを示します. %Dは,%KのM日間の単純な移動平均値です.80以上の値は過買いレベルを意味し,20以下の値は過売りレベルを意味します.ストコスタスティックオシレーターは,短期間の過買い/過売りゾーンを特定することができます.
この戦略は,ダブルMAクロスオーバーとストカスティックオシレーターを組み合わせます.ストカスティックが過買い/過売りレベルを示したときに,ダブルMAクロスオーバーからトレンド逆転信号を探します.これは短期的なトレンド逆転を捉えることを目的としています.
この戦略の利点は
双 MA クロスオーバーとストカスティックオシレーターを組み合わせ,中期および短期間のトレンド逆転を識別する.
ストカスティック過剰購入/過剰売却信号を使用して,より効果的なダブルMAクロスオーバー逆転取引を選択します.
明確な取引規則は 簡単に実行できます
調整可能な取引時間と月パラメータは,異なる製品と時間帯に適しています.
リスクをコントロールするために ストップ・ロスをします
この戦略のリスクは
ダブルMAは誤ったブレイクアウトがある可能性があります.ストコスタシックは誤ったトレードシグナルにつながる無効なブル/ベアディバージェンスがある可能性があります.パラメータを微調整するか,コンボの確認のために他の指標を追加します.
基本要素を考慮せずに技術指標のみをベースに 重要な経済イベントで失敗する可能性があります
精確なMA逆転タイミングを特定するのは困難で,ストップが狭すぎたり幅が広いことが問題になる可能性があります.ストップ損失戦略を最適化します.
間違ったパラメータ設定は,過剰な取引またはシグナル品質の低下につながる可能性があります. バックテストを通じて異なる製品とタイムフレームのためのパラメータを最適化します.
短期取引のみに適し 長期保有は禁止
戦略は,いくつかの側面で最適化することができます:
KDJ,MACDなどのインディケーターコンボをテストして信号の有効性を向上します
偽のブレイクを避けるために取引量分析を追加します.
2倍MAパラメータを最適化して,より正確な逆転点を特定する.
ストップ・ロスの戦略を最適化して ストップ・アウトの可能性を減らす
経済的出来事のリスク管理モジュールを追加して,大きな出来事による影響を回避する.
機械学習技術を使って パーマータを自動最適化して 適応性を向上させる
最良の応用を見つけるために より多くの製品と時間枠をバックテストします
この戦略は,ダブル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)