モメントインジケータークロスオーバー戦略は,指数移動平均値 (EMA) と相対強度指数 (RSI) の信号の組み合わせに基づいた取引アプローチである.この戦略は,二つのEMAラインのクロスオーバーに基づいて購入・売却信号をレバレッジするように設計されており,金融市場で取引を管理する際にシンプルさと有効性を提供している.
この戦略の核心は,高速と遅いEMAラインのクロスオーバーシステムである.戦略は,異なるパラメータを持つ3つのEMAラインを定義する.ema1
, ema2
そしてema3
その中にはema1
短期的な傾向を示していますema2
中期的な傾向を示し,ema3
短期トレンドが中期トレンドを超えると,買い信号が生成されます.短期トレンドが中期トレンドを下回ると,売り信号が生成されます.
誤った信号をフィルタリングするために,戦略はさらに2つの条件を定義します.bodybar1 > bodybar2
そしてclose > entrybar
(購入信号) またはclose < entrybar
(セール・シグナル) これは,最近の2つのキャンドルスタイクがシグナルの方向に一致することを保証し,値がエントリーポイントを突破して冗長なエントリーを避けるようにします.
また,戦略には,過剰購入および過剰販売状況を評価するためのRSI指標が含まれています.RSIの過剰購入領域は過剰購入信号を定義するために使用され,過剰販売領域は過剰販売信号を定義するために使用されます.これは過熱および過冷市場での間違った信号を避けるのに役立ちます.
この戦略の利点は以下の通りです.
この戦略のリスクは以下のとおりです.
戦略は以下の側面で最適化できます.
モメントインジケータークロスオーバー戦略は,EMAとRSIの強みを統合し,インジケータークロスオーバーに基づいて取引信号を形成する.この戦略はシンプルで実用的で,初心者向けに適しており,戦略パフォーマンスを向上させるための実際のニーズに応じて拡張および最適化することもできる.厳格なリスク管理により,戦略は安定した過剰収益を約束する.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('EMA Crossover Strategy', shorttitle='EMA Crossover', overlay=true) // Define input for position size as a percentage of equity position_size_pct = input(1, title='Position Size (%)') / 100 //Input EMA len1 = input.int(25, minval=1, title='EMA 1') src1 = input(close, title='Source') ema1 = ta.ema(src1, len1) len2 = input.int(100, minval=1, title='EMA 2') src2 = input(close, title='Source') ema2 = ta.ema(src2, len2) len3 = input.int(200, minval=1, title='EMA 3') src3 = input(close, title='Source') ema3 = ta.ema(src3, len3) //End of format //Format RSI lenrsi = input(14, title='RSI length') outrsi = ta.rsi(close,lenrsi) //plot(outrsi, title='RSI', color=color.new(color.blue, 0), linewidth=1) //hline(70, 'Overbought', color=color.red) //hline(30, 'Oversold', color=color.green) //End of format bodybar1 = math.abs(close - open) bodybar2 = math.abs(close[1] - open[1]) // Plot the EMAs plot(ema1, color=color.new(color.blue, 0), title='EMA 1') plot(ema2, color=color.new(color.red, 0), title='EMA 2') //plot(ema3, color=color.new(#ffffff, 0), title='EMA 3') // EMA Crossover conditions emaCrossoverUp = ta.crossover(ema1, ema2) emaCrossoverDown = ta.crossunder(ema1, ema2) var entrybar = close // Initialize entrybar with the current close // Calculate crossovers outside of the if statements emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny) plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny) // Define trading logic with custom position size and RSI conditions if emaCrossoverUp or emaCrossoverUpOccured strategy.entry('Buy', strategy.long) entrybar := close // Update entrybar when entering a new buy position entrybar if emaCrossoverDown or emaCrossoverDownOccured strategy.entry('Sell', strategy.short) entrybar := close // Update entrybar when entering a new sell position entrybar