
Эта стратегия позволяет точно оценивать тенденции, используя в сочетании двойной индикатор Hull Moving Average, индикатор Capacity Weighted Moving Average, MACD и индикатор True Strength Index. Она может автоматически адаптироваться к изменениям в рыночной среде и обладает высокой адаптивностью.
Центральным показателем стратегии является двойная Hull Moving Average, которая рассчитывается с помощью двух параметров, управляемых keH и TEH. Эти два параметра определяют периодичность быстрого и медленного линий соответственно.
Вспомогательное суждение индикатор имеет емкость, взвешенную подвижной средней meh1 ≠, когда цена выше meh1 - это позитивная ситуация; когда цена ниже meh1 - это позитивная ситуация ≠.
Другим вспомогательным показателем является MACD. Он получает MACD из быстрого скользящего среднего за вычетом медленного скользящего среднего, а затем использует скользящий средний MACD для получения сигнальной линии.
Последний вспомогательный показатель суждения - ТСИ, который получается путем двойного плавного расчета скорости изменения цены. Его абсолютный размер представляет собой импульс изменения цены. В условиях покупки и продажи суждение о сигнальной линии ТСИ контролирует время входов и выходов.
Комбинируя сигналы этих индикаторов, можно точно определить тенденцию и автоматически скорректировать параметры, чтобы быть в синхронизации с рынком.
Использование двойного Hull Moving Average в качестве основного показателя суждения, дополненного использованием нескольких других комбинаций показателей, может повысить точность суждения и снизить ложные сигналы.
Использование показателей ТСИ для определения времени выхода на рынок и выхода из него позволяет контролировать риск.
Многочисленные параметры могут быть самостоятельно скорректированы, а также адаптироваться к изменениям рынка.
Использование комбинации показателей и параметров, которые приспосабливаются к мышлению, обеспечивает стабильность стратегии и высокую рентабельность.
Несмотря на то, что TSI использует индикатор, который определяет время, используемый алгоритм является индикатором тренда, который увеличивает колебания прибыли и убытка в случае шокирующего рынка.
Неправильная настройка параметров может привести к сбоям в стратегии, и параметры должны быть разумно настроены на основе собственного опыта.
Многополюсный портфель увеличивает количество вычислений, увеличивает вероятность ошибок в отчетности по акциям и периодам с большим количеством данных и требует контроля за диапазоном данных.
Необходимо контролировать эффективность расчетов показателей, чтобы предотвратить помехи в данных.
Можно тестировать добавление других вспомогательных показателей, таких как показатели BOLL, чтобы сделать сигнал более точным и надежным.
Оптимизация логики выхода на рынок, установка условий стоп-стоп, контроль единичных убытков.
Обучение и оптимизация параметров торговых сортов, чтобы они лучше адаптировались к различным сортам.
Добавлен модуль адаптации параметров, позволяющий автоматически корректировать параметры стратегии в зависимости от последних результатов торгов.
Эта стратегия объединяет преимущества нескольких индикаторов, используя комбинацию индикаторов для определения направления тенденции, повышает точность суждения при одновременном контроле риска. С помощью оптимизации параметров и оптимизации логики стратегия может быть лучше адаптирована к изменениям рынка, чтобы получить больше прибыли на основе снижения последовательных потерь. Эта стратегия стабильна и может быть использована в долгосрочной перспективе в таких видах, как акции и криптовалюты.
/*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)