Средняя свеча Фибоначчи со скользящей средней стратегией для количественной торговли

Автор:Чао Чжан, Дата: 2024-01-19 14:36:45
Тэги:

img

Обзор

Эта стратегия строит средние свечи и скользящие средние на основе последовательности Фибоначчи для реализации количественной торговли только с длинными позициями и без коротких позиций.

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

Основными этапами этой стратегии являются:

  1. Вычислите средние цены закрытия, высокие, низкие и открытые за последние 10 циклов Фибоначчи, чтобы построить среднюю свечу.

  2. Вычислить 1-, 2-, 3-, 5-, 8-, 13-, 21-, 34- и 55-периодные экспоненциальные скользящие средние значения (EMA) средней цены закрытия и взять их среднее значение для получения средней EMA.

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

При расчете средних свечей для фильтрации колебаний цен и сочетании с индикаторами скользящих средних для генерации торговых сигналов эта стратегия может эффективно идентифицировать тенденции и контролировать торговые риски.

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

  1. Средние свечи, основанные на последовательности Фибоначчи, могут эффективно фильтровать случайный ценовой шум и идентифицировать сигналы тренда.

  2. Среднее значение нескольких EMA повышает стабильность уровней поддержки/сопротивления и улучшает качество сигнала.

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

  4. Хорошие результаты в более длительные периоды времени, подходящие для среднесрочной и долгосрочной торговли.

Риски

  1. Лишь длинная стратегия может привести к значительным потерям на медвежьих рынках.

  2. Линии EMA склонны к отставанию, потенциально пропуская лучшие точки входа.

  3. Чрезмерное преследование больших временных рамок может лишить возможностей в более короткие временные рамки.

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

Области улучшения

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

  2. Может комбинировать меры волатильности, такие как ATR, для динамической корректировки размеров позиций.

  3. Может проверить, принимая короткие позиции, чтобы увеличить прибыль.

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

Заключение

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("Fibonacci candle", overlay=false  )


//plot of our fibonacci candle
// Fibonacci 
// Fn = Fn-1 + Fn-2
// F10 = 55
// 0 1 2 3 5 8 13 21 34 55

avg_close = (close[0] + close[1] + close[2] + close[3] +close[5] + close[8] + close[13]+ close[21] + close[34] + close[55]) / 10
avg_high = (high[0] + high[1] + high[2] + high[3] +high[5] + high[8] + high[13]+ high[21] + high[34] + high[55]) / 10
avg_low = (low[0] + low[1] + low[2] + low[3] +low[5] + low[8] + low[13]+ low[21] + low[34] + low[55]) / 10
avg_open = (open[0] + open[1] + open[2] + open[3] +open[5] + open[8] + open[13]+ open[21] + open[34] + open[55]) / 10


src = avg_close//input(avg_close, title="Source")


out55 = ema(src, 55)
out1 = ema(src, 1)
out2 = ema(src, 2)
out3 = ema(src, 3)
out5 = ema(src, 5)
out8 = ema(src, 8)
out13 = ema(src, 13)
out21 = ema(src, 21)
out34 = ema(src, 34)

avg_ema = (out55 + out1 + out2 + out3+ out5 + out8 + out13 + out21 + out34)/9

plot(avg_ema)

plotcandle(avg_open, avg_high, avg_low, avg_close, title='Title', color = avg_open < avg_close ? color.green : color.red, wickcolor=color.white)

long = avg_open < avg_close and avg_close > avg_close[1] and avg_high > avg_high[1] and  avg_close[1] > avg_close[2] and avg_high[1] > avg_high[2]
short = avg_open > avg_close and avg_close < avg_close[1] and avg_low < avg_low[1] and avg_close[1] < avg_close[2] and avg_low[1] < avg_low[2]

strategy.entry("long",1,when=long and avg_close > avg_ema)
strategy.close('long',when=short and avg_close < avg_ema)


Больше