Двойная скользящая средняя кроссовер адаптивная динамическая стратегия стоп-профит и стоп-лосс

SMA MA SL TP ATR
Дата создания: 2024-11-18 15:32:26 Последнее изменение: 2024-11-18 15:54:16
Копировать: 0 Количество просмотров: 505
1
Подписаться
1617
Подписчики

Двойная скользящая средняя кроссовер адаптивная динамическая стратегия стоп-профит и стоп-лосс

Обзор

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

Стратегический принцип

В качестве основной основы для торгового сигнала стратегия использует простые движущиеся средние (SMA) двух различных периодов. При прохождении долгосрочной средней линии над краткосрочной средней линией система генерирует многосигналы; при прохождении долгосрочной средней линии под краткосрочной средней линией система генерирует сигналы об уходе.

Стратегические преимущества

  1. Ясность сигнального механизма - двойная равнолинейная скрещивание является классическим техническим показателем, сигнал ясен и понятен
  2. Управление рисками - управление рисками на каждой сделке с помощью динамического стоп-стоп
  3. Высокий уровень автоматизации - автоматизация выполнения всего процесса от распознавания сигналов до управления позициями
  4. Эластичность - может быть скорректирована с помощью параметров для различных рыночных условий
  5. Простая структура - четкая логика кода, удобство обслуживания и оптимизации
  6. Мониторинг в режиме реального времени - встроенная функция напоминания о сделках, позволяющая легко отслеживать выполнение стратегии

Стратегический риск

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

Направление оптимизации стратегии

  1. Добавление фильтров трендов, чтобы избежать частых торгов на волатильных рынках
  2. Введение динамической корректировки показателя волатильности
  3. Добавление сигнала подтверждения объема сделки для улучшения качества сделки
  4. Оптимизация времени открытия позиций, рассмотрение вопроса о введении механизма обратной корректировки цен
  5. Усовершенствование системы управления капиталом, реализация динамического контроля позиций
  6. Повышение показателей рыночных настроений, повышение надежности сигналов

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD)

// Configurable Inputs
stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1)
take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1)
short_ma_length = input.int(title="Short MA Length", defval=9, minval=1)
long_ma_length = input.int(title="Long MA Length", defval=21, minval=1)

// Moving Averages
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)

// Plotting Moving Averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.red, title="Long MA")

// Buy and Sell Signals
buy_signal = ta.crossover(short_ma, long_ma)
sell_signal = ta.crossunder(short_ma, long_ma)

// Market Buy Logic
if (buy_signal and strategy.position_size <= 0)
    // Close any existing short position
    if (strategy.position_size < 0)
        strategy.close(id="Market Sell")
    
    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    long_stop = entry_price * (1 - stop_loss_percent / 100)
    long_take_profit = entry_price * (1 + take_profit_percent / 100)

    // Enter Long Position
    strategy.entry(id="Market Buy", direction=strategy.long)
    strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit)

    // Alert for Market Buy
    alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close)

// Market Sell Logic
if (sell_signal and strategy.position_size >= 0)
    // Close any existing long position
    if (strategy.position_size > 0)
        strategy.close(id="Market Buy")

    // Calculate Stop Loss and Take Profit Prices
    entry_price = close
    short_stop = entry_price * (1 + stop_loss_percent / 100)
    short_take_profit = entry_price * (1 - take_profit_percent / 100)

    // Enter Short Position
    strategy.entry(id="Market Sell", direction=strategy.short)
    strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit)

    // Alert for Market Sell
    alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)