
Эта стратегия основана на использовании максимальных, минимальных и закрытых цен предыдущего торгового дня в качестве мест поддержки и сопротивления в тот день. При прорыве мест сопротивления делается больше, а при повторном тестировании мест поддержки делается пустое место.
Код сначала определяет функцию calculateSupportResistance, которая вычисляет уровень сопротивления поддержки, извлекая максимальную цену, минимальную цену и цену закрытия за предыдущий торговый день, как уровень сопротивления поддержки на этот день.
Затем в основной логике вызвать эту функцию, чтобы получить эти три бита и отобразить их на графике.
В ретроспективной логике, если цена закрытия ниже минимальной цены предыдущего дня, а текущая цена выше этой минимальной цены является прорывом, делается больше; если цена закрытия выше максимальной цены предыдущего дня, а текущая цена ниже этой максимальной цены является прорывом, делается пробел.
Такие прорывные модели позволяют оценивать тенденции и генерировать торговые сигналы.
Ответ:
Эта стратегия в целом относится к типичной стратегии прорыва, простой и интуитивной, с помощью данных предыдущего торгового дня она строит поддерживающую сопротивление в тот день, отслеживая прорыв. Преимущество заключается в том, что его легко понять и непосредственно увидеть поддерживающую сопротивление. Недостатком является наличие риска ложного прорыва, невозможность определить продолжительность тенденции. Следующий шаг может быть оптимизирован с точки зрения определения эффективности прорыва, контроля риска, оптимизации управления капиталом и т. Д.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)
// Function to calculate support and resistance levels
calculateSupportResistance() =>
highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
[highPrevDay, lowPrevDay, closePrevDay]
// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()
// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")
// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)
// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)