
この戦略は,ランダムな指数RSIと,指定されたパラメータを持つランダムな振動指数ストキャスティックオシレータを組み合わせて,一定の振動範囲内での買付と売却操作を行う.
コードでは,まず,ストキャスティックオシレータのK値,D値,SD値などのパラメータ,およびRSI指標の周期パラメータが定義されている.各K線にストキャスティックオシレータとRSIの値が計算された後,RSIが低級20より小さい場合,K値も20より低い場合は,オーバーバイの信号で空白;RSIが高級80より大きい場合,K値も80より高い場合は,オーバーバイの信号で空白.このように,ダブル指標によって確認し,いくつかの偽信号をフィルターすることができます.さらに,ストップとストップの条件が設定されています.
この二重指標のフィルタリング戦略は,通常のストキャスティック戦略でwhipsawsによってもたらされる不要な取引を効果的に減らすことができます. 同時に,トレンド指標RSIと組み合わせて,明確なトレンドがないときに盲目取引を避けることができます.
この戦略の最大のリスクは,指定されたパラメータが必ずしもすべての品種およびすべての時間帯に適用されないこと,例えば,分割された時間周期で,RSIとストキャスティックのパラメータは調整する必要があることにある.また,トレンドが急激に変化するときに,ストキャスティック型の戦略は大きな損失を生む.したがって,この戦略は,振動盤整理の市場環境に適している.
より多くの指標の組み合わせをテストできます.例えば,MACD指標とストキャスティックまたはRSIを組み合わせて,複数の指標のフィルターを形成します. RSIとストキャスティックの特定のパラメータ値を調整して,最適なパラメータの組み合わせを探します.
この戦略は,ランダムな振動指標であるストキャスティックとトレンド強度指標であるRSIを組み合わせて二重指標フィルタリングを行います.これは,過剰買い過剰売り状況を効果的に識別し,振動が整理された市場に適しています.単一のストキャスティック指標戦略よりも優れています.パラメータと指標の組み合わせを最適化することで,戦略効果はさらに向上する余地があります.
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-14 04:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Estrategia de Oscilador Estocástico y RSI", overlay=false)
// Configuración del Oscilador Estocástico
fastK = input(14, title="K", minval=1)
slowK = input(3, title="D", minval=1)
slowD = input(3, title="SD", minval=1)
overSold = input(20, title="Oversold")
overBought = input(80, title="Overbought")
// Configuración del RSI
rsiPeriod = input(14, title="RSI Period")
// Cálculo del Oscilador Estocástico
k = sma(stoch(close, high, low, fastK), slowK)
d = sma(k, slowD)
// Cálculo del RSI
rsi = rsi(close, rsiPeriod)
// Lógica de la estrategia
if (rsi < overSold and k < overSold)
strategy.entry("Compra", strategy.long)
if (rsi > overBought and k > overBought)
strategy.entry("Venta", strategy.short)
// Establecer stop loss y take profit
stopLoss = input(100, title="Stop Loss")
takeProfit = input(100, title="Take Profit")
strategy.exit("Stop Loss / Take Profit", "Compra", stop=close - stopLoss, limit=close + takeProfit)
strategy.exit("Stop Loss / Take Profit", "Venta", stop=close + stopLoss, limit=close - takeProfit)
// Trama de gráfico
plot(k, color=color.blue, title="K")
plot(d, color=color.red, title="D")
plot(rsi, color=color.green, title="RSI")