Стратегия MACD Valley Detector является торговой стратегией, основанной на индикаторе MACD. Стратегия генерирует сигналы покупки путем обнаружения долин в индикаторе MACD. Когда индикатор MACD образует долину, значение MACD меньше или равно -0,4, а разница между MACD и его сигнальной линией меньше 0, стратегия выпускает сигнал покупки и устанавливает цену получения прибыли.
Основой стратегии MACD Valley Detector является использование индикатора MACD для поимки потенциальных возможностей переворота. Индикатор MACD рассчитывается на основе разницы между двумя экспоненциальными скользящими средними (EMAs), отражающей изменения в динамике цен. Когда индикатор MACD образует долину, он предполагает, что нисходящий импульс цены может ослабеть, и есть возможность переворота.
Стратегия использует следующие условия для определения долины MACD:
При одновременном выполнении вышеперечисленных условий стратегия рассматривает ее как долину MACD и выпускает сигнал покупки.
Стратегия MACD Valley Detector - это торговая стратегия, основанная на обнаружении долин в индикаторе MACD. Чтобы улучшить стратегию, можно рассмотреть возможность внедрения динамического стоп-лосса, оптимизации параметров, сочетания с другими индикаторами для фильтрации и динамического получения прибыли. В целом, стратегия MACD Valley Detector предоставляет идею для захвата возможностей для обратной торговли, но все еще должна быть оптимизирована и улучшена на основе реальных рыночных условий и потребностей.
/*backtest start: 2024-03-12 00:00:00 end: 2024-04-11 00:00:00 period: 1h basePeriod: 15m 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/ // © freditansari //@version=5 //@version=5 strategy("MACD Valley Detector", overlay=true) fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength) aMACD = ta.ema(MACD, MACDLength) delta = MACD - aMACD rsi = ta.rsi(close, 14) atr = ta.atr(14) qty=1 takeProfitValue =7 // stopLossValue = 1 // close[0] < close[1] and close[1] > close[2] is_valley= delta[0] > delta[1] and delta[1]<delta[2]? 1:0 // plot(is_valley , "valley?") if(is_valley==1 and MACD<=-0.4 and delta <0) takeProfit = close +takeProfitValue action = "buy" // strategy.entry("long", strategy.long, qty=qty) // // strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit) // strategy.exit("exit", "long", limit=takeProfit) alert('{"TICKER":"'+syminfo.ticker+'","ACTION":"'+action+'","PRICE":"'+str.tostring(close)+'","TAKEPROFIT":"'+str.tostring(takeProfit)+'","QTY":"'+str.tostring(qty)+'"}') if (ta.crossover(delta, 0)) stopLoss = low -0.3 takeProfit = high +0.3 strategy.entry("MacdLE", strategy.long,qty=qty, comment="MacdLE") strategy.exit("exit long", "MacdLE", limit=takeProfit) // strategy.exit("exit long", "MacdLE", stop=stopLoss, limit=takeProfit) if (ta.crossunder(delta, 0)) stopLoss = high + 0.3 takeProfit = low - 0.3 strategy.entry("MacdSE", strategy.short,qty=qty, comment="MacdSE") strategy.exit("exit long", "MacdLE", limit=takeProfit) // strategy.exit("exit short", "MacdSE", stop=stopLoss, limit=takeProfit) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)