
Стратегия основана на идее покупки на низких точках рынка и продажи на высоких точках. Она отслеживает наивысшие и наименьшие цены за прошедший определенный период, устанавливает многоочередные позиции, когда цена превышает наименьшую цену, а также уменьшает позиции, когда цена падает ниже максимальной цены или достигает условий остановки.
Минимальная цена ((lowcriteria): вызов функции ta.lowest, основанной на пользовательском заданном периоде пересмотра ((дифолтная линия 20 K) вычисляет минимальную цену за определенный период и рисует минимальную ценовую линию。
Высочайшая цена ((highcriteria): вызов функции ta.highest, основанной на пользовательском заданном периоде обзора ((дифолтная 10-я K-линия) вычисляет самую высокую цену за прошедший определенный период и начерчивает самую высокую ценовую линию。
Когда текущая цена пересекает минимальную ценовую линию, то есть посылает сигнал купить, устанавливает многоочередные позиции.
Есть два варианта выхода:
Фиксированный стоп: когда цена достигает установленного уровня стоп (если превышает 8% от цены входа), арбитраж ликвидируется.
Преодоление максимальной цены: когда цена опускается ниже максимальной ценной линии, считается, что тренд изменился, и позиция остановлена.
Включение средней линии EMA определяет направление тренда, и покупается только в том случае, если цена выше средней линии EMA (так называемая восходящая тенденция). Этот фильтр может быть включен или отключен.
В соответствии с основными правилами рынка, используйте стратегию покупки и продажи, чтобы преодолеть низкие и высокие точки.
Добавление механизмов определения тенденций позволяет избежать частого открытия позиций при колебаниях цен.
Существуют два варианта выхода, которые позволяют добиваться высоких остановок и уменьшить убытки.
Настраиваемые параметры, адаптированные к более широкой рыночной среде.
Есть много возможностей для оптимизации стратегий, которые можно улучшить с помощью параметров, дизайна фильтров и т. Д.
Фиксированный стоп не может корректироваться в зависимости от фактического движения рынка, что может привести к преждевременному или слишком малому стоп-магниту.
При продаже по цене, превышающей максимальную, может быть произведен большой убыток, который не может быть эффективно контролирован.
EMA оценивает тенденции только с точки зрения определенного исторического цикла и может отставать от фактического изменения тенденции.
Данные отслеживания не могут быть представлены в будущем, и существует неопределенность в эффективности.
Дополнительные способы остановки: такие как движущаяся остановка, остановка разрыва и т. д., позволяющая регулировать уровень остановки в режиме реального времени в зависимости от движения рынка.
Оптимизация выездного сигнала: например, переход на выезд в группах или добавление других показателей.
Оптимизация трендовых суждений: например, добавление большего количества показателей или машинного обучения.
Оптимизация параметров: найти оптимальные комбинации параметров с помощью более широкого отбора.
Повышение эффективности методов сдерживания убытков.
Эта стратегия в целом использует классический принцип низкой покупки и высокой продажи, при определенных условиях она может иметь лучший эффект. Однако в самой стратегии все еще есть место для оптимизации, благодаря которой можно получить более стабильную прибыль путем корректировки параметров, оптимизации выхода на рынок, улучшения методов остановки убытков и т. Д. В этой статье проводится всесторонний и глубокий анализ принципов, преимуществ, рисков и направлений оптимизации стратегии, чтобы предоставить стратегические идеи, а также предупредить инвесторов о рисках и осторожно относиться к количественным сделкам.
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 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/
// @version=5
// Author = TradeAutomation
strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110)
// Backtest Date Range Inputs //
StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time')
InDateRange = true
// Strategy Calculations //
lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1]
highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1]
plot(highcriteria, color=color.green)
plot(lowcriteria, color=color.red)
// Take Profit //
TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?")
TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25))))
// Operational Functions //
TrendFilterInput = input(true, "Only buy when price is above EMA trend?")
ema = ta.ema(close, input(200, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)
// Entry & Exit Functions//
if (InDateRange and TrendFilterInput==true)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong)
if (InDateRange and TrendFilterInput==false)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria))
if (InDateRange and TakeProfitInput==true)
strategy.close("Long", when = TakeProfit)
if (InDateRange and TakeProfitInput==false)
strategy.close("Long", when = ta.crossunder(close, highcriteria))
if (not InDateRange)
strategy.close_all()