
Es handelt sich um eine Handelsstrategie, die auf dem Mean Value Regression-Prinzip basiert und kurzfristige Kursumkehrmöglichkeiten durch die Identifizierung von aufeinanderfolgenden fallenden und aufsteigenden K-Linien-Formen erfasst. Die Kernlogik der Strategie besteht darin, nach drei aufeinanderfolgenden fallenden K-Linien zu handeln und nach drei aufeinanderfolgenden aufsteigenden K-Linien auszugehen. Die Strategie kann auch selektiv mit dem EMA-Gleichgewichtsfilter kombiniert werden, um die Handelsqualität zu verbessern.
Die Strategie basiert auf folgenden Kernelementen:
Es handelt sich um eine vernünftige Mean-Return-Strategie, die durch die Erfassung von kurzfristigen Rebound-Möglichkeiten von Preissteigerungen und -verluste profitiert. Die Hauptvorteile der Strategie liegen in ihrer einfachen Logik und ihrer Anpassungsfähigkeit. In der Praxis muss jedoch darauf geachtet werden, die Risiken zu kontrollieren. Es wird empfohlen, die Stabilität der Strategie durch Hinzufügen von Stop-Loss-Mechanismen und Optimierung der Filterbedingungen zu verbessern.
/*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