
Количественная стратегия отслеживания трендов динамического фибоначевого отступления - это система технического анализа торговли, основанная на уровнях фибоначевого отступления, специально разработанная для идентификации потенциальных сигналов покупки и продажи в трендовых рынках. Эта стратегия рассчитывает уровни фибоначевого отступления между ценовыми максимумами и минимумами (23,6%, 38,2%, 50% и 61,8%), используя эти уровни в качестве потенциальных зон поддержки и сопротивления, которые генерируют торговые сигналы, когда цена взаимодействует с этими ключевыми уровнями.
Принцип работы стратегии основан на применении числа Фибоначчи, математических отношений, широко используемых на финансовых рынках.
Ретроанализ: стратегия сначала идентифицирует максимальные и минимальные цены в пределах пользовательско-определенного периода обратного обзора (например, 144 цикла), который служит основой для расчета уровня фибоначевого отступления.
Выбор направления: в зависимости от выбранного пользователем направления Фибоначчи ((“сверху вниз” или “сверху вниз”), в стратегии используются различные методы вычисления. Если выбрать “сверху вниз”, то максимальная точка будет установлена на уровне 0%, а минимальная точка на уровне 100%; если выбрать “сверху вниз”, то наоборот.
Расчет горизонта: на основе выявленных высоких и низких точек и выбранного направления, стратегия рассчитывает четыре ключевых уровня Фибоначского отступления: 23,6%, 38,2%, 50% и 61,8%
Сигнал генерируется:
Управление рисками: стратегия автоматически устанавливает стоп-стоп и стоп-лосс при запуске торгового сигнала, по умолчанию стоп-стоп составляет 24 балла, стоп-лосс - 4 балла, пересчет цены производится через syminfo.mintick умноженный на 10.
Визуализация: стратегия на графике отображает все уровни Фибоначчи, максимумы и минимумы, а также сигналы о покупке и продаже, обеспечивая интуитивную визуальную аналитическую помощь.
Эластичность: стратегия позволяет пользователям выбирать направление Фибоначчи в зависимости от текущих рыночных тенденций, эффективно применяя как восходящие, так и нисходящие тенденции, повышая гибкость и адаптивность стратегии.
Настраиваемые параметры: пользователь может настроить входный уровень, циклы обратной связи, параметры остановки и остановки убытков в соответствии с личными торговыми стилями и предпочтениями в отношении риска, что повышает степень индивидуализации стратегии.
Прочная техническая основа: стратегия основана на широко признанной теории Фибоначчи, которая имеет прочную теоретическую основу и практическую проверку в области технического анализа, что повышает надежность стратегии.
Визуальная ясность: благодаря визуальному отображению на графике уровней Фибоначчи, максимумов и минимумов и торговых сигналов, трейдеры могут легче понять структуру рынка и логику стратегии, что помогает принятию решений.
Интеграция управления рисками: встроенный в стратегию механизм остановки и убытков, автоматически устанавливающий параметры риска на каждую сделку, помогающий поддерживать единые правила управления рисками и защищать безопасность средств.
Динамические вычисления в реальном времени: стратегия постоянно обновляет уровни Фибоначчи, гарантируя, что вычисления всегда основаны на недавних высоких и низких точках, что позволяет анализу всегда оставаться актуальным для текущих рыночных условий.
Чувствительность к циклам отсчета: стратегия зависит от цикла отсчета для определения высоких и низких точек. Различные циклы отсчета могут привести к значительно различным результатам. Слишком короткий цикл может привести к слишком большому количеству шумовых сигналов, а слишком длинный цикл может пропустить важные рыночные поворотные точки.
Ложные сигналы на рынке волатильности: в рынок волатильности или волатильности цены могут часто пересекать уровни Фибоначчи, создавая слишком много торговых сигналов, увеличивая торговые издержки и, возможно, приводя к постоянным убыткам. Решение: рассмотреть возможность добавления дополнительных фильтров, таких как индикаторы подтверждения тренда (например, движущаяся средняя или ADX), чтобы уменьшить ложные сигналы.
Ограничения стоп-стоп с фиксированными точками: стратегия использует фиксированные точки в качестве стоп-стоп, что может не подходить для всех рыночных условий, особенно при изменении волатильности. Решение: рассмотреть возможность использования динамических стоп-стоп, основанных на ATR (средний реальный диапазон), чтобы соответствовать текущей волатильности рынка.
Одиночная зависимость от показателя: принятие торговых решений, основанных исключительно на фибоначевых отступлениях, игнорирующих другие важные рыночные факторы и показатели, что может привести к недостаточному качеству сигнала. Решение: объединить стратегию с другими техническими показателями или анализом ценового поведения, чтобы создать систему многократного подтверждения.
Задержка в распознавании смены тренда: стратегия может медленно реагировать на смену тренда, поскольку она основана на прошлых высоких и низких уровнях вычислений. Решение: уменьшение циклов обратного обзора или увеличение механизмов предупреждения смены тренда, таких как динамический индикатор.
Интегрированный анализ нескольких временных рамок: если текущая стратегия работает только в одном временном периоде, можно рассмотреть возможность интеграции анализа нескольких временных рамок, например, подтверждение направления тенденции на более крупном временном периоде, а затем выполнение входного сигнала на меньшем временном периоде, повышает устойчивость стратегии. Причина: это может уменьшить ложные сигналы и обеспечить соответствие направления торговли более крупной тенденции.
Введение динамического управления рисками: замена фиксированного количества стоп-стоп-лосс на динамические параметры, основанные на ATR, позволяет управлять рисками в соответствии с волатильностью рынка. Причина: ATR может измерять степень волатильности рынка, автоматически расширяя пределы стоп-лосса при высокой волатильности и сужая при низкой волатильности, более соответствует реальности рынка.
Добавление подтверждения объема сделок: добавление анализа объема сделок при генерировании сигнала, чтобы гарантировать, что ценовые прорывы поддерживаются достаточным объемом сделок. Причина: прорывы, поддерживаемые объемом сделок, являются более надежными и уменьшают убытки от ложных прорывов.
Реализация адаптивного расчета Фибоначчи: не только на основе фиксированного цикла обратного обзора, но и на основе автоматической корректировки цикла обратного обзора в зависимости от волатильности рынка, использование более длительных циклов при высокой волатильности и более коротких циклов при низкой волатильности. Причина: такой адаптивный метод лучше улавливает реальные рыночные переломные моменты.
Добавление классификатора состояния рынка: добавление в стратегию функции, позволяющей идентифицировать текущее состояние рынка ((тренд, сверка или переход), использование различных правил торговли в зависимости от различных состояний рынка. Причина: различные состояния рынка подходят для различных торговых стратегий, трендовые рынки подходят для отслеживания, сверка рынка подходит для торговли в пределах.
Оптимизация времени входа: на текущей базе можно добавить графическую форму или анализ ценового поведения, чтобы найти более точное время входа вблизи уровня Фибоначчи. Причина: это может повысить точность входа и улучшить коэффициент возврата риска.
Движущаяся стратегия Fibonacci retracement - это методика систематизированной торговли, основанная на классической теории технического анализа, которая предоставляет трейдерам объективную систему ввода сигналов и управления рисками, идентифицируя поддержку и сопротивление уровней Fibonacci retracement. Основные преимущества этой стратегии заключаются в ее адаптивности и настраиваемости, позволяющей трейдерам корректировать параметры в зависимости от различных рыночных условий. Однако она также сталкивается с некоторыми проблемами, такими как возможные ложные сигналы в условиях рыночных потрясений и зависимость от одного показателя.
/*backtest
start: 2025-05-18 00:00:00
end: 2025-05-19 16:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("简单斐波那契回撤策略", overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 输入回看周期以识别高点和低点
lookback = input.int(144, title="回看周期", minval=10)
// 输入选择斐波那契计算方向
fib_direction = input.string(title="斐波那契方向", defval="从上到下", options=["从上到下", "从下到上"])
// 输入斐波那契水平
fib_level_236 = input.float(0.236, title="斐波那契 23.6% 水平")
fib_level_382 = input.float(0.382, title="斐波那契 38.2% 水平")
fib_level_50 = input.float(0.5, title="斐波那契 50% 水平")
fib_level_618 = input.float(0.618, title="斐波那契 61.8% 水平")
// 输入选择买入和卖出信号的水平
buy_entry_level = input.string(title="买入入场水平", defval="斐波那契 61.8%", options=["斐波那契 23.6%", "斐波那契 38.2%", "斐波那契 50%", "斐波那契 61.8%"])
sell_entry_level = input.string(title="卖出入场水平", defval="斐波那契 38.2%", options=["斐波那契 23.6%", "斐波那契 38.2%", "斐波那契 50%", "斐波那契 61.8%"])
// 输入止盈和止损(以点数为单位)
take_profit_pips = input.int(24, title="止盈(点数)")
stop_loss_pips = input.int(4, title="止损(点数)")
// 识别回看周期内的高点和低点
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)
// 根据选择的方向计算斐波那契水平
var float fib_0 = na
var float fib_100 = na
var float fib_236 = na
var float fib_382 = na
var float fib_50 = na
var float fib_618 = na
if fib_direction == "从上到下"
fib_0 := highestHigh
fib_100 := lowestLow
fib_236 := highestHigh - (highestHigh - lowestLow) * fib_level_236
fib_382 := highestHigh - (highestHigh - lowestLow) * fib_level_382
fib_50 := highestHigh - (highestHigh - lowestLow) * fib_level_50
fib_618 := highestHigh - (highestHigh - lowestLow) * fib_level_618
else
fib_0 := lowestLow
fib_100 := highestHigh
fib_236 := lowestLow + (highestHigh - lowestLow) * fib_level_236
fib_382 := lowestLow + (highestHigh - lowestLow) * fib_level_382
fib_50 := lowestLow + (highestHigh - lowestLow) * fib_level_50
fib_618 := lowestLow + (highestHigh - lowestLow) * fib_level_618
// 根据用户输入确定买入和卖出信号的水平
var float buy_fib_level = na
var float sell_fib_level = na
if buy_entry_level == "斐波那契 23.6%"
buy_fib_level := fib_236
if buy_entry_level == "斐波那契 38.2%"
buy_fib_level := fib_382
if buy_entry_level == "斐波那契 50%"
buy_fib_level := fib_50
if buy_entry_level == "斐波那契 61.8%"
buy_fib_level := fib_618
if sell_entry_level == "斐波那契 23.6%"
sell_fib_level := fib_236
if sell_entry_level == "斐波那契 38.2%"
sell_fib_level := fib_382
if sell_entry_level == "斐波那契 50%"
sell_fib_level := fib_50
if sell_entry_level == "斐波那契 61.8%"
sell_fib_level := fib_618
// 将点数转换为价格单位(假设1点 = 0.0001,适用于如EURUSD的货币对)
pip_value = syminfo.mintick * 10
take_profit = take_profit_pips * pip_value
stop_loss = stop_loss_pips * pip_value
// 交易信号
var bool longSignal = na
var bool shortSignal = na
if fib_direction == "从上到下"
longSignal := ta.crossover(close, buy_fib_level) and close > buy_fib_level
shortSignal := ta.crossunder(close, sell_fib_level) and close < sell_fib_level
else
longSignal := ta.crossover(close, buy_fib_level) and close > buy_fib_level
shortSignal := ta.crossunder(close, sell_fib_level) and close < sell_fib_level
// 根据信号执行交易,设置止盈和止损
if (longSignal)
strategy.entry("多头", strategy.long, comment="买入")
strategy.exit("止盈/止损", "多头", limit=close + take_profit, stop=close - stop_loss)
if (shortSignal)
strategy.entry("空头", strategy.short, comment="卖出")
strategy.exit("止盈/止损", "空头", limit=close - take_profit, stop=close + stop_loss)
// 绘制斐波那契水平
plot(fib_0, title="斐波那契 0%", color=color.blue, linewidth=1, style=plot.style_line)
plot(fib_236, title="斐波那契 23.6%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_382, title="斐波那契 38.2%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_50, title="斐波那契 50%", color=color.red, linewidth=1, style=plot.style_line)
plot(fib_618, title="斐波那契 61.8%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_100, title="斐波那契 100%", color=color.blue, linewidth=1, style=plot.style_line)
// 为斐波那契水平创建带有白色文本的标签
var label fibLabel0 = na
var label fibLabel236 = na
var label fibLabel382 = na
var label fibLabel50 = na
var label fibLabel618 = na
var label fibLabel100 = na
if (na(fibLabel0))
fibLabel0 := label.new(bar_index, fib_0, text="斐波那契 0%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
fibLabel236 := label.new(bar_index, fib_236, text="斐波那契 23.6%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
fibLabel382 := label.new(bar_index, fib_382, text="斐波那契 38.2%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
fibLabel50 := label.new(bar_index, fib_50, text="斐波那契 50%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
fibLabel618 := label.new(bar_index, fib_618, text="斐波那契 61.8%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
fibLabel100 := label.new(bar_index, fib_100, text="斐波那契 100%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
else
label.set_xy(fibLabel0, bar_index, fib_0)
label.set_xy(fibLabel236, bar_index, fib_236)
label.set_xy(fibLabel382, bar_index, fib_382)
label.set_xy(fibLabel50, bar_index, fib_50)
label.set_xy(fibLabel618, bar_index, fib_618)
label.set_xy(fibLabel100, bar_index, fib_100)
// 绘制信号
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, title="买入信号", text="买入")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="卖出信号", text="卖出")
// 绘制最高点和最低点
plot(highestHigh, title="最高点", color=color.purple, linewidth=2, offset=-lookback)
plot(lowestLow, title="最低点", color=color.purple, linewidth=2, offset=-lookback)