Эта стратегия объединяет методы пересечения скользящей средней и прорыва уровня сопротивления для установки сигналов покупки и продажи для автоматизированной торговли. Когда краткосрочная скользящая средняя пересекает среднесрочную скользящую среднюю сверху, и цена акций прорывается через уровень сопротивления, генерируется сигнал покупки. Стратегия устанавливает прибыль на 15% роста цены и стоп-лосс на 3% снижения цены для контроля рисков. Эта зрелая количественная стратегия торговли может автоматически идентифицировать рыночные тенденции и входить в позиции при появлении технических сигналов с надлежащим управлением рисками.
Стратегия генерирует торговые сигналы, основанные главным образом на следующих технических показателях и суждениях:
Метод пересечения скользящей средней: рассчитываются 20-дневные и 44-дневные простые скользящие средние. Когда 20-дневная SMA пересекает 44-дневную линию, считается, что рынок находится в восходящей тенденции, генерируя сигнал покупки.
Техника прорыва уровня сопротивления: уровни цен, которые цена акции неоднократно достигала, но не смогла прорваться, называются уровнями сопротивления. Прорыв через них указывает на то, что цена вступает в новый восходящий тренд. Эта стратегия рассматривает прорыв выше 0,7% предыдущего закрытия как прорыв сопротивления.
Осиллятор RSI: Индекс относительной силы, индикатор импульса для выявления условий перекупа и перепродажи.
Анализ объема: объем, превышающий средний за последние 10 дней, часто указывает на более сильный интерес к покупке или продаже и динамику движения цен.
Сигналы покупки: запускаются, когда короткая SMA пересекает среднюю SMA, причем значение RSI перекуплено и превышает средний объем торгов, что указывает на тенденцию к росту.
Сигналы продажи: 15% прибыли от входной цены, 3% стоп-лосс.
Эта зрелая количественная стратегия торговли объединяет несколько методов технического анализа для определения структуры рынка и тренда, автоматически генерируя торговые сигналы во время формирования тренда с надлежащим управлением рисками.
Устанавливает рыночные тенденции с помощью техники скользящей средней.
Избегает открытия позиций во время ложных прорывов, используя анализ объема.
Эффективное управление рисками путем установки стоп-лосса и взятки прибыли, оптимизации соотношения риск-вознаграждение.
В целом отличная оценка структуры рынка, строгие правила торговли и контроль рисков делают это надежной количественной торговой стратегией.
Системы двойной скользящей средней могут быть чувствительны к настройке параметров для разных периодов.
Системы, следующие за трендом, не могут быстро реагировать на внезапные фундаментальные события, что создает риски остановки потерь.
Хотя при установке стоп-лосса высокая частота торговли приводит к неизбежному количеству выполнений стоп-лосса, что приводит к неравномерному уровню прибыли.
Сигналы технических индикаторов часто отстают от лучших точек переворота рынков.
Оптимизировать параметры, такие как скользящие средние длины, остановка потерь / прибыли цели методами настройки параметров, чтобы найти оптимальный.
Добавьте другие технические индикаторы, такие как полосы Боллинджера для обнаружения диапазона, MACD для обнаружения дивергенций и т. Д., Чтобы улучшить точность сигнала.
Включать фундаментальные и событиями обусловленные сигналы, чтобы избежать стоп-лосса, вызванного негативными новостями.
Оптимизировать управление деньгами по фиксированному количеству, фиксированным процентным методам контроля рисков по торговле.
Эта стратегия демонстрирует плавные операции, точные суждения и строгие правила торговли, представляя собой одну из наиболее эффективных количественных торговых методов. Но только технический анализ имеет ограничения в чтении рынков, поэтому дальнейшие улучшения заключаются в включении большего количества индикаторов и сигналов фундаментальных / событий, оптимизации уровней стоп-лосса / получения прибыли и механизмов управления деньгами. Вкратце, эта стратегия достигла высокого уровня среди стратегий технического анализа, но должна двигаться к фундаментальным / эволюционным циклам.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Advanced Strategy with Conditional Stop Loss", overlay=true) // Parameters ma_length_20 = 20 ma_length_44 = 44 ma_length_100 = 100 rsi_length = 14 volume_length = 10 profit_target = 1.15 // 15% above the buy price stop_loss_target = 0.97 // 3% below the buy price wait_candles = 10 // Number of candles to wait after selling, unless MA cross condition met // Indicators moving_average_20 = ta.sma(close, ma_length_20) moving_average_44 = ta.sma(close, ma_length_44) moving_average_100 = ta.sma(close, ma_length_100) rsi = ta.rsi(close, rsi_length) volumeAvg = ta.sma(volume, volume_length) // Variables to manage the wait period after a sell var int last_sell_candle = 0 // Update last sell candle if (strategy.position_size[1] > 0 and strategy.position_size == 0) last_sell_candle := bar_index // Trend identification uptrend = close > moving_average_20 above_ma20_by_1_percent = close > moving_average_20 * 1.01 ma_cross = ta.crossover(moving_average_20, moving_average_44) or ta.crossunder(moving_average_20, moving_average_44) close_near_high = (close >= high * 0.993) and (close <= high) // Buy condition (only in uptrend, above 1% from 20-day MA, and respecting new filter) can_buy_after_cross = ma_cross and close > high[1] can_buy_after_wait = (bar_index - last_sell_candle) > wait_candles buy_condition = (can_buy_after_cross or can_buy_after_wait) and uptrend and above_ma20_by_1_percent and close > moving_average_44 and close > moving_average_100 and close > high[1] and rsi > 50 and volume > volumeAvg and not close_near_high // Entry if (buy_condition and strategy.position_size == 0) strategy.entry("Buy", strategy.long) // Exit conditions if (strategy.position_size > 0) // Profit target profit_level = strategy.position_avg_price * profit_target strategy.exit("Take Profit", "Buy", limit=profit_level) // Dynamic Stop Loss - Check on every bar if the price has dropped 3% below the buy price stop_loss_level = strategy.position_avg_price * stop_loss_target if (low < stop_loss_level) strategy.close("Buy", comment="Stop Loss") // Plotting plot(moving_average_20, color=color.green, title="20-Day Moving Average") plot(moving_average_44, color=color.blue, title="44-Day Moving Average") plot(moving_average_100, color=color.red, title="100-Day Moving Average")