Strategi perdagangan panjang satu arah berdasarkan penyaringan waktu grafik ATR Renko

RENKO ATR 时间过滤 交易策略 趋势跟踪 砖块图 单向交易 多头策略 波动率指标
Tanggal Pembuatan: 2025-07-14 10:18:43 Akhirnya memodifikasi: 2025-07-24 16:18:08
menyalin: 3 Jumlah klik: 246
2
fokus pada
319
Pengikut

Strategi perdagangan panjang satu arah berdasarkan penyaringan waktu grafik ATR Renko Strategi perdagangan panjang satu arah berdasarkan penyaringan waktu grafik ATR Renko

Ringkasan

Strategi ini adalah sistem perdagangan multihead satu arah yang didasarkan pada grafik blok Renko, dengan mekanisme penyaringan waktu, yang dirancang khusus untuk waktu perdagangan tertentu. Strategi ini menggunakan ATR (rata-rata real volatility) untuk menyesuaikan ukuran blok secara dinamis, mengidentifikasi tren naik dengan melacak pergerakan harga yang terbentuk dari blok, dan melakukan perdagangan multihead hanya dalam waktu perdagangan yang ditentukan.

Prinsip Strategi

Strategi ini didasarkan pada prinsip-prinsip inti berikut:

  1. Mekanisme pembentukan diagram blokSistem menentukan ukuran blok dengan dua cara - nilai tetap atau penyesuaian dinamis berdasarkan ATR. Dalam mode ATR, ukuran blok sama dengan nilai ATR untuk periode tertentu ((default 5) dikalikan dengan kelipatan ((default 1.0)), sehingga ukuran blok dapat disesuaikan sesuai dengan volatilitas pasar.

  2. Logika penentuan arahStrategi untuk melacak perubahan harga, ketika harga naik lebih dari satu jam, maka akan terbentuk blok naik; jika turun lebih dari satu jam, maka akan terbentuk blok turun; dan jika perubahan harga lebih dari dua kali lipat, maka akan terjadi pembalikan tren.

  3. Sinyal perdagangan dihasilkan: menghasilkan sinyal beli ketika arah blok tidak pernah didefinisikan atau turun berubah menjadi naik; menghasilkan sinyal jual ketika arah blok tidak pernah didefinisikan atau naik berubah menjadi turun

  4. Filter waktuStrategi: Hanya melakukan perdagangan dalam waktu perdagangan yang ditentukan (default 4:35 - 14:30), yang biasanya sesuai dengan waktu aktif pasar utama. Saat keluar dari waktu perdagangan, sistem akan secara otomatis melonggarkan posisi untuk menghindari risiko semalam.

  5. Modus transaksi satu arahStrategi: Hanya melakukan perdagangan multihead, tidak melakukan operasi shorting, sesuai dengan situasi pasar di mana tren bullish jelas atau dilarang melakukan shorting.

Keunggulan Strategis

Berdasarkan analisis kode, strategi ini memiliki keuntungan yang signifikan sebagai berikut:

  1. Filter kebisinganBlok grafik memiliki kemampuan alami untuk memfilter kebisingan pasar, hanya akan membentuk blok baru jika perubahan harga melebihi batas tertentu, yang efektif menghindari overreaction terhadap fluktuasi harga kecil.

  2. AdaptasiDengan menggunakan ATR untuk menyesuaikan ukuran blok secara dinamis, strategi dapat beradaptasi dengan berbagai kondisi pasar dan kondisi volatilitas, meningkatkan ukuran blok pada periode fluktuasi tinggi dan mengurangi ukuran blok pada periode fluktuasi rendah.

  3. Manajemen risiko waktuFilter waktu memastikan bahwa perdagangan dilakukan hanya pada saat pasar paling aktif dan likuiditas optimal, menghindari waktu yang mungkin kurang likuiditas atau fluktuasi yang tidak biasa seperti malam dan pagi.

  4. Ke arah yang jelasStrategi ini berfokus pada menangkap tren naik, logikanya ringkas dan jelas, menghindari kehilangan transaksi dan biaya yang sering terjadi akibat pertukaran kosong.

  5. Bantuan visualStrategi menyediakan label sinyal jual beli dan opsi untuk memvisualisasikan titik tinggi dan rendah blok, sehingga trader dapat memahami secara langsung dinamika pasar dan kinerja strategi.

  6. Manajemen danaStrategi: Mengadopsi modus perdagangan kuantitatif dana, yang dapat secara otomatis menghitung ukuran posisi berdasarkan modal awal, mengurangi kompleksitas manajemen dana.

Risiko Strategis

Meskipun strategi ini dirancang dengan baik, ada risiko potensial berikut:

  1. Reaksi tertundaBlok grafik pada dasarnya merupakan indikator keterlambatan, dan pembentukan blok baru membutuhkan harga untuk mencapai amplitudo pergerakan tertentu, yang dapat menyebabkan keterlambatan waktu masuk dan keluar yang relatif, dan mungkin kehilangan titik perdagangan terbaik dalam pasar yang berbalik dengan cepat.

  2. Kurangnya fleksibilitasStrategi ini hanya menghasilkan sinyal ketika blok baru terbentuk, dan mungkin kehilangan peluang keuntungan dalam jangka pendek, terutama dalam pasar yang bergejolak.

  3. Pembatasan satu arahStrategi yang dilakukan hanya dalam jumlah yang banyak tidak dapat menguntungkan dalam pasar yang menurun, bahkan dapat terus-menerus merugikan, dan efektifitas strategi yang signifikan berkurang ketika pasar berada dalam tren turun untuk waktu yang lama.

  4. Risiko Penyaringan Waktu: Pengaturan jam perdagangan tetap dapat melewatkan peluang penting dalam jam non-perdagangan, sementara di perbatasan jam perdagangan dapat terjadi posisi kosong yang tidak perlu dan operasi masuk kembali.

  5. Parameter SensitivitasPerforma strategi sangat bergantung pada pengaturan parameter ukuran blok, dan pilihan parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan peluang.

Larutan:

  • Menambahkan indikator konfirmasi tren, seperti moving average atau MACD, untuk meningkatkan kualitas sinyal
  • Memperkenalkan mekanisme stop loss untuk mengendalikan risiko maksimum dalam satu transaksi
  • Pertimbangan untuk menambahkan fitur shorting untuk perdagangan dua arah
  • Filter waktu yang dioptimalkan, menyesuaikan waktu perdagangan sesuai dengan karakteristik pasar yang berbeda
  • Temukan kombinasi parameter terbaik dengan menggunakan pengujian optimasi parameter

Arah optimasi strategi

Berdasarkan analisis kode, strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Integrasi multi-indikatorIni akan meningkatkan kualitas entry. Ini akan menghindari sinyal palsu yang disebabkan oleh ketergantungan pada bentuk harga saja, terutama di pasar yang bergoyang.

  2. Mekanisme Stop Loss DinamisIntroduksi fitur tracking stop loss, seperti stop loss dinamis berbasis ATR, untuk melindungi profit yang telah diperoleh dengan tetap mempertahankan ruang di atas. Ini sangat penting untuk menangkap tren besar.

  3. Ekspansi perdagangan dua arahTambahan fitur trading overhead, memungkinkan strategi untuk menghasilkan keuntungan yang sama di pasar yang turun, meningkatkan kemampuan strategi untuk beradaptasi sepanjang waktu.

  4. Filter waktu cerdasUpgrade filter waktu tetap ke filter waktu dinamis berdasarkan aktivitas pasar, misalnya dengan menggabungkan analisis volume transaksi, perdagangan aktif pada saat likuiditas tinggi, operasi konservatif pada saat likuiditas rendah.

  5. Analisis multi siklus: Memperkenalkan analisis multi-frame waktu, misalnya menggunakan arah tren dari frame waktu tingkat lebih tinggi sebagai kondisi penyaringan perdagangan, dan hanya melakukan perdagangan jika arah tren besar konsisten.

  6. Parameter optimasi beradaptasi: Mengembangkan mekanisme penyesuaian parameter untuk menyesuaikan siklus dan perkalian ATR berdasarkan dinamika kondisi pasar, sehingga strategi lebih sesuai dengan lingkungan pasar yang berbeda.

  7. Pengendalian paparan risikoMenambahkan algoritma manajemen posisi, menyesuaikan skala transaksi secara dinamis sesuai dengan volatilitas pasar dan intensitas sinyal, mengendalikan eksposur risiko.

Tujuan dari orientasi optimasi ini adalah untuk meningkatkan ketahanan dan adaptasi strategi, mengurangi kerugian dalam kondisi pasar yang tidak menguntungkan, dan memaksimalkan profitabilitas dalam kondisi pasar yang menguntungkan.

Meringkaskan

Blok grafik waktu filter strategi perdagangan multi arah adalah sistem pelacakan tren yang menggabungkan dinamika harga dan waktu filter. Melalui mekanisme konstruksi dari Blok grafik, strategi ini dapat secara efektif menyaring kebisingan pasar, dengan fokus pada menangkap perubahan harga berkelanjutan. Melalui filter waktu, strategi menghindari waktu pasar tidak aktif, mengurangi risiko memegang posisi semalam.

Keuntungan utama dari strategi ini adalah logika perdagangan yang ringkas dan jelas, desain ukuran blok yang dapat disesuaikan, dan manajemen waktu yang ketat, yang membuatnya sangat cocok untuk pasar yang lebih berfluktuasi tetapi secara keseluruhan cenderung naik. Namun, karakteristik perdagangan satu arah dan reaksi lag juga merupakan keterbatasan yang perlu diperhatikan.

Strategi ini diharapkan dapat meningkatkan kinerja mereka lebih lanjut dalam berbagai lingkungan pasar dengan memperkenalkan langkah-langkah optimasi seperti konfirmasi multi-indikator, mekanisme stop loss dinamis, kemampuan perdagangan dua arah, dan penyaringan waktu cerdas. Ini adalah kerangka strategi yang layak dipertimbangkan bagi investor yang menginginkan perdagangan yang stabil dan bersedia mengorbankan beberapa fleksibilitas untuk mendapatkan sinyal perdagangan yang lebih jelas.

Kode Sumber Strategi
/*backtest
start: 2025-06-22 00:00:00
end: 2025-07-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
args: [["RunMode",1,358374]]
*/

//@version=5
strategy("Renko Long-Only Strategy with Time Filter", overlay=true, default_qty_value = 10)

// --- 输入参数 ---

atrLength  = input.int(5, "ATR Period", minval=1)//ATR周期
atrMult    = input.float(1.0, "ATR Multiplier", minval=0.1, step=0.1)//ATR乘数
showWicks  = input(false, "Show Wick Lines")//是否显示上下影线
showLabels = input(true, "Show Buy/Sell Labels")//是否显示买卖标签

// --- 交易时间设置(24小时制,从4:30 AM到2:30 PM)---
startHour = input.int(4, "Start Hour (24h)", minval=0, maxval=23)//开始交易小时
startMinute = input.int(30, "Start Minute", minval=0, maxval=59)//开始交易分钟
endHour = input.int(14, "End Hour (24h)", minval=0, maxval=23)//结束交易小时
endMinute = input.int(25, "End Minute", minval=0, maxval=59)//结束交易分钟

// --- 时间计算 ---
//检查当前是否在交易时间范围内
isTradingTime() =>
    timeHour = hour(time("1"))//获取当前小时
    timeMinute = minute(time("1"))//获取当前分钟
    // 将时间转换为自午夜起的分钟数进行比较
    currentTime = timeHour * 60 + timeMinute//当前时间(分钟)
    sessionStart = startHour * 60 + startMinute//交易开始时间(分钟)
    sessionEnd = endHour * 60 + endMinute//交易结束时间(分钟)
    currentTime >= sessionStart and currentTime <= sessionEnd//判断是否在交易时间范围内

inTradingHours = isTradingTime()//当前是否在交易时间内
timeToClose = not inTradingHours and inTradingHours[1]//刚刚退出交易时间,需要平仓

// --- 砖块计算 ---
var float boxSize    = na//砖块大小
var float lastClose  = na//最后一个砖块的收盘价
var int   direction  = 0//方向:0=未定义,1=上涨,-1=下跌
var float wickHigh   = na//上影线最高点
var float wickLow    = na//下影线最低点
var bool  newBrick   = false//是否形成新砖块
var int   prevDir    = 0//前一个方向

// --- 全局信号变量 ---
var bool buySignal  = false//买入信号
var bool sellSignal = false//卖出信号

// 更新基于ATR的砖块大小
boxSize :=ta.atr(atrLength) * atrMult//计算砖块大小

// 检测砖块形成条件
upMove   = not na(lastClose) and (close - lastClose >= boxSize)//上涨移动
downMove = not na(lastClose) and (lastClose - close >= boxSize)//下跌移动
//反转条件:当前为上升趋势但下跌超过2倍砖块大小,或当前为下降趋势但上涨超过2倍砖块大小
reversal = (direction == 1 and downMove and (lastClose - close >= boxSize * 2)) or 
           (direction == -1 and upMove and (close - lastClose >= boxSize * 2))

// 生成新砖块
if na(lastClose)//初始化
    lastClose := close//设置初始收盘价
    wickHigh := high//设置初始最高价
    wickLow := low//设置初始最低价
else if upMove and direction >= 0//继续上升趋势
    lastClose := lastClose + boxSize//更新收盘价
    prevDir := direction//保存前一个方向
    direction := 1//设置当前方向为上升
    wickHigh := high//更新上影线
    wickLow := low//更新下影线
    newBrick := true//标记形成新砖块
else if downMove and direction <= 0//继续下降趋势
    lastClose := lastClose - boxSize//更新收盘价
    prevDir := direction//保存前一个方向
    direction := -1//设置当前方向为下降
    wickHigh := high//更新上影线
    wickLow := low//更新下影线
    newBrick := true//标记形成新砖块
else if reversal//趋势反转
    lastClose := direction == 1 ? lastClose - boxSize : lastClose + boxSize//根据当前方向反向更新收盘价
    prevDir := direction//保存前一个方向
    direction := direction * -1//反转方向
    wickHigh := high//更新上影线
    wickLow := low//更新下影线
    newBrick := true//标记形成新砖块
else//没有新砖块形成
    wickHigh := math.max(wickHigh, high)//更新上影线最高点
    wickLow := math.min(wickLow, low)//更新下影线最低点
    newBrick := false//标记没有形成新砖块

// 更新信号(必须在全局范围内)
buySignal := direction == 1 and prevDir != 1//方向从非上升变为上升时产生买入信号
sellSignal := direction == -1 and prevDir != -1//方向从非下降变为下降时产生卖出信号

// --- 策略逻辑 ---
// 只在形成新砖块、K线确认且在交易时间内进入
enterLong = buySignal and newBrick and barstate.isconfirmed and inTradingHours//买入条件
exitLong = (sellSignal and newBrick and barstate.isconfirmed) or timeToClose//卖出条件

// 执行交易
if (enterLong)
    strategy.entry("Long", strategy.long)//开仓做多
    
if (exitLong)
    strategy.close("Long")//平仓

// --- 绘图 ---
color brickColor = direction == 1 ? color.green : direction == -1 ? color.red : color.gray//根据方向设置砖块颜色
plot(lastClose, "Renko Close", brickColor, 2, plot.style_linebr)//绘制Renko收盘价

// 如果启用,绘制影线
plot(showWicks ? wickHigh : na, "High", color.new(brickColor, 70), 1, plot.style_circles)//绘制上影线
plot(showWicks ? wickLow : na, "Low", color.new(brickColor, 70), 1, plot.style_circles)//绘制下影线

// 绘制交易时间背景
bgcolor(inTradingHours ? color.new(color.blue, 90) : na)//在交易时间内显示浅蓝色背景