Эта стратегия сочетает в себе индикатор Движущейся средней конвергенции дивергенции (MACD) и индикатор индекса относительной силы (RSI) для установления условий покупки и продажи для использования возможностей реверсии.
Вычислить индикатор MACD, включая быструю линию, медленную линию и линию сигнала.
Вычислить индикатор RSI и установить пороговые значения перекупленности и перепродажи.
Объедините перекрестные сигналы MACD и показатели перекупленности/перепроданности от RSI, чтобы сформулировать условия покупки и продажи:
Условие покупки: быстрая линия MACD пересекает медленную линию (золотой крест), в то время как индикатор RSI только что отступил от зоны перекупленности, сигнализируя об обратном движении.
Условия продажи: быстрая линия MACD пересекает ниже медленной линии (смертный крест), а индикатор RSI входит в зону перекупленности, сигнализируя об обратном движении.
Это позволяет использовать сильные стороны обоих мощных индикаторов для точной покупки и продажи в точках переворота.
MACD может идентифицировать тенденции и торговые возможности. RSI измеряет условия перекупки/перепродажи. Использование обоих повышает точность.
Использование двух индикаторов отфильтровывает ложные сигналы, которые могут возникнуть с одним индикатором.
MACD в сочетании с RSI позволяет покупать до реверсий и продавать после реверсий, чтобы захватить повороты.
Стратегия имеет умеренную частоту, отслеживает тенденции и гибко отслеживает изменения.
MACD может давать ложные сигналы на нестабильных рынках. Параметры RSI нуждаются в оптимизации, чтобы избежать ложных сигналов.
Краткосрочная волатильность может остановить позиции, вызывая убытки.
Параметры RSI и MACD нуждаются в оптимизации, чтобы избежать слишком большого или слишком малого количества сигналов.
Строгое управление рисками и деньгами имеет решающее значение для торговли в режиме реального времени.
Оптимизировать параметры быстрого/медленного MACD для лучших комбинаций.
Оптимизировать пороги перекупленности/перепроданности по показателю RSI для предотвращения ложных сигналов.
Добавить стоп-лосс для контроля риска одной сделки.
Подумайте о добавлении фильтров, таких как полосы Боллинджера или KDJ для дополнительного подтверждения.
Испытайте различные стратегии входа/выхода, такие как прорыв или следующий тренд.
Эта стратегия сочетает в себе сильные стороны MACD и RSI для отклонений. Но настройка параметров, контроль рисков и управление деньгами являются ключевыми для эффективности реального времени. Гибкость делает ее подходящей для различных рыночных условий и стоит тестирования и отслеживания реального времени.
/*backtest start: 2022-11-13 00:00:00 end: 2023-11-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // © sabirt strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI') //MACD Settings fastMA = input.int(title='Fast moving average', defval=12, minval=1) slowMA = input.int(title='Slow moving average', defval=26, minval=1) signalLength = input.int(9, minval=1) //RSI settings RSIOverSold = input.int(35, minval=1) RSIOverBought = input.int(80, minval=1) src = close len = input.int(14, minval=1, title='Length') up = ta.rma(math.max(ta.change(src), 0), len) down = ta.rma(-math.min(ta.change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought [currMacd, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength) [prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength) signal = ta.ema(currMacd, signalLength) avg_1 = math.avg(currMacd, signal) crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na avg_2 = math.avg(currMacd, signal) crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold) strategy.close('buy', when=crossoverBear and wasOverbought)