Гибридная стратегия пересечения скользящих средних импульса Фибоначчи

MA SMA TP SL FIBONACCI
Дата создания: 2025-02-19 11:02:16 Последнее изменение: 2025-02-19 11:02:16
Копировать: 3 Количество просмотров: 479
1
Подписаться
1617
Подписчики

Гибридная стратегия пересечения скользящих средних импульса Фибоначчи

Обзор

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

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

Основная логика стратегии основана на следующих ключевых элементах:

  1. Мобильная среднелинейная пересекающаяся система использует 9 и 21 числа простой мобильный средний ((SMA) в качестве индикатора сигнала
  2. Уровни Фибоначского отступления, рассчитанные на 100 циклов (23,6%, 38,2%, 50%, 61,8%) для анализа структуры рынка
  3. Определение рыночных тенденций по отношению цены к быстрому среднему уровню
  4. Сигнал строительства склада вызывается прохождением медленной средней линии на скоростной средней линии ((сделай больше) или прохождением медленной средней линии вниз ((сделай пустоту)
  5. Система автоматически настраивает стоп-лост и стоп-стоп уровни на основе процентов от цены входа

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

  1. Многомерный анализ: объединение трех наиболее признанных элементов в техническом анализе (тенденции, динамика, уровень цен)
  2. Управление рисками: использование предопределенной Stop Loss Ratio для защиты средств
  3. Высокий уровень визуализации: на графике четко отображаются все ключевые уровни цен и торговые сигналы
  4. Приспосабливаемость: может быть скорректирована с помощью параметров для адаптации к различным рыночным условиям
  5. Правила работы четкие: условия создания сигнала ясны, избегайте субъективного суждения

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

  1. Мобильная равнолинейная система может создавать ложные сигналы на колеблющихся рынках
  2. Установка стоп-лосса с фиксированным процентом может не подходить для всех рыночных условий
  3. В условиях высокой волатильности цены могут быстро преодолеть свои преграды
  4. Эффективность уровня Фибоначчи может меняться в зависимости от изменения рыночных условий.
  5. Оценка тенденций может отстать в переломных точках рынка

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

  1. Введение индикатора волатильности для динамической корректировки стоп-стоп-рассчета
  2. Добавление анализа объема транзакций для подтверждения сигналов транзакций
  3. Рассмотрение подтверждения в разные временные периоды для повышения надежности сигнала
  4. Присоединение к рыночной среде и отбор условий для торговли в соответствующих рыночных условиях
  5. Разработка адаптивной системы оптимизации параметров

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

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

Исходный код стратегии
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy/Sell Strategy with TP, SL, Fibonacci Levels, and Trend", overlay=true)

// Input for stop loss and take profit percentages
stopLossPercentage = input.int(2, title="Stop Loss (%)") // Stop loss percentage
takeProfitPercentage = input.int(4, title="Take Profit (%)") // Take profit percentage

// Example of a moving average crossover strategy
fastLength = input.int(9, title="Fast MA Length")
slowLength = input.int(21, title="Slow MA Length")

fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Entry conditions (Buy when fast MA crosses above slow MA, Sell when fast MA crosses below slow MA)
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)

// Plot moving averages for visual reference
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")

// Fibonacci Retracement Levels
lookback = input.int(100, title="Lookback Period for Fibonacci Levels")
highLevel = ta.highest(high, lookback)
lowLevel = ta.lowest(low, lookback)

fib236 = lowLevel + (highLevel - lowLevel) * 0.236
fib382 = lowLevel + (highLevel - lowLevel) * 0.382
fib50 = lowLevel + (highLevel - lowLevel) * 0.5
fib618 = lowLevel + (highLevel - lowLevel) * 0.618

// Display Fibonacci levels as text on the chart near price panel (left of candle)
label.new(bar_index, fib236, text="Fib 23.6%: " + str.tostring(fib236, "#.##"), style=label.style_label_left, color=color.purple, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib382, text="Fib 38.2%: " + str.tostring(fib382, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib50, text="Fib 50%: " + str.tostring(fib50, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib618, text="Fib 61.8%: " + str.tostring(fib618, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

// Trend condition: Price uptrend or downtrend
trendCondition = close > fastMA ? "Uptrending" : close < fastMA ? "Downtrending" : "Neutral"

// Remove previous trend label and add new trend label
var label trendLabel = na
if (not na(trendLabel))
    label.delete(trendLabel)

// Create a new trend label based on the current trend
trendLabel := label.new(bar_index, close, text="Trend: " + trendCondition, style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

// Buy and Sell orders with Stop Loss and Take Profit
if (longCondition)
    // Set the Stop Loss and Take Profit levels based on entry price
    stopLossLevel = close * (1 - stopLossPercentage / 100)
    takeProfitLevel = close * (1 + takeProfitPercentage / 100)
    // Enter long position with stop loss and take profit levels
    strategy.entry("BUY", strategy.long)
    strategy.exit("Sell", "BUY", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Entry price labels on the chart near price panel (left of candle)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, close, text="BUY\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

if (shortCondition)
    // Set the Stop Loss and Take Profit levels based on entry price
    stopLossLevel = close * (1 + stopLossPercentage / 100)
    takeProfitLevel = close * (1 - takeProfitPercentage / 100)
    // Enter short position with stop loss and take profit levels
    strategy.entry("SELL", strategy.short)
    strategy.exit("Cover", "SELL", stop=stopLossLevel, limit=takeProfitLevel)
    
    // Display TP, SL, and Entry price labels on the chart near price panel (left of candle)
    label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
    label.new(bar_index, close, text="SELL\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.orange, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)

// Plot Buy/Sell labels on chart
plotshape(series=longCondition, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")