Когда краткосрочная скользящая средняя (9-дневная МА) пересекается выше долгосрочной скользящей средней (15-дневная МА), это указывает на более сильный краткосрочный подъемный импульс, чтобы пойти на длинный. Когда краткосрочная МА пересекается ниже долгосрочной МА, это сигнализирует о более сильном краткосрочном нисходящем импульсе, чтобы пойти на короткий. Кроме того, угол МА должен быть больше 30 градусов, чтобы обеспечить достаточную восходящую или нисходящую мощность. Для фильтрации ложных сигналов используются специальные внутридневные шаблоны свечей.
Эта стратегия в основном использует способность движущихся средних следовать за трендом и характеристики определенных моделей свечей.
В качестве индикатора, следующего за трендом, скользящая средняя может отражать средне- и долгосрочные ценовые тенденции. Внутреннедневные свечи отражают сравнение мощности участников рынка в краткосрочной перспективе. Использование их вместе может иметь торговое значение в разные временные рамки.
К основным рискам этой стратегии относятся:
Риск обратного тренда. Движущиеся средние не могут дать раннее предупреждение об обратном тренде. Удержание позиций здесь может привести к огромным потерям. Этот риск можно контролировать с помощью строгой стоп-лосс.
Следующие аспекты этой стратегии могут быть улучшены:
Добавить анализ основных тенденций, например, подтвердить средне- и долгосрочные каналы, чтобы избежать торговли против тенденций.
Например, можно использовать балансовый объем для того, чтобы избежать продажи цены с высоким импульсом или покупки цены с низким импульсом.
Выбирайте акции с улучшенными перспективами и прибылью, чтобы улучшить процент выигрыша.
Оптимизируйте параметры скользящей средней, тестируйте различные периоды длины, системы трех или пятикратного MA для большей гибкости настройки.
Проверьте параметры стоп-лосса/приобретения прибыли. Установите коэффициенты скидки по книге заказов на основе результатов бэкстеста для достижения оптимального соотношения риск-вознаграждение.
Вышеуказанные направления оптимизации должны значительно повысить рентабельность и стабильность этой стратегии.
Следующим шагом является дальнейшее улучшение показателя выигрыша и рентабельности за счет оптимизации параметров. Добавление большего количества индикаторов также может усилить надежность.
/*backtest start: 2024-01-29 00:00:00 end: 2024-02-28 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Moving Average Crossover Strategy with Candlestick Patterns", overlay=true) // Define input parameters fast_length = input(9, "Fast MA Length") slow_length = input(15, "Slow MA Length") stop_loss_percent = input(0.25, "Stop Loss (%)") target_percent = input(0.25, "Target (%)") angle_threshold = input(30, "Angle Threshold (degrees)") // Calculate moving averages fast_ma = sma(close, fast_length) slow_ma = sma(close, slow_length) // Define candlestick patterns is_pin_bar() => pin_bar = abs(open - close) > 2 * abs(open[1] - close[1]) high_tail = max(open, close) - high > abs(open - close) * 1.5 low_tail = low - min(open, close) > abs(open - close) * 1.5 pin_bar and high_tail and low_tail is_marubozu() => marubozu = abs(open - close) > abs(open[1] - close[1]) * 0.75 no_upper_shadow = high == max(open, close) no_lower_shadow = low == min(open, close) marubozu and no_upper_shadow and no_lower_shadow is_full_body() => full_body = abs(open - close) > abs(open[1] - close[1]) * 0.95 full_body // Plot moving averages plot(fast_ma, color=color.blue, title="Fast MA") plot(slow_ma, color=color.red, title="Slow MA") // Calculate angle of slow moving average ma_angle = abs(180 * (atan(slow_ma[1] - slow_ma) / 3.14159)) // Generate buy/sell signals based on angle condition and candlestick patterns buy_signal = crossover(fast_ma, slow_ma) and ma_angle >= angle_threshold and (is_pin_bar() or is_marubozu() or is_full_body()) sell_signal = crossunder(fast_ma, slow_ma) // Calculate stop-loss and target levels stop_loss_level = close * (1 - stop_loss_percent / 100) target_level = close * (1 + target_percent / 100) // Execute trades based on signals with stop-loss and target strategy.entry("Buy", strategy.long, when=buy_signal) strategy.exit("Exit", "Buy", stop=stop_loss_level, limit=target_level) // Plot buy/sell signals on chart (optional) plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) // Plot angle line hline(angle_threshold, "Angle Threshold", color=color.black, linestyle=hline.style_dashed)