
Ini adalah strategi perdagangan yang didasarkan pada prinsip regresi rata-rata, untuk menangkap peluang reversal harga jangka pendek dengan mengidentifikasi bentuk garis K turun dan naik secara berturut-turut. Logika inti dari strategi ini adalah masuk lebih banyak setelah muncul 3 garis K turun secara berturut-turut, dan keluar lebih banyak setelah muncul 3 garis K naik secara berturut-turut. Strategi ini juga dapat secara selektif menggabungkan filter garis rata EMA untuk meningkatkan kualitas perdagangan.
Strategi ini didasarkan pada elemen inti berikut:
Ini adalah strategi yang dirancang untuk mendapatkan keuntungan dengan menangkap peluang bouncing dari harga yang lebih rendah atau lebih rendah dalam jangka pendek. Keuntungan utama dari strategi ini adalah kesederhanaan logis dan fleksibilitasnya, tetapi dalam penerapan praktis, perlu diperhatikan pengendalian risiko, dan disarankan untuk meningkatkan stabilitas strategi dengan menambahkan mekanisme stop loss, mengoptimalkan kondisi penyaringan, dll.
/*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