Стратегия количественной торговли с множественными индикаторами коррекции и расширения Фибоначчи

EMA
Дата создания: 2024-11-12 10:51:02 Последнее изменение: 2024-11-12 10:51:02
Копировать: 1 Количество просмотров: 514
1
Подписаться
1617
Подписчики

Стратегия количественной торговли с множественными индикаторами коррекции и расширения Фибоначчи

Обзор

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

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

Центральная логика стратегии состоит из трех основных частей: первая - расчет максимальных и минимальных цен на протяжении почти 10 циклов для определения диапазона колебаний цен; вторая - расчет пяти ключевых уровней фибоначевых отступлений на основе этого диапазона: 0,236, 0,382, 0,5, 0,618, 0,786; и, наконец, определение направления тренда через перекрестку 20- и 50-циклической ЭМА. В восходящей тенденции, когда цена прорывает отступление, выпускается многосигнал; в нисходящей тенденции, когда цена падает, выпускается пустой сигнал.

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

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

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

  1. Неправильные сигналы могут появиться в условиях резкого колебания рынка
  2. В зависимости от продолжительности тренда, в условиях волатильности рынка может быть неудачно.
  3. Расчет уровня вывода основан на исторических максимумах и минимумах, которые могут отставать от рынка
  4. Выбор входных точек может быть недостаточно точным, что приводит к более отдаленным остановкам.
  5. Отсутствие динамики в системе управления позициями

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

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

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fibonacci Retracement and Extension Strategy", overlay=true)

// Define the Fibonacci levels for retracement and extension
fibRetracementLevels = array.new_float(5)
array.set(fibRetracementLevels, 0, 0.236)
array.set(fibRetracementLevels, 1, 0.382)
array.set(fibRetracementLevels, 2, 0.5)
array.set(fibRetracementLevels, 3, 0.618)
array.set(fibRetracementLevels, 4, 0.786)

fibExtensionLevels = array.new_float(5)
array.set(fibExtensionLevels, 0, 1.618)
array.set(fibExtensionLevels, 1, 2.618)
array.set(fibExtensionLevels, 2, 3.618)
array.set(fibExtensionLevels, 3, 4.236)
array.set(fibExtensionLevels, 4, 5.618)

// Calculate the high and low prices for the last 10 bars
highPrice = ta.highest(high, 10)
lowPrice = ta.lowest(low, 10)

// Calculate the Fibonacci retracement levels
fibRetracement = array.new_float(5)
for i = 0 to 4
    array.set(fibRetracement, i, highPrice - (highPrice - lowPrice) * array.get(fibRetracementLevels, i))

// Calculate the trend using the Exponential Moving Average (EMA)
shortEMA = ta.ema(close, 20)
longEMA = ta.ema(close, 50)

// Define the trend conditions
isUptrend = shortEMA > longEMA
isDowntrend = shortEMA < longEMA

// Generate buy and sell signals
var float lastFibRetracementLevel = na
var float lastFibExtensionLevel = na

// Buy condition: price crosses above the highest retracement level
if (isUptrend)
    for i = 0 to 4
        if (close > array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Buy", strategy.long)

// Sell condition: price crosses below the lowest retracement level
if (isDowntrend)
    for i = 0 to 4
        if (close < array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Sell", strategy.short)

// Plotting the Fibonacci levels on the chart
// for i = 0 to 4
//     line.new(bar_index[10], array.get(fibRetracement, i), bar_index, array.get(fibRetracement, i), color=color.new(color.blue, 70), width=1)

// Plot the EMAs
plot(shortEMA, color=color.red, title="Short EMA")
plot(longEMA, color=color.blue, title="Long EMA")