
Эта стратегия представляет собой систему отслеживания трендов, которая сочетает в себе пересечение многочисленных скользящих средних индексов (EMA) и уровней расширения Фибоначчи. Она использует взаимодействие между различными циклами EMA, чтобы идентифицировать начало и конец потенциальных трендов, а также использует уровни расширения Фибоначчи для определения целевой прибыли.
В основе стратегии лежит использование пересечения ЭМА на несколько временных рамок для захвата начала и конца тренда. В частности, она использует ЭМА на 5 циклов, 10 циклов и 30 циклов. Стратегия содержит четыре различных условия входа, каждый из которых предназначен для захвата различных сценариев рынка:
Первое условие входа срабатывает, когда цена достигает или ниже 30-циклической ЭМА, но затем закрывается выше нее, а 10-циклическая ЭМА выше 5-циклической ЭМА, и 30-циклическая ЭМА ниже 5-циклической ЭМА на 1%.
Второе условие вступления вызвано, когда 5-циклическая EMA проходит 30-циклическую EMA, а 30-циклическая EMA прошла 5-циклическую EMA в течение последних 6 K-линий.
Третье условие входа срабатывает, когда максимальные цены на двух текущих линиях K ниже соответствующих 5-циклических ЭМА, а 5-циклические ЭМА ниже 10-циклических ЭМА, 10-циклические ЭМА ниже 30-циклических ЭМА, а максимальные цены на предыдущих линиях K ниже текущей закрывающей цены.
Четвертое условие вступления срабатывает, когда 10-циклическая EMA проходит 30-циклическую EMA, и 5-циклическая EMA прошла 30-циклическую EMA в течение последних 4 K-линий, а текущие значения 10-циклической EMA и 5-циклической EMA выше, чем их предыдущие значения.
В случае с остановкой убытков, стратегия устанавливает конкретные правила для различных условий входа:
Цели на прибыль устанавливаются на основе уровней расширения Фибоначчи, включая уровни 0,618, 0,786, 1,0 и 1,618. Когда цены достигают этих уровней, стратегия плавится в соответствии с определенными правилами.
Кроме того, стратегия включает в себя условие блокирования прибыли: если последние два минимума K-линий превышают 5-циклическую ЭМА, и ЭМА представляет собой восходящую строку ((5 > 10 > 30), то для блокирования прибыли следует плавить позицию.
Многократное подтверждение: с помощью использования нескольких ЭМА и нескольких входных условий стратегия может более точно идентифицировать начало и продолжение тренда. Этот механизм многократного подтверждения может уменьшить количество ложных сигналов и повысить точность торгов.
Эластичность: четыре различных условия входа позволяют стратегии адаптироваться к различным рыночным условиям, чтобы поймать торговые возможности, будь то быстрые прорывы или медленные тенденции.
Управление рисками: стратегия содержит конкретные правила стоп-лосса, которые помогают контролировать риск каждой сделки. Различные условия входа соответствуют различным стратегиям стоп-лосса, что свидетельствует о важности стратегии для управления рисками.
Ясность прибыльных целей: использование расширенного уровня Фибоначчи в качестве прибыльных целей обеспечивает трейдерам четкую точку выхода. Это помогает избежать преждевременного получения прибыли или длительного хранения.
Защита прибыли: Условия блокировки прибыли помогают защитить полученную прибыль в случае возможного обратного тренда, что является важным аспектом, который игнорируется многими стратегиями отслеживания тенденций.
Комбинирование технических показателей: стратегия объединяет инструменты EMA и Fibonacci, используя преимущества этих двух популярных инструментов технического анализа.
Слишком большая торговля: несколько условий входа могут привести к чрезмерной торговле, особенно на рынках с большой волатильностью. Это может увеличить стоимость торговли и может привести к большему количеству ложных сигналов.
Чувствительность параметров: стратегия использует несколько фиксированных циклов EMA и процентных падений. Эти параметры могут нуждаться в корректировке в зависимости от различных рынков и временных рамок, в противном случае это может привести к плохой эффективности стратегии.
Трендозависимость: как стратегия отслеживания тенденций, может плохо работать в рыночных условиях с переходной или колебательной динамикой. В этих рыночных условиях может возникать несколько ложных сигналов и небольшие потери.
Отсталость: EMA по своей сути является отсталым показателем. В быстро меняющихся рынках стратегия может не успеть вовремя захватить переломные моменты тенденции.
Сложность: многочисленные условия и правила стратегии увеличивают ее сложность, что может затруднить понимание и поддержание стратегии, а также увеличивает риск перенастройки.
Динамическая корректировка параметров: можно рассмотреть возможность внедрения механизма адаптации, адаптирующего циклы EMA и другие параметры в соответствии с динамикой волатильности рынка. Это может повысить адаптивность стратегии в различных рыночных условиях.
Добавление показателей объема сделок: объединение анализа объема сделок может повысить точность принятия решений о входе и выходе. Например, можно запросить увеличение объема сделок при входе, чтобы подтвердить силу тенденции.
Фильтрация рыночных условий: внедрение механизмов идентификации рыночных условий, таких как использование ATR (средняя реальная волнообразность) или индикатора волатильности, для приостановки торговли в рыночных условиях, не подходящих для отслеживания тенденций.
Оптимизация стоп-механизмов: можно рассмотреть возможность использования отслеживаемых стоп-паролей, а не фиксированных стоп-паролей. Это может позволить продолжать рост прибыли, защищая прибыль.
Фильтрация по времени: ограничение торгов на определенные периоды времени, избегание периодов времени с большей волатильностью или меньшей ликвидностью, повышает стабильность стратегии.
Внедрение машинного обучения: использование алгоритмов машинного обучения для оптимизации выбора параметров и принятия решений о поступлении может повысить адаптивность и производительность стратегий.
Анализ в нескольких временных рамках: в сочетании с анализом тенденций в более длительных временных рамках, можно повысить точность принятия решений о входе, избегая вхождения в случае обратного направления основных тенденций.
Эта многократная стратегия слежения за трендами с перекрестными 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")