Стратегия следования за трендом с несколькими пересечениями EMA в сочетании с расширениями Фибоначчи

EMA
Дата создания: 2024-07-29 16:42:56 Последнее изменение: 2024-07-29 16:42:56
Копировать: 0 Количество просмотров: 547
1
Подписаться
1617
Подписчики

Стратегия следования за трендом с несколькими пересечениями EMA в сочетании с расширениями Фибоначчи

Обзор

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

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

В основе стратегии лежит использование пересечения ЭМА на несколько временных рамок для захвата начала и конца тренда. В частности, она использует ЭМА на 5 циклов, 10 циклов и 30 циклов. Стратегия содержит четыре различных условия входа, каждый из которых предназначен для захвата различных сценариев рынка:

  1. Первое условие входа срабатывает, когда цена достигает или ниже 30-циклической ЭМА, но затем закрывается выше нее, а 10-циклическая ЭМА выше 5-циклической ЭМА, и 30-циклическая ЭМА ниже 5-циклической ЭМА на 1%.

  2. Второе условие вступления вызвано, когда 5-циклическая EMA проходит 30-циклическую EMA, а 30-циклическая EMA прошла 5-циклическую EMA в течение последних 6 K-линий.

  3. Третье условие входа срабатывает, когда максимальные цены на двух текущих линиях K ниже соответствующих 5-циклических ЭМА, а 5-циклические ЭМА ниже 10-циклических ЭМА, 10-циклические ЭМА ниже 30-циклических ЭМА, а максимальные цены на предыдущих линиях K ниже текущей закрывающей цены.

  4. Четвертое условие вступления срабатывает, когда 10-циклическая EMA проходит 30-циклическую EMA, и 5-циклическая EMA прошла 30-циклическую EMA в течение последних 4 K-линий, а текущие значения 10-циклической EMA и 5-циклической EMA выше, чем их предыдущие значения.

В случае с остановкой убытков, стратегия устанавливает конкретные правила для различных условий входа:

  • Для первого условия, если 30-циклическая ЭМА проходит через 10-циклическую ЭМА, то позиция будет равной.
  • Для других условий, если цена закрытия опускается ниже минимальных точек на первых трех K-линиях, то это равновесно.

Цели на прибыль устанавливаются на основе уровней расширения Фибоначчи, включая уровни 0,618, 0,786, 1,0 и 1,618. Когда цены достигают этих уровней, стратегия плавится в соответствии с определенными правилами.

