
Эта стратегия является стратегией отслеживания тенденций, использующей согласие нескольких временных рамок. Она открывает позиции на солнечной, 10-й, 15-й и 30-й линиях одновременно вверх или вниз, используя динамический метод остановки убытков.
Стратегия использует четыре временные рамки для определения направления тенденции: солнечная линия, 10-дневная линия, 15-дневная линия и 30-дневная линия. При закрытии четырех временных рамок цена определяется как позитивная, когда она выше, чем открытая цена, и пониженная, когда цена закрытия четырех временных рамок ниже, чем открытая цена.
При оценке как позитивный, вводить больше; при оценке как понижающий, вводить вниз. После входа используйте канал KC для динамического остановки убытков.
В частности, стратегия определяет направление тренда, сравнивая цены открытия и закрытия в разных временных рамках. Если цена открытия ниже цены закрытия, то эта временная рамка является положительной, обозначенной зеленым. Если цена открытия выше цены закрытия, то эта временная рамка является отрицательной, обозначенной красным.
Когда все четыре временные рамки становятся положительными, стратегия открывает позиции; когда все четыре временные рамки становятся отрицательными, стратегия открывает позиции и делает их пустыми.
Использование нескольких временных рамок для определения тенденции позволяет эффективно отфильтровать ложные прорывы и определить направление тенденции.
Динамическая стоп-модель максимально защищает средства
Строгие условия для участия позволяют сократить ненужные сделки и избежать избыточных затрат на прокат.
Вместе с многократными временными рамками можно сбалансировать скорость и стабильность прибыли.
Вступление в программу слишком строгое, и вы можете пропустить часть возможностей.
Неправильная настройка стоп-магнитности может быть слишком радикальной или консервативной
Неправильно выбранные временные рамки могут не соответствовать более долгосрочным или более краткосрочным тенденциям
Внезапные события приводят к быстрому обратному движению и не могут остановить ущерб.
Выбор оптимальных временных рамок, сбалансированных между скоростью и устойчивостью прибыли
Тестирование различных параметров и оптимизация Stop Loss
Добавление алгоритмов машинного обучения, помогающих определить переломные моменты
Повышение внимания к крупным событиям, предотвращение ущерба от внезапных событий
Стратегия включает в себя многократные временные рамки для определения направления тренда, строгие условия входа в комбинации с динамическим остановкой, чтобы получить стабильный доход. Существуют проблемы с возможными упущенными возможностями и ненадлежащим управлением рисками. В следующем шаге будет продолжена оптимизация параметров и повышение стабильности стратегии.
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)
TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")
src = close, len = 20
out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line
kc() =>
ma = sma(close, lengthKC)
range = tr
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
[lowerKC, upperKC]
bb() =>
source = close
basis = sma(source, lengthBB)
dev = multKC * stdev(source, lengthBB)
upperBB = basis + dev
lowerBB = basis - dev
[upperBB, lowerBB]
TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor
TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor
TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor
TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor
TF_global = TF_1 and TF_2 and TF_3 and TF_4
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width
plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)
exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global
longCondition = TF_global
if (longCondition)
strategy.entry("MTF_Long", strategy.long, qty=transaction_size)
shortCondition = TF_global_bear
if (shortCondition)
strategy.entry("MTF_Short", strategy.short, qty=transaction_size)
[kc_lower,kc_upper] = kc()
strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)