В процессе загрузки ресурсов... загрузка...

Оптимизированная стратегия соотношения риск-вознаграждение, основанная на перекрестном перемещении скользящих средних

Автор:Чао Чжан, Дата: 2024-12-27 15:46:05
Тэги:М.А.SMARRSLТП

img

Обзор

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

Принцип стратегии

Основная логика основана на перекрестных сигналах, генерируемых двумя скользящими средними (10-периодическими и 30-периодическими). Система генерирует длинные сигналы, когда быстрый MA переходит выше медленного MA, и короткие сигналы, когда быстрый MA переходит ниже. После каждого входа система автоматически вычисляет уровни стоп-лосса на основе заранее установленного процента потерь 2% и устанавливает цели получения прибыли в соответствии с соотношением риск-вознаграждение 2.5.

Преимущества стратегии

  1. Систематическое управление рисками: достижение стандартизированного управления капиталом с помощью фиксированных процентов стоп-лосса и коэффициентов риска и вознаграждения
  2. Целевой механизм торговли: Сигнальная система, основанная на кроссоверах MA, устраняет субъективную предвзятость суждений
  3. Сильная адаптивность параметров: ключевые параметры, такие как процент стоп-лосса и соотношение риск-прибыль, могут быть гибко скорректированы
  4. Высокий уровень автоматизации: автоматизированные процессы от генерации сигнала до управления позицией уменьшают человеческие ошибки

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

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

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

  1. Использование фильтров тренда: добавление длительных скользящих средних или других индикаторов тренда для фильтрации ложных сигналов
  2. Динамический механизм стоп-лосса: корректировка процентов стоп-лосса на основе волатильности рынка для улучшения адаптации
  3. Подтверждение объема: включить показатели объема для проверки достоверности прорыва
  4. Оптимизация времени входа: дождитесь отступлений после перекресток MA перед входом в позиции

Резюме

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


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("SOL 15m 2.5 R:R Strategy", overlay=true, margin_long=100, margin_short=100, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)

//---------------------------------------------------
// User Inputs
//---------------------------------------------------
// sym = input.symbol("swap", "Symbol")
timeframe = input.timeframe("15", "Timeframe")

fastLength  = input.int(10, "Fast MA Length")
slowLength  = input.int(30, "Slow MA Length")

stopLossPerc = input.float(2.0, "Stop Loss %", step=0.1) // This is an example; adjust to achieve ~45% win rate
RR           = input.float(2.5, "Risk to Reward Ratio", step=0.1)

//---------------------------------------------------
// Data Sources
//---------------------------------------------------
price = request.security("swap", timeframe, close)

// Compute moving averages
fastMA = ta.sma(price, fastLength)
slowMA = ta.sma(price, slowLength)

// Entry Conditions
longCondition  = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)

//---------------------------------------------------
// Stop Loss and Take Profit Calculation
//---------------------------------------------------
var entryPrice = 0.0

if (strategy.position_size == 0) // not in a position
    if longCondition
        // Long entry
        entryPrice := price
        strategy.entry("Long", strategy.long)

    if shortCondition
        // Short entry
        entryPrice := price
        strategy.entry("Short", strategy.short)

if strategy.position_size > 0
    // We are in a long position
    if strategy.position_avg_price > 0 and strategy.position_size > 0
        longStop  = strategy.position_avg_price * (1 - stopLossPerc/100)
        longTarget = strategy.position_avg_price * (1 + (stopLossPerc/100)*RR)
        strategy.exit("Long Exit", "Long", stop=longStop, limit=longTarget)

if strategy.position_size < 0
    // We are in a short position
    if strategy.position_avg_price > 0 and strategy.position_size < 0
        shortStop  = strategy.position_avg_price * (1 + stopLossPerc/100)
        shortTarget = strategy.position_avg_price * (1 - (stopLossPerc/100)*RR)
        strategy.exit("Short Exit", "Short", stop=shortStop, limit=shortTarget)

//---------------------------------------------------
// Plotting
//---------------------------------------------------
plot(fastMA, color=color.new(color.teal, 0), title="Fast MA")
plot(slowMA, color=color.new(color.orange, 0), title="Slow MA")


Связанные

Больше