Покупайте дешево и получайте прибыль по высокой цене


Дата создания: 2023-11-23 11:03:18 Последнее изменение: 2023-11-23 11:03:18
Копировать: 1 Количество просмотров: 667
1
Подписаться
1617
Подписчики

Покупайте дешево и получайте прибыль по высокой цене

Обзор

Стратегия основана на идее покупки на низких точках рынка и продажи на высоких точках. Она отслеживает наивысшие и наименьшие цены за прошедший определенный период, устанавливает многоочередные позиции, когда цена превышает наименьшую цену, а также уменьшает позиции, когда цена падает ниже максимальной цены или достигает условий остановки.

Стратегический принцип

Расчет минимальной и максимальной цены

  • Минимальная цена ((lowcriteria): вызов функции ta.lowest, основанной на пользовательском заданном периоде пересмотра ((дифолтная линия 20 K) вычисляет минимальную цену за определенный период и рисует минимальную ценовую линию。

  • Высочайшая цена ((highcriteria): вызов функции ta.highest, основанной на пользовательском заданном периоде обзора ((дифолтная 10-я K-линия) вычисляет самую высокую цену за прошедший определенный период и начерчивает самую высокую ценовую линию。

Сигнал входа

Когда текущая цена пересекает минимальную ценовую линию, то есть посылает сигнал купить, устанавливает многоочередные позиции.

Выходный сигнал

Есть два варианта выхода:

  1. Фиксированный стоп: когда цена достигает установленного уровня стоп (если превышает 8% от цены входа), арбитраж ликвидируется.

  2. Преодоление максимальной цены: когда цена опускается ниже максимальной ценной линии, считается, что тренд изменился, и позиция остановлена.

Тренд-фильтр

Включение средней линии 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()