
Эта стратегия называется “Динамическая стратегия прорыва изменения цены на убыль”. Основная идея этой стратегии заключается в том, чтобы установить динамическую убыль, которая создает сигнал покупки, когда изменение цены превышает этот порог, и сигнал продажи, когда изменение цены ниже отрицательного значения этого порога.
В основе стратегии лежит вычисление коэффициента изменения цены, полученного путем вычитания 1 от предыдущей цены закрытия. Затем вычисленный коэффициент изменения цены сравнивается с вводимым пользователем значением понижения. Если коэффициент изменения цены выше, чем равнозначно понижению, то в случае отсутствия позиций или свободных позиций в настоящее время создается сигнал к покупке; если коэффициент изменения цены меньше, чем равнозначно понижению, то в случае отсутствия позиций или свободных позиций в настоящее время создается сигнал продажи.
“Динамическая стратегия преодоления ценовых изменений в падении” создает торговый сигнал, сравнивая скорость изменения цен с динамической падением, и подходит для использования в условиях повышения. Логика стратегии проста и ясна, имеет определенную гибкость и способность контролировать риск. Однако в этой стратегии также есть некоторые недостатки, такие как частота торговли, которая может возникать в условиях шока, недостаточная гибкость настройки остановочных потерь и т. Д. В будущем можно рассмотреть оптимизацию стратегии с помощью введения большего количества показателей, оптимизации настройки остановочных потерь, оптимизации параметров и добавления управления позициями для дальнейшего улучшения эффективности стратегии.
/*backtest
start: 2023-04-01 00:00:00
end: 2024-03-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Price Change", shorttitle="Price Change", overlay=true)
change = input(00.1, title="Change", minval=0.0001, maxval=1, type=input.float)
// Calculate price change
priceChange = close / close[1] - 1
// Buy and Sell Signals
buyp = priceChange >= change
sellp = priceChange <= (change * -1)
// Initialize position and track the current position
var int position = na
// Strategy entry conditions
buy_condition = buyp and (na(position) or position == -1)
sell_condition = sellp and (na(position) or position == 1)
var float stop = na
if (buy_condition)
strategy.entry("Long", strategy.long)
stop := lowest(low, 6)
position := 1
if (sell_condition or low < stop)
strategy.close("Long")
position := -1
// Plot Buy and Sell signals using plotshape
plotshape(series=buy_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=sell_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)