Динамическая стратегия перекрестка SMMA и SMA

Автор:Чао Чжан, Дата: 2024-02-02 11:38:08
Тэги:

img

Обзор

Эта стратегия использует перекрестные сигналы между 50-периодической сглаженной скользящей средней (SMMA) и 20-периодической простой скользящей средней (SMA) для определения входов и выходов. Она генерирует сигналы покупки, когда быстрая линия SMA пересекает линию SMMA, и сигналы продажи, когда SMA пересекает линию SMMA. В то же время стратегия предусматривает фиксированные уровни прибыли и динамические уровни стоп-лосса для блокировки прибыли и контроля риска.

Логика стратегии

  1. Вычислить и составить график 50-периодного SMMA и 20-периодного SMA.
  2. Когда SMA пересекает SMMA снизу, генерируется сигнал покупки. И наоборот, когда SMA пересекает SMMA снизу, генерируется сигнал продажи.
  3. При появлении сигнала покупки и продажи устанавливаются соответственно позиции Купить и Продать.
  4. Установите фиксированный уровень прибыли в 150 тиков для каждой позиции.
  5. Установите динамический уровень стоп-лосса по цене закрытия следующего бара после сигнала.
  6. Если цена достигнет уровня получения прибыли, происходит получение прибыли.

Сильные стороны

  1. Стратегии двойной скользящей средней просты в использовании с помощью простых принципов и понятны.
  2. SMMA - это улучшение по сравнению с SMA для лучшего отслеживания тенденций.
  3. Сочетание SMA и SMMA различных периодов помогает отфильтровать шум при обнаружении тенденций.
  4. Принятие динамического стоп-лосса позволяет корректировать уровень стоп-лосса на основе изменений рынка для эффективного контроля рисков.
  5. Предварительно установленный уровень прибыли помогает своевременно закрепить прибыль.

Риски

  1. Стратегии двойной скользящей средней имеют тенденцию генерировать ложные сигналы и быть обманутыми.
  2. Фиксированная прибыль может пропустить сильные тенденции.
  3. Динамический стоп-лосс может слишком приблизиться к рыночной цене в волатильных условиях.
  4. Различия между продуктами и сроками требуют внимания.

Руководство по оптимизации

  1. Испытать комбинации различных параметров (период цикла, критерии фильтрации и т.д.) для определения оптимального.

  2. Включайте другие факторы, такие как пики громкости, для фильтрации сигналов.

  3. Используйте инструменты оптимизации параметров для поиска оптимальных параметров.

  4. Подумайте об интеграции других методов получения прибыли, таких как остановка или выходы на основе коэффициента прибыли.

  5. Расчет динамического диапазона стоп-лосса на основе волатильности рынка.

Заключение

Эта стратегия имеет относительно простую логику, захватывающую направления тренда с помощью двойных скользящих средних. Гибкое использование фиксированной прибыли и динамического стоп-лосса для получения прибыли и контроля риска достигает баланса между риском и вознаграждением. Дальнейшая оптимизация параметров и логики может адаптировать эту стратегию к более широкому диапазону рыночных условий.


/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true)

// Define 50 SMMA
smma50 = sma(close, 50)

// Define 20 SMA
sma20 = sma(close, 20)

// Plotting the SMMA and SMA
plot(smma50, color=color.blue, title="50 SMMA")
plot(sma20, color=color.red, title="20 SMA")

// Initialize TP and SL variables
tp = 150
var float sl_price = na

// Buy Signal
buySignal = crossover(sma20, smma50)
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price)

// Sell Signal
sellSignal = crossunder(sma20, smma50)
strategy.entry("Sell", strategy.short, when = sellSignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price)

// Update stop loss level on every crossover
if (buySignal or sellSignal)
    sl_price := close[bar_index + 1]

// Plot Stop Loss level
plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)


Больше