
Эта стратегия представляет собой стратегию сетевой торговли, которая увеличивает позиции в зависимости от степени падения цен и закрывает позиции при достижении фиксированного целевого показателя прибыли. Основная логика стратегии заключается в покупке, когда рынок падает до заданного диапазона, и закрытии всей позиции, когда цена отскакивает, чтобы достичь целевой прибыли, и получении прибыли путем постоянного повторения этого процесса. Эта стратегия особенно подходит для использования краткосрочных возможностей восстановления на нестабильных рынках.
Стратегия использует составной механизм сетевой торговли и направленного получения прибыли:
Это простая, но практичная стратегия торговли по сетке, которая формирует позиции партиями в соответствии с заданным диапазоном снижения и закрывает все позиции при достижении целевой прибыли. Основное преимущество стратегии заключается в определенности ее исполнения и диверсификации риска, однако при ее использовании следует уделять внимание выбору рыночной среды и оптимизации параметров. Еще есть много возможностей для оптимизации стратегии путем добавления динамического стоп-лосса, улучшения управления позициями и т. д. При использовании в реальной торговле рекомендуется сначала провести достаточное бэктестирование и скорректировать параметры на основе реальных рыночных условий.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Buy Down 5%, Sell at 5% Profit", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// Inputs
initial_date = input(timestamp("2024-01-01 00:00:00"), title="Initial Purchase Date")
profit_target = input.float(5.0, title="Profit Target (%)", minval=0.1) // Target profit percentage
rebuy_drop = input.float(5.0, title="Rebuy Drop (%)", minval=0.1) // Drop percentage to rebuy
// Variables
var float initial_price = na // Initial purchase price
var int entries = 0 // Count of entries
var float total_profit = 0 // Cumulative profit
var bool active_trade = false // Whether an active trade exists
// Entry Condition: Buy on or after the initial date
if not active_trade
initial_price := close
strategy.entry("Buy", strategy.long)
entries += 1
active_trade := true
// Rebuy Condition: Buy if price drops 5% or more from the initial price
rebuy_price = initial_price * (1 - rebuy_drop / 100)
if active_trade and close <= rebuy_price
strategy.entry("Rebuy", strategy.long)
entries += 1
// Exit Condition: Sell if the price gives a 5% profit on the initial investment
target_price = initial_price * (1 + profit_target / 100)
if active_trade and close >= target_price
strategy.close_all(comment="Profit Target Hit")
active_trade := false
total_profit += profit_target
// Display information on the chart
plotshape(series=close >= target_price, title="Target Hit", style=shape.labelup, location=location.absolute, color=color.green, text="Sell")
plotshape(series=close <= rebuy_price, title="Rebuy", style=shape.labeldown, location=location.absolute, color=color.red, text="Rebuy")
// Draw statistics on the chart
var label stats_label = na
if (na(stats_label))
stats_label := label.new(x=bar_index, y=close, text="", style=label.style_none, size=size.small)
label.set_xy(stats_label, bar_index, close)
label.set_text(stats_label, "Entries: " + str.tostring(entries) + "\nTotal Profit: " + str.tostring(total_profit, "#.##") + "%")