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

Кроссовер Multi-EMA с тенденцией расширения Фибоначчи после стратегии

Автор:Чао Чжан, Дата: 2024-07-29 16:42:56
Тэги:ЕМА

img

Обзор

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

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

Основой этой стратегии является использование кроссоверов EMA в нескольких временных рамках для фиксации начала и окончания трендов. В частности, она использует 5-периодные, 10-периодные и 30-периодные EMA. Стратегия включает в себя четыре различных условия входа, каждый из которых предназначен для фиксации различных сценариев рынка:

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

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

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

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

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

  • При первом условии позиция закрывается, если 30-периодный EMA пересекает 10-периодный EMA.
  • При других условиях позиция закрывается, если цена закрытия опускается ниже самого низкого уровня трех предыдущих баров.

Цели прибыли устанавливаются на основе уровней расширения Фибоначчи, включая уровни 0,618, 0,786, 1,0 и 1,618.

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

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

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

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

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

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

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

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

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

  1. Переоценка: многочисленные условия входа могут привести к переоценке, особенно на сильно волатильных рынках.

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

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

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

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

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

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

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

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

  4. Оптимизируйте механизм стоп-лосса: подумайте о использовании последующих остановок вместо фиксированных остановок.

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

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

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

Заключение

Эта стратегия Multi-EMA Crossover с Fibonacci Extension Trend Following демонстрирует комплексную торговую систему, которая сочетает в себе несколько технических индикаторов и торговых концепций. Используя несколько EMA и условия входа, стратегия пытается найти баланс между улавливанием тенденций и уменьшением ложных сигналов. Использование уровней расширения Фибоначчи обеспечивает объективную основу для установления целей прибыли, в то время как конкретные правила стоп-лосса и блокировки прибыли отражают акцент на управлении рисками.

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

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


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

Связанные

Больше