Эта стратегия использует согласование индикаторов на нескольких временных отрезках для отслеживания тенденций. Она идет длинным или коротким, когда ежедневные, 10-дневные, 15-дневные и 30-дневные временные отрезки одновременно дают бычьи или медвежие сигналы с динамическим стоп-лосом.
Стратегия оценивает направление тренда с использованием четырех временных рамок - ежедневных, 10-дневных, 15-дневных и 30-дневных. Когда цены закрытия выше, чем цены открытия на всех четырех временных рамах, это указывает на бычий сигнал. Когда цены закрытия ниже, чем цены открытия на всех четырех временных рамах, это указывает на медвежий сигнал.
Когда сигнал быстрый, он длинный. Когда сигнал медвежий, он короткий. После входа, канал KC используется для динамического стоп-лосса.
В частности, стратегия сравнивает цены открытия и цены закрытия в разные временные рамки, чтобы определить направление тренда. Если цена закрытия выше, чем цена открытия, временные рамки считаются бычьими и показаны зелёным цветом. Если цена закрытия ниже, чем цена открытия, временные рамки считаются медвежими и показаны красным цветом.
Когда все четыре временных рамок соглашаются на бычий сигнал, стратегия откроет длинную позицию. Когда все четыре временных рамок соглашаются на медвежий сигнал, стратегия откроет короткую позицию. Она выйдет, когда достигнет стоп-лосса или обратный тренд.
Использование нескольких временных рамок для подтверждения тенденций может эффективно фильтровать ложные прорывы и определять направление тренда.
Динамическая стоп-лосс позволяет максимально защитить капитал.
Строгие критерии входа позволяют сократить ненужные сделки и расходы на сдвиг.
Объединение нескольких временных рамок сбалансирует скорость и стабильность прибыли.
Критерии допуска могут быть слишком строгими, упуская некоторые возможности.
Неправильное установление стоп-лосса может быть слишком агрессивным или консервативным.
Неправильный выбор временных рамок может не соответствовать долгосрочным или краткосрочным тенденциям.
Неожиданные изменения событий не могут привести к прекращению потерь.
Оптимизируйте выбор временных рамок, чтобы сбалансировать скорость и стабильность прибыли.
Проверьте различные параметры для оптимизации уровня остановки.
Добавить алгоритмы машинного обучения, чтобы помочь в определении обратных точек.
Следите за значительными событиями, чтобы избежать потерь от внезапных изменений.
Эта стратегия интегрирует суждения в нескольких временных рамках, с строгими критериями входа и динамическими остановками, направленными на стабильную доходность.
/*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)