Кроме того, стратегия включает в себя условие блокирования прибыли: если последние два минимума K-линий превышают 5-циклическую ЭМА, и ЭМА представляет собой восходящую строку ((5 > 10 > 30), то для блокирования прибыли следует плавить позицию.

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

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

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

  3. Управление рисками: стратегия содержит конкретные правила стоп-лосса, которые помогают контролировать риск каждой сделки. Различные условия входа соответствуют различным стратегиям стоп-лосса, что свидетельствует о важности стратегии для управления рисками.

  4. Ясность прибыльных целей: использование расширенного уровня Фибоначчи в качестве прибыльных целей обеспечивает трейдерам четкую точку выхода. Это помогает избежать преждевременного получения прибыли или длительного хранения.

  5. Защита прибыли: Условия блокировки прибыли помогают защитить полученную прибыль в случае возможного обратного тренда, что является важным аспектом, который игнорируется многими стратегиями отслеживания тенденций.

  6. Комбинирование технических показателей: стратегия объединяет инструменты EMA и Fibonacci, используя преимущества этих двух популярных инструментов технического анализа.

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

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

  2. Чувствительность параметров: стратегия использует несколько фиксированных циклов EMA и процентных падений. Эти параметры могут нуждаться в корректировке в зависимости от различных рынков и временных рамок, в противном случае это может привести к плохой эффективности стратегии.

  3. Трендозависимость: как стратегия отслеживания тенденций, может плохо работать в рыночных условиях с переходной или колебательной динамикой. В этих рыночных условиях может возникать несколько ложных сигналов и небольшие потери.

  4. Отсталость: EMA по своей сути является отсталым показателем. В быстро меняющихся рынках стратегия может не успеть вовремя захватить переломные моменты тенденции.

  5. Сложность: многочисленные условия и правила стратегии увеличивают ее сложность, что может затруднить понимание и поддержание стратегии, а также увеличивает риск перенастройки.

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

  1. Динамическая корректировка параметров: можно рассмотреть возможность внедрения механизма адаптации, адаптирующего циклы EMA и другие параметры в соответствии с динамикой волатильности рынка. Это может повысить адаптивность стратегии в различных рыночных условиях.

  2. Добавление показателей объема сделок: объединение анализа объема сделок может повысить точность принятия решений о входе и выходе. Например, можно запросить увеличение объема сделок при входе, чтобы подтвердить силу тенденции.

  3. Фильтрация рыночных условий: внедрение механизмов идентификации рыночных условий, таких как использование ATR (средняя реальная волнообразность) или индикатора волатильности, для приостановки торговли в рыночных условиях, не подходящих для отслеживания тенденций.

  4. Оптимизация стоп-механизмов: можно рассмотреть возможность использования отслеживаемых стоп-паролей, а не фиксированных стоп-паролей. Это может позволить продолжать рост прибыли, защищая прибыль.

  5. Фильтрация по времени: ограничение торгов на определенные периоды времени, избегание периодов времени с большей волатильностью или меньшей ликвидностью, повышает стабильность стратегии.

  6. Внедрение машинного обучения: использование алгоритмов машинного обучения для оптимизации выбора параметров и принятия решений о поступлении может повысить адаптивность и производительность стратегий.

  7. Анализ в нескольких временных рамках: в сочетании с анализом тенденций в более длительных временных рамках, можно повысить точность принятия решений о входе, избегая вхождения в случае обратного направления основных тенденций.

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

Эта многократная стратегия слежения за трендами с перекрестными EMA в сочетании с Fibonacci Scalping демонстрирует всеобъемлющую торговую систему, которая объединяет в себе несколько технических показателей и торговых идей. С помощью использования нескольких EMA и входных условий стратегия пытается найти баланс между улавливанием трендов и уменьшением ложных сигналов. Использование уровней Fibonacci Scalping служит объективной основой для установления целевых показателей прибыли, а конкретные правила остановки потерь и блокировки прибыли отражают внимание к управлению рисками.

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

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

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

//@version=5
strategy("EMA Combined Strategy with Specific Stop Loss", overlay=true)

// Define the EMAs
ema30 = ta.ema(close, 30)
ema10 = ta.ema(close, 10)
ema5 = ta.ema(close, 5)

// Define the conditions for opening an order
open_condition1 = low <= ema30 and close > ema30  and ema10 > ema5 and ema30 * 1.01 < ema5
open_condition2 = ta.crossover(ema5, ema30) and (ta.crossover(ema30[1], ema5[1]) or ta.crossover(ema30[2], ema5[2]) or ta.crossover(ema30[3], ema5[3]) or ta.crossover(ema30[4], ema5[4])  or ta.crossover(ema30[5], ema5[5]) or ta.crossover(ema30[6], ema5[6]) )
open_condition3 = high[2] < ema5[2] and high[1] < ema5[1] and ema5 < ema10 and ema10 < ema30 and high[1] < close 
open_condition4 = ta.crossover(ema10, ema30) and (ta.crossover(ema5[0], ema30[0]) or ta.crossover(ema5[1], ema30[1]) or ta.crossover(ema10[2], ema30[2]) or ta.crossover(ema10[3], ema30[3])) and ema10[1] < ema10 and ema5[1] <ema5

// Calculate the lowest low of the previous two bars
lowest_low_prev_two_bars = ta.lowest(low, 3)

// Track the entry price and the lowest low of the previous two bars for open_condition3
var float entry_price = na
var float low_entry_price = na
var float entry_lowest_low1 = na
var float entry_lowest_low2 = na
var float entry_lowest_low3 = na
var float entry_lowest_low4 = na

var bool order1 = false
var bool order2 = false
var bool order3 = false
var bool order4 = false
// Fibonacci extension levels based on the last significant swing
var float fib_extension_level_0_618 = na
var float fib_extension_level_0_786 = na
var float fib_extension_level_1 = na
var float fib_extension_level_1_618 = na

    // Calculate Fibonacci extension levels
var float swing_low = na
var float swing_high = na
// Here we assume the latest swing low and swing high, adjust based on your logic
swing_low := ta.lowest(low, 20)
swing_high := ta.highest(high, 20)

// Open a long order when any of the conditions are met
if open_condition1 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="<ema30")
    entry_lowest_low1 := lowest_low_prev_two_bars
    low_entry_price := low
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    entry_price := close
    order1 := true
if open_condition2 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="ema5xema30")
    entry_lowest_low2 := lowest_low_prev_two_bars
    low_entry_price := low
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    entry_price := close
    order2 := true

if open_condition3 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="high<ema5")
    entry_price := close
    low_entry_price := low
    entry_lowest_low3 := lowest_low_prev_two_bars
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    order3 := true

if open_condition4 and not order2 and not order1 and not order3 and not order4
    strategy.entry("Long", strategy.long, comment="high<ema5444")
    entry_price := close
    low_entry_price := low
    entry_lowest_low4 := lowest_low_prev_two_bars
    fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618
    fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1
    fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618
    order4 := true




// Set a stop loss only if the order was opened with the specified conditions
if (not na(entry_price))
    if order1
        if ta.crossover(ema30,ema10)
            strategy.close("Long", comment="stop loss1" )
            entry_price := na
            order1 := false
            low_entry_price := na


    if order2
        if close < entry_lowest_low2
            strategy.close("Long", comment="stop loss2" )
            entry_price := na
            order2 := false
            low_entry_price := na

    if order3
        if close < entry_lowest_low3
            strategy.close("Long", comment="stop loss3" )
            entry_price := na
            order3 := false
            low_entry_price := na

    if order4
        if close < entry_lowest_low4
            strategy.close("Long", comment="stop loss4" )
            entry_price := na
            order4 := false
            low_entry_price := na


    if   low[1] > ema5[1] and low > ema5  and ema5 > ema10 and ema10 > ema30 
        strategy.close("Long", comment="profit low > ema5")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na

    // Take profit at Fibonacci extension levels
    if high >= fib_extension_level_0_618 and close <= fib_extension_level_0_618
        strategy.close("Long", comment="at 0.618 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na

    if  high >= fib_extension_level_0_786 and close < fib_extension_level_0_786
        strategy.close("Long", comment="at 0.786 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na

    if  high >= fib_extension_level_1 and close < fib_extension_level_1
        strategy.close("Long", comment="at 1 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na
    if  high >= fib_extension_level_1_618
        strategy.close("Long", comment="at 1 Fib")
        entry_price := na
        order1 := false
        order2 := false
        order3 := false
        order4 := false
        low_entry_price := na


// Plot the EMAs for visual reference
plot(ema30, color=color.blue, title="EMA 30")
plot(ema10, color=color.orange, title="EMA 10")
plot(ema5, color=color.red, title="EMA 5")