
이 전략의 핵심 논리는 3개의 연속적인 하락 K 라인이 나타나면 더 많은 입장을 취하고, 3개의 연속적인 상향 K 라인이 나타나면 더 많은 입장을 취하는 것입니다. 이 전략은 또한 선택적으로 EMA 일률 라인 필터를 결합하여 거래 품질을 향상시킬 수 있습니다.
이 전략은 다음과 같은 핵심 요소를 기반으로 합니다.
이것은 합리적으로 설계된 평균값 회귀 전략이며, 단기 가격 오버박스 반발 기회를 포착하여 수익을 얻는다. 전략의 주요 장점은 논리적으로 간단하고 적응력이 강하지만 실제 응용에서는 위험을 제어하는 데 주의를 기울여야 하며, 스톱로스 메커니즘을 추가하고, 필터 조건을 최적화하는 등의 방법으로 전략의 안정성을 향상시키는 것이 좋습니다.
/*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