Стратегия адаптивной тенденции с комбинацией нескольких индикаторов

Автор:Чао Чжан, Дата: 2023-12-19 11:01:05
Тэги:

img

Обзор

Эта стратегия точно оценивает тенденцию, объединяя двойной индикатор скользящей средней Hull, индикатор скользящей средней с весом объема, индикатор MACD и индикатор индекса истинной силы.

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

Основным показателем этой стратегии является двойная скользящая средняя, которая контролируется двумя параметрами keh и teh. Эти два параметра определяют цикл быстрой линии и медленной линии соответственно. Золотой крест и мертвый крест, образованные быстрой линией и медленной линией, судят о текущей тенденции.

В качестве дополнительного показателя оценки используется средняя перемещающаяся величина, взвешенная по объему (Meh1).

Еще один дополнительный показатель суждения - MACD. Он получается путем вычитания быстрой скользящей средней от медленной скользящей средней, чтобы получить MACD, а затем использовать скользящую среднюю MACD, чтобы получить линию сигнала. Когда MACD выше линии сигнала, это бычий тренд.

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

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

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

  1. Использование двойной скользящей средней Hull в качестве основного показателя оценки в сочетании с несколькими другими показателями может улучшить точность оценки и уменьшить ложные сигналы.

  2. Применение показателя ТСОС для определения сроков выхода на рынок и выхода на рынок позволяет контролировать риски.

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

  4. Идея сочетания индикаторов и самоприспособления параметров делает стратегию стабильной с высокой непрерывной рентабельностью.

Анализ рисков

  1. Несмотря на то, что индикатор ТСО используется для определения сроков, индикаторы, используемые в алгоритме, по-прежнему являются типами трендов.

  2. Неправильное настройка параметров может привести к отказу стратегии. Параметры должны быть установлены разумно на основе опыта.

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

  4. Необходимость контроля за эффектом расчета показателей для предотвращения помех от аномальных данных.

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

  1. Другие вспомогательные индикаторы, такие как BOLL, могут быть проверены, чтобы сделать сигнал более точным и надежным.

  2. Оптимизировать логику входа и выхода, установить стоп-лосс и условия получения прибыли для контроля единой прибыли и убытка.

  3. Обучение и оптимизация параметров для различных сортов, чтобы сделать их более подходящими для различных сортов.

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

Резюме

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


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                    Quad-HullMA-cross & VWMA & MacD & TSI combination  <<<<< by SeaSide420 >>>>>>
strategy("MultiCross420", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
keh=input(title="Double HullMA 1",defval=7, minval=1)
teh=input(title="Double HullMA 2",defval=14, minval=1)
meh=input(title="VWMA",defval=1, minval=1)
meh1=vwma(close,round(meh))
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
n2ma3=2*wma(close,round(teh/2))
nma2=wma(close,teh)
diff2=n2ma3-nma2,sqn2=round(sqrt(teh))
n2ma4=2*wma(close[2],round(teh/2))
nma3=wma(close[2],teh)
diff3=n2ma4-nma3,sqn3=round(sqrt(teh))
n3=wma(diff2,sqn2)
n4=wma(diff3,sqn3)
fastLength = input(title="MacD fastLength", defval=7)
slowlength = input(title="MacD slowlength", defval=14)
MACDLength = input(title="MacD Length", defval=3)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
a1=plot(n1,color=c),a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = cross, color=b, linewidth = 3)
a3=plot(n3,color=c),a4=plot(n4,color=c)
plot(cross(n3, n4) ? n1 : na, style = cross, color=b, linewidth = 3)
//a5=plot(meh1,color=c)
long = input(title="TSI Long Length",  defval=5)
short = input(title="TSI Short Length",  defval=3)
signal = input(title="TSI Signal Length",  defval=2)
linebuy = input(title="TSI Upper Line",  defval=4)
linesell = input(title="TSI Lower Line",  defval=-4)
price = close
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
closelong = n1<n2 and n3<n4 and n1>meh1
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n3>n4 and n1<meh1
if (closeshort)
    strategy.close("Short") 
longCondition = strategy.opentrades<1 and n1>n2 and MACD>aMACD and n1<meh1 and n3>n4 and ema(tsi_value, signal)>linesell
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = strategy.opentrades<1  and n1<n2 and MACD<aMACD and n1>meh1 and n3<n4 and ema(tsi_value, signal)<linebuy
if (shortCondition)
    strategy.entry("Short",strategy.short)

Больше