
Стратегия является динамически вычисляемой стратегией прорыва тенденции. Она отслеживает в реальном времени наивысшие и наименьшие цены на акции, и вступает в позицию, когда цена превышает наивысшую цену за последний цикл; входит в позицию, когда цена падает ниже наименьшей цены за последний цикл.
Основная логика этой стратегии заключается в том, чтобы отслеживать и торговать ценовыми прорывами тренда. В частности, стратегия рассчитывает 20-дневные максимумы (highestHigh) и минимумы (lowestLow). Если сегодняшняя закрытая цена превышает предыдущую высокую высоту, то это считается прорывом тренда вверх.
После дополнительного просрочки стратегия устанавливает 1% стоп-лосс и 2% стоп-стоп. Это гарантирует, что убыток и убыток по каждой сделке фиксируются в размере 2: 1. Таким образом, можно эффективно контролировать риск по отдельным сделкам.
Наибольшее преимущество этой стратегии заключается в том, что она позволяет быстро уловить переломные моменты в ценовых тенденциях, контролируя при этом риски, связанные с одной сделкой. В частности, основные преимущества:
Динамически рассчитывает максимальные и минимальные цены, в режиме реального времени отслеживает тенденции изменения цен, может быстро поймать сигнал об обратном курсе.
Применение прорывного способа строительства хранилища может уменьшить количество ложных сигналов и повысить качество входа.
Установка стоп-лосса, контроль прибыли и убытков по отдельным сделкам, эффективный контроль риска по отдельным сделкам.
Простая и понятная логика, подходящая для практической практики начинающих в квантовании.
Мало кода, легко тестировать и оптимизировать.
В этой стратегии также есть некоторые риски, о которых следует помнить:
Если мы будем держаться за тренд, мы можем упустить лучшие моменты, когда цена может измениться.
Установка фиксированного стоп-лосса затрудняет адаптацию к изменениям рынка, может предварительно остановить убыток или стоп-лосса.
На поздних стадиях Strat не устанавливается логика многоуровневого вхождения и закладки, что не позволяет постоянно отслеживать тенденции.
Не принимая во внимание тенденции больших циклов, можно потерять позицию с большими тенденциями.
Не установлен модуль управления капиталом, не может контролировать управление позицией в целом.
В этой стратегии также есть много возможностей для оптимизации. Основные направления оптимизации включают в себя:
Добавлена динамическая установка стоп-стоп, которая может быть скорректирована в зависимости от степени волатильности рынка.
Добавление фильтрации на основе равномерного направления, чтобы избежать борьбы с большими тенденциями.
Повышение оценки интенсивности тренда, гарантируя, что позиции будут открыты только тогда, когда тренд будет достаточно сильным.
Добавить логику с добавлением одного кода, следить за тенденциями и максимизировать прибыль.
В сочетании с модулем управления капиталом, можно динамически регулировать позиции, контролируя риск в целом.
Оптимизация параметров, поиск оптимальных комбинаций параметров.
В целом, эта стратегия очень подходит для количественного обучения и практической практики новичков. Ее преимущества заключаются в том, что она проста и легко понятна, а также включает логику остановки убытков для контроля риска. Но есть много оптимизируемых мест, которые могут служить поводом для дальнейшего обучения.
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Trend Following Breakout Strategy with 2:1 RRR", overlay=true)
// 定义前高和前低的计算
length = input(20, minval=1, title="Length")
highestHigh = highest(high, length)
lowestLow = lowest(low, length)
// 定义买入和卖出的条件
longCondition = close > highestHigh[1] // 当前收盘价高于前一期的最高价
shortCondition = close < lowestLow[1] // 当前收盘价低于前一期的最低价
// 为了确保盈亏比为2:1,我们需要定义止损和目标价
stopLoss = input(1, title="Stop Loss %") / 100
takeProfit = stopLoss * 2
// 如果满足买入条件,进入多头
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP", "Long", profit=takeProfit * close, loss=stopLoss * close)
// 如果满足卖出条件,进入空头
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP", "Short", profit=takeProfit * close, loss=stopLoss * close)
// 绘图显示前高和前低
plot(highestHigh, color=color.green, title="Previous High")
plot(lowestLow, color=color.red, title="Previous Low")