この戦略は,複数の移動平均値と相対強度指数 (RSI) を組み合わせて取引信号を生成する. 9日,21日,25日,99日という異なる期間を持つ4つの移動平均値を使用し,それらの間のクロスオーバーに基づいてトレンド方向を決定する.さらに,この戦略は,RSI指標を補完判断として組み込み,市場は過買いまたは過売りになったときに追加の取引信号を提供します.
この戦略の主な考え方は,異なる期間の移動平均値のトレンド特性を利用し,それらの上昇または下落の調整に基づいて主要な市場トレンドを決定することである. 短期移動平均値が長期移動平均値を超越することは上昇信号とみなされ,その反対は下落信号とみなされる. RSI指標は,市場の感情を測定するために使用され,市場は過買いまたは過売りになったときに逆転信号を提供する.
この戦略は,異なる期間の移動平均値とRSI指標を組み合わせて,トレンドフォローおよびセンチメント判断の取引戦略を形成する.その利点は明確な論理と適応性にある.複数の移動平均値を統合することで,市場のトレンドを効果的に把握することができる.しかし,パラメータ敏感性,トレンド認識遅延,レンジバインド市場での不良パフォーマンスなどのリスクにも直面する.将来の改善はパラメータ最適化,シグナルフィルタリング,ポジションサイズ,ストップ・ロストとテイク・プロフィートメカニズム,およびマルチマーケット適応を通じて,戦略のパフォーマンスと強度をさらに向上させることができます.
/*backtest start: 2023-04-24 00:00:00 end: 2024-04-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estratégia de Médias Móveis e RSI (por Svitorino_trade)", shorttitle="Estratégia-Médias Móveis", overlay=true) len1 = input.int(9, minval=1, title="Length 1") len2 = input.int(21, minval=1, title="Length 2") len3 = input.int(25, minval=1, title="Length 3") len4 = input.int(99, minval=1, title="Length 4") rsi_length = input.int(14, minval=1, title="RSI Length") rsi_oversold = input.float(30, minval=0, maxval=100, title="RSI Oversold Level") rsi_overbought = input.float(70, minval=0, maxval=100, title="RSI Overbought Level") src = input(close, title="Source") ama(src, length) => sum = 0.0 for i = 0 to length - 1 sum := sum + src[i] sum / length avg1 = ama(src, len1) avg2 = ama(src, len2) avg3 = ama(src, len3) avg4 = ama(src, len4) rsi_value = ta.rsi(src, rsi_length) // Condições de entrada e saída para períodos de 9 e 21 cruzamento_9_21_acima = avg1 > avg2 and avg1[1] <= avg2[1] cruzamento_9_21_abaixo = avg1 < avg2 and avg1[1] >= avg2[1] // Condições de entrada e saída para períodos de 25 e 99 cruzamento_25_99_acima = avg3 > avg4 and avg3[1] <= avg4[1] cruzamento_25_99_abaixo = avg3 < avg4 and avg3[1] >= avg4[1] // Plotando os sinais de entrada e saída plotshape(series=cruzamento_9_21_acima, style=shape.triangleup, color=color.green, size=size.small, location=location.belowbar) plotshape(series=cruzamento_9_21_abaixo, style=shape.triangledown, color=color.red, size=size.small, location=location.abovebar) plotshape(series=cruzamento_25_99_acima, style=shape.triangleup, color=color.green, size=size.small, location=location.belowbar) plotshape(series=cruzamento_25_99_abaixo, style=shape.triangledown, color=color.red, size=size.small, location=location.abovebar) // Entradas e saídas para períodos de 9 e 21 if cruzamento_9_21_acima and rsi_value > rsi_overbought strategy.entry("Venda Curta", strategy.short) if cruzamento_9_21_abaixo and rsi_value < rsi_oversold strategy.entry("Compra Curta", strategy.long) if cruzamento_9_21_acima strategy.close("Compra Curta") if cruzamento_9_21_abaixo strategy.close("Venda Curta") // Entradas e saídas para períodos de 25 e 99 if cruzamento_25_99_acima and rsi_value > rsi_overbought strategy.entry("Compra Forte", strategy.long) if cruzamento_25_99_abaixo and rsi_value < rsi_oversold strategy.entry("Venda Forte", strategy.short) if cruzamento_25_99_acima strategy.close("Venda Forte") if cruzamento_25_99_abaixo strategy.close("Compra Forte")