この戦略は,逆転の取引機会を特定するために255期間のEMAとMACD指標を使用します.価格が255期間のEMAとMACDクロスオーバーから遠く離れたときに逆転ポジションに入ります.
255期間のEMAは,中~長期のトレンド方向を決定するために使用されます.EMAから遠く離れた価格は,過買い/過売り領域を表します.
上部と下部帯はEMAに基づいて設定され,帯幅はATR指標によって動的に調整されます.
価格が上位帯を超えると,過剰購入領域にある.下位帯を超えると,過剰販売領域にある.これは逆転を予測する状況です.
MACD インディケーターは標準パラメータ (12, 26, 9) を使用する.MACD クロスオーバーは上昇信号であり,デスクロスは下落信号である.
価格がEMAから遠く離れると逆向きのポジションが取られ,MACD逆転が起こります.
255期間のEMAは 中期から長期間の動向をかなり正確に判断できます
MACDのクロスオーバーは短期的な逆転の機会を敏感に捉えることができます
EMA帯は,傾向を追求するのを避けるために,買い過ぎ/売り過ぎの地域を特定するのに役立ちます.
リバース・トレーディングは,価格の逆転に先立って早期入場を可能にし,いくつかのプランベースの特性を有します.
ダイナミックなATRストップロスはリスクを効果的に制御できます
MACD信号は誤った反転を伴うため,不必要な損失を引き起こす可能性があります.
強い傾向のシナリオでは逆転は失敗する可能性が高いので,盲目の逆転を避けるべきです.
ストップ・ロスは,あまりにも緊密に設定されている場合,早めにストップアウトされ,あまりにも幅が広い場合,リスク制御が不十分になる可能性があります.
不適切なパラメータ調節も戦略のパフォーマンスに影響を与え,反復的な最適化が必要です.
取引コストも最終的な収益性に影響を及ぼし,考慮されるべきです.
中期から長期間のトレンドメーカーをよりよく探すために,異なるEMA期間をテストします.
他の指標とEMAを組み合わせて,過剰購入/過剰売却を特定してみてください.例えばボリンジャーバンド,KD,RSI.
MACD パラメータを最適化して,より高い感度や安定性を確保する.
他のストップ・ロスの方法を試してみてください 利益をロックするためにストップを引っ張るなどです
耐久性のために 異なる製品と時間枠のパラメータを最適化します
強いトレンドの逆転を避けるためにトレンド強度フィルターを組み込む.
この戦略は,EMAの中期から長期トレンドとMACD短期逆転を組み合わせ,過買い/過売り地域で逆転取引を行う.これはメリットとデメリットを持つ基本的な逆転戦略である.さらなるパラメータ調整とリスク管理は,効率的な取引システムに変えることができる.しかし,いかなる戦略も,機械的な信号ではなく,市場環境に応じて適応調整を必要とする.
/*backtest start: 2023-09-12 00:00:00 end: 2023-09-19 00:00:00 period: 15m basePeriod: 5m 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/ // © bufirolas //--- From 15 Trading Examples by Trader Alyx --- // Seems like this strategy works better if we reverse the EMA filter logic. // "Description: This basic scalping strategy allows you to enter the market based upon sentiment // provided by the EMA, set at 255 periods. When price is trading below the 255 EMA, you would // look to enter a LONG BUY positions, and when price is trading above the 255 EMA, you would // look to enter a SELL SHORT position. The MACD lagging indicator will show you clear signals for // when to do this. When the MACD lines cross in a bullish manner and price is below the 255 // EMA, buy. When the MACD lines cross in a bearish manner and price is above the 255 EMA, // sell. // NOTE: Make sure that price is trading away from the 255EMA before entering a LONG or SHORT // position. As you can see in the chart below, the clearest signs for trade entry were presented // when price was trading AWAY from the 255EMA" //@version=4 // strategy("255 EMA Strategy", overlay=true, pyramiding=1, default_qty_type=strategy.cash, default_qty_value=100, commission_value = 0.04, initial_capital=100) //Inputs i_reverse=input(false, title="Trade Reverse") i_EMAreverse=input(true, title="EMA Reverse Entry") i_EMAlength=input(defval=255, title="EMA Length") i_EMAexpander=input(defval=5, title="EMA Expander") i_MACDmult=input(defval=1, minval=1, title="MACD Mult") //SL & TP Calculations i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit") i_SwingLookback=input(20, title="Swing Lo/Hi Lookback") i_SLExpander=input(defval=0, step=.2, title="SL Expander")*.01 i_TPExpander=input(defval=0, step=.2, title="TP Expander")*.01 //Strategy Variables EMA=ema(close,i_EMAlength) [macdLine, signalLine, histLine]=macd(close, 12*i_MACDmult, 26*i_MACDmult, 9*i_MACDmult) EMAupper=EMA+((atr(100))*i_EMAexpander) EMAlower=EMA-((atr(100))*i_EMAexpander) //SL & TP Variables SwingLow=lowest(i_SwingLookback) SwingHigh=highest(i_SwingLookback) //Calculations EMAbuy=i_EMAreverse ? close > EMAupper : close < EMAlower EMAsell=i_EMAreverse ? close < EMAlower : close > EMAupper MACDbuy=crossover(macdLine, signalLine) MACDsell=crossunder(macdLine, signalLine) //SL & TP Calculations bought=strategy.position_size != strategy.position_size[1] lSL=valuewhen(bought, SwingLow, 0)*(1-i_SLExpander) sSL=valuewhen(bought, SwingHigh, 0)*(1+i_SLExpander) lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))*(1-i_TPExpander)) sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0) - strategy.position_avg_price)*(1+i_TPExpander*100) islong=strategy.position_size > 0 isshort=strategy.position_size < 0 SL= islong ? lSL : isshort ? sSL : na TP= islong ? lTP : isshort ? sTP : na //Entries strategy.entry("long", long=not i_reverse?true:false, when=EMAbuy and MACDbuy) strategy.entry("short", long=not i_reverse?false:true, when=EMAsell and MACDsell) //Exits if i_SL strategy.exit("longexit", "long", stop=SL, limit=TP) strategy.exit("shortexit", "short", stop=SL, limit=TP) //Plots plot(EMA, "EMA", color=color.white, linewidth=2) plot(EMAupper, "EMA Upper Band") plot(EMAlower, "EMA Lower Band") plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL") plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP")