この戦略は,シンプル・ムービング・アベア (SMA),平均・リアル・レンジ (ATR),コモディティ・チャネル・インデックス (CCI) とボリンジャー・バンドを組み合わせて,短期・中期価格動向を特定し,取引決定を支援します.
この戦略は,5日,10日,50日および200日線を含む価格トレンドの方向性を認識するために,異なる期間の4つのSMAラインを使用する. ATRは市場の変動を測定し,ストップロストポイントを設定するために使用される. CCIは,過剰購入および過剰販売条件を特定するために使用される.ボリンジャーバンドの上下列はサポート/レジスタンスレベルとして機能することができる.
短期SMA (5日線と10日線) が長期SMA (50日線と200日線) を越えるとロングに行く.短期SMAが長期SMAを下回るとショートに行く.CCIが100を超えると売る.CCIが-100未満になると買う.ATR値に基づいてストップロスを設定する.
この戦略は,移動平均線の傾向判断とCCIの過買い/過売り判断を組み合わせることで,市場の機会を効果的に把握することができます.それは特に中期および短期間の取引にうまく機能します.また,リスク制御は比較的科学的であり,損失を最大限に回避することができます.
この戦略は比較的保守的で,取引シグナルを見逃す可能性があります. 範囲に限定された市場またはトレンド逆転がある場合,利益を取ることは早めに誘発されることがあります. さらに,不適切なパラメータ設定はパフォーマンスにも影響を与えます.
SMAのパラメータを最適化して,現在の市場状況に近いものにしようとします.ボリンジャーバンドの標準偏差はサポート/レジスタンスレベルとしてより良いパフォーマンスのために調整することもできます.さらに,KDJ,MACDなどの判断を支援する他の指標を追加することを検討してください.これは戦略の勝利率を改善することができます.
この戦略は,市場を判断するためのさまざまな分析ツールを統合し,パラメータが適切に設定された場合,満足のいく投資収益をもたらします.ストップロスのルールはリスクを制御することもできます.紙取引およびライブ取引で検証および最適化することが重要です.
/*backtest start: 2023-02-23 00:00:00 end: 2024-02-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © maizirul959 //@version=4 strategy("MACD,RSI & EMA strategy with MA+PSAR by MAM", overlay=true) //Input Data _ema_len1 = input(5, title="EMA1 length") _ema_len2 = input(20, title="EMA2 length") _macd_fast = input(12, title="MACD Fast") _macd_slow = input(26, title="MACD Slow") _macd_signal_len = input(20, title="MACD Signal length") //MAM add SMA _sma_len1 = input(5, title="SMA1 Length") _sma_len2 = input(10, title="SMA2 Length") _sma_len3 = input(50, title="SMA3 Length") _sma_len4 = input(200, title="SMA4 Length") lineWidth = input(1, minval=1, title="Line width") src = input(close, title="Source") SMA1 = if _sma_len1 != 0 sma(src, _sma_len1) SMA2 = if _sma_len2 != 0 sma(src, _sma_len2) SMA3 = if _sma_len3 != 0 sma(src, _sma_len3) SMA4 = if _sma_len4 != 0 sma(src, _sma_len4) //__________________________________________________________________________ _rsi_len = input(14, title="RSI length") _rsi_signal_len = input(20, title="RSI signal length") //_________________________________________________________________________ //MAM Add PSAR PSAR_start = input(0.02) PSAR_increment = input(0.02) PSAR_maximum = input(0.2) psar = sar(PSAR_start, PSAR_increment, PSAR_maximum) //_________________________________________________________________________ _ema1 = ema(close, _ema_len1) _ema2 = ema(close, _ema_len2) //_________________________________________________________________________ //MAM add SMA //_sma1 = ema(close, _sma_len1) //_sma2 = ema(close, _sma_len2) //_________________________________________________________________________ _macd = ema(close, _macd_fast) - ema(close, _macd_slow) _macd_signal = ema(_macd, _macd_signal_len) _rsi = rsi(close, _rsi_len) _rsi_signal = ema(_rsi, _rsi_signal_len) //PLOT SMA plot(SMA1, color=#B71C1C, title="SMA1", linewidth=lineWidth) plot(SMA2, color=#FFFF00, title="SMA2", linewidth=lineWidth) plot(SMA3, color=#5b34ff, title="SMA3", linewidth=lineWidth) plot(SMA4, color=#d7d7d7, title="SMA4", linewidth=lineWidth) //PLOT PSAR plot(psar, "ParabolicSAR", style=plot.style_cross, color=#3A6CA8) //plot(_rsi, color=color.yellow) //plot(_rsi_signal, color=color.green) //plot(_macd, color=color.blue) //plot(_macd_signal, color=color.red) longCondition = close > _ema1 and close > _ema2 and _macd > _macd_signal and _rsi > _rsi_signal if (longCondition) strategy.entry("Buy",strategy.long) shortCondition = close < _ema1 and close <_ema2 and _macd < _macd_signal and _rsi < _rsi_signal if (shortCondition) strategy.entry("Sell",strategy.short)