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

Многоиндикаторная количественная торговая стратегия ретрекшемента и расширения Фибоначчи

Автор:Чао Чжан, Дата: 2024-11-12 10:51:02
Тэги:ЕМА

img

Обзор

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

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

Основная логика состоит из трех основных компонентов: во-первых, он вычисляет самые высокие и самые низкие цены за последние 10 периодов для определения диапазона цен; во-вторых, он вычисляет пять ключевых уровней ретракциона Фибоначчи (0,236, 0,382, 0,5, 0,618, 0,786) на основе этого диапазона; наконец, он определяет направление тренда через перекресток 20 и 50-периодных EMA. Сигналы покупки генерируются, когда цена превышает уровни ретракциона в восходящем тренде, в то время как сигналы продажи запускаются, когда цена превышает уровни ретракциона в нисходящем тренде.

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

  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")

Связанные

Больше