
Это торговая стратегия, основанная на принципе средней величины регрессии, которая используется для захвата краткосрочных возможностей поворота цены, идентифицируя последовательные понижательные и повышающие K-линии. Основная логика стратегии заключается в том, чтобы входить в рынок после появления 3 последовательных понижательных K-линий и выходить из рыночной позиции после появления 3 последовательных повышающих K-линий.
Стратегия основана на следующих основных элементах:
Это рационально разработанная стратегия среднезначного возврата, чтобы получить прибыль от захвата краткосрочных шансов на отскок цены. Основные преимущества стратегии заключаются в логической простоте и адаптивности, но в практическом применении необходимо обратить внимание на контроль риска, рекомендуется повысить стабильность стратегии путем добавления механизмов остановки убытков, оптимизации условий фильтрации и т. Д.
/*backtest
start: 2025-01-19 00:00:00
end: 2025-02-18 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("3 Down, 3 Up Strategy", overlay=true, initial_capital = 1000000, default_qty_value = 200, default_qty_type = strategy.percent_of_equity, process_orders_on_close = true, margin_long = 5, margin_short = 5, calc_on_every_tick = true)
//#region INPUTS SECTION
// ============================================
// Time Settings
// ============================================
startTimeInput = input(timestamp("1 Jan 2014"), "Start Time", group = "Time Settings")
endTimeInput = input(timestamp("1 Jan 2099"), "End Time", group = "Time Settings")
isWithinTradingWindow = true
// ============================================
// Strategy Settings
// ============================================
buyTriggerInput = input.int(3, "Consecutive Down Closes for Entry", minval = 1, group = "Strategy Settings")
sellTriggerInput = input.int(3, "Consecutive Up Closes for Exit", minval = 1, group = "Strategy Settings")
// ============================================
// EMA Filter Settings
// ============================================
useEmaFilter = input.bool(false, "Use EMA Filter", group = "Trend Filter")
emaPeriodInput = input.int(200, "EMA Period", minval = 1, group = "Trend Filter")
//#endregion
//#region INDICATOR CALCULATIONS
// ============================================
// Consecutive Close Counter
// ============================================
var int aboveCount = na
var int belowCount = na
aboveCount := close > close[1] ? (na(aboveCount) ? 1 : aboveCount + 1) : 0
belowCount := close < close[1] ? (na(belowCount) ? 1 : belowCount + 1) : 0
// ============================================
// Trend Filter Calculation
// ============================================
emaValue = ta.ema(close, emaPeriodInput)
//#endregion
//#region TRADING CONDITIONS
// ============================================
// Entry/Exit Logic
// ============================================
longCondition = belowCount >= buyTriggerInput and isWithinTradingWindow
exitCondition = aboveCount >= sellTriggerInput
// Apply EMA Filter if enabled
if useEmaFilter
longCondition := longCondition and close > emaValue
//#endregion
//#region STRATEGY EXECUTION
// ============================================
// Order Management
// ============================================
if longCondition
strategy.entry("Long", strategy.long)
if exitCondition
strategy.close_all()
//#endregion