
Эта стратегия использует истинный диапазон (True Range) и взвешенную подвижную среднюю (WMA) для построения межпериодического показателя для определения тенденции. В то же время, она имеет пирамидальный механизм наращивания позиций с множеством позиций, а также множество механизмов остановки убытков, направленных на достижение стабильной прибыли.
Эта стратегия сначала рассчитывает верхнюю волну ((sub) и нижнюю волну ((baja), а затем рассчитывает WMA быстрого (corto) цикла и медленного (largo) цикла. Различия в быстром и медленном направлениях снова рассчитывают индикатор ((ind) через WMA.
После выхода на рынок, стратегия предусматривает 5 позиций, чтобы реализовать пирамидальное наращивание позиций в соответствии с уравнением (удвоение) накопления. В то же время устанавливается механизм остановки убытков, после чего при открытии позиции необходимо определить, находится ли текущая волатильность ниже линии остановки убытков, чтобы контролировать риск.
Эта стратегия включает в себя механизмы, такие как расширенное рассуждение, пирамидальные ставки и множественные остановки, которые позволяют эффективно контролировать риски и добиваться стабильной прибыли.
Межпериодическая оценка создает систему оценки тренда с помощью комбинации быстрых и медленных линий, которая может эффективно фильтровать рыночный шум и идентифицировать поворотные моменты тренда. Пирамида может получить больше прибыли на начальном этапе тренда, а множественный стоп-лосс может эффективно контролировать одиночные потери.
Основным риском этой стратегии является вероятность возникновения внезапных событий, которые могут привести к быстрому повороту курса и вызвать убытки в результате снятия предела убытков. Кроме того, неправильная настройка параметров может повлиять на стабильность стратегии.
Стремиться к устойчивости стратегии можно путем соответствующего ослабления стоп-линий, чтобы противостоять риску обратной тенденции.
Эта стратегия может быть оптимизирована в следующих аспектах:
Добавление статистических показателей, в сочетании с параметрами коррекции показателей, таких как волатильность, объем сделок, делает стратегию более адаптивной.
Повышение точности стратегий с использованием машинного обучения, а также с помощью моделей глубокого обучения, таких как LSTM.
Оптимизация механизма управления позициями, можно рассмотреть возможность корректировки наценки на повышении позиций в соответствии с волатильностью, чтобы рост позиций был более разумным.
В сочетании с моделью фьючерсной арбитражи, использование срочного арбитража для дальнейшего контроля риска.
В целом, эта стратегия является стратегией кроссциклического тренда, построенной на основе реальных волновых показателей, с пирамидальной нагрузкой и множественным механизмом остановки убытков, которая может эффективно контролировать риск, стремиться к стабильной прибыли, и является очень практичной количественной стратегией торговли. Однако следует обратить внимание на проблемы обратного хода и оптимизации параметров, которые могут быть дополнительно оптимизированы с точки зрения статистики, машинного обучения и т. Д.
/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
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/
// © MaclenMtz
//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )
//------WINDOW----------
i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true
//-----------------------------
sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0
corto = input(10)
largo = input(30)
suavizado = input(10)
fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)
iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)
long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0
plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)
//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8
//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)
porc_tp = input.float(6.5)
safe = input(-6)
//----------------Strategy---------------------------
if strategy.opentrades == 0
strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)
if strategy.opentrades == 1
strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)
if strategy.opentrades == 2
strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)
if strategy.opentrades == 3
strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)
if strategy.opentrades == 4
strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)
min_prof = strategy.openprofit>0
strategy.close_all(when=short and min_prof)
plot(openprofit_porc)