Strategi perdagangan panjang sehala berdasarkan penapisan masa carta ATR Renko

RENKO ATR 时间过滤 交易策略 趋势跟踪 砖块图 单向交易 多头策略 波动率指标
Tarikh penciptaan: 2025-07-14 10:18:43 Akhirnya diubah suai: 2025-07-24 16:18:08
Salin: 3 Bilangan klik: 245
2
fokus pada
319
Pengikut

Strategi perdagangan panjang sehala berdasarkan penapisan masa carta ATR Renko Strategi perdagangan panjang sehala berdasarkan penapisan masa carta ATR Renko

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan berbilang arah berasaskan carta blok Renko, yang digabungkan dengan mekanisme penapisan masa, yang direka khas untuk masa perdagangan tertentu. Strategi ini menggunakan ATR (Rata-rata Ganjaran Ganjaran Nyata) untuk menyesuaikan saiz blok secara dinamik, mengenal pasti trend naik dengan mengesan blok yang terbentuk dari pergerakan harga, dan melakukan perdagangan berbilang kepala hanya dalam tempoh perdagangan yang ditetapkan.

Prinsip Strategi

Strategi ini beroperasi berdasarkan prinsip-prinsip utama berikut:

  1. Mekanisme pembinaan grafik blokSistem menentukan saiz blok dengan dua cara - nilai tetap atau penyesuaian dinamik berdasarkan ATR. Dalam mod ATR, saiz blok adalah sama dengan nilai ATR untuk tempoh tertentu (default 5) kali ganda (default 1.0) yang membolehkan saiz blok disesuaikan dengan turun naik pasaran.

  2. Logik penentuan arahStrategi untuk menjejaki perubahan harga, apabila harga berbanding dengan blok terakhir, kenaikan harga penutupan melebihi saiz blok membentuk blok menaik; penurunan melebihi saiz blok membentuk blok menurun; perubahan harga melebihi dua kali ganda saiz blok menyebabkan pembalikan trend.

  3. Sinyal dagangan dihasilkan: menghasilkan isyarat beli apabila arah blok tidak pernah ditakrifkan atau turun menjadi naik; menghasilkan isyarat jual apabila arah blok tidak pernah ditakrifkan atau naik menjadi turun.

  4. Penapis masaStrategi: Hanya melakukan perdagangan dalam tempoh perdagangan yang ditetapkan (dengan lalai 4:35 hingga 14:30) yang biasanya sesuai dengan masa aktif pasaran utama. Apabila keluar dari tempoh perdagangan, sistem akan secara automatik meratakan kedudukan untuk mengelakkan risiko semalaman.

  5. Mod satu halaStrategi: Hanya menjalankan perdagangan berbilang mata, tidak melakukan operasi shorting, sesuai untuk keadaan pasaran di mana kecenderungan bullish jelas atau dilarang melakukan shorting.

Kelebihan Strategik

Berdasarkan analisis kod, strategi ini mempunyai kelebihan yang ketara:

  1. Penapis bunyiBlok grafik mempunyai keupayaan semula jadi untuk menyaring bunyi pasaran, hanya apabila perubahan harga melebihi paras tertentu, blok baru akan terbentuk, yang berkesan mengelakkan tindak balas berlebihan terhadap turun naik harga kecil.

  2. Penyesuaian diriMengubah saiz blok secara dinamik melalui ATR, strategi dapat menyesuaikan diri dengan keadaan pasaran dan keadaan turun naik yang berbeza, meningkatkan saiz blok pada masa turun naik tinggi, mengurangkan saiz blok pada masa turun naik rendah.

  3. Pengurusan risiko masaPenapis masa memastikan perdagangan hanya dilakukan pada waktu pasaran yang paling aktif dan paling cair, mengelakkan masa yang mungkin kurang cair atau tidak stabil seperti malam dan pagi.

  4. Arah yang jelasStrategi ini memberi tumpuan kepada menangkap trend naik, logiknya ringkas dan jelas, mengelakkan pertukaran yang kerap dan kehilangan yuran yang disebabkan oleh pertukaran kosong.

  5. Pembantu visualStrategi menyediakan label isyarat beli dan jual dan pilihan untuk melihat ketinggian dan ketinggian blok, yang membantu pedagang memahami dinamik pasaran dan prestasi strategi secara langsung.

  6. Pengurusan wangStrategi: Menggunakan mod perdagangan kuantiti dana yang boleh mengira saiz kedudukan secara automatik berdasarkan modal awal, mengurangkan kerumitan pengurusan dana.

Risiko Strategik

Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:

  1. Tanggapan berselangBlok grafik pada dasarnya adalah penunjuk ketinggalan, pembentukan blok baru memerlukan harga untuk mencapai pergerakan tertentu, yang boleh menyebabkan masa masuk dan keluar yang relatif terlambat, dan mungkin kehilangan titik perdagangan terbaik dalam pasaran yang berbalik dengan cepat.

  2. Kekurangan fleksibiliti dalam talian pendekStrategi hanya memberi isyarat apabila blok baru terbentuk, dan mungkin kehilangan peluang keuntungan dalam jangka pendek, terutamanya dalam pasaran yang bergolak.

  3. Pembatasan satu arahDalam pasaran turun, anda tidak akan mendapat keuntungan atau mungkin akan terus mengalami kerugian. Kesan strategi anda akan berkurangan apabila pasaran berada dalam trend turun untuk jangka masa yang panjang.

  4. Risiko Penapisan MasaTetapan masa dagangan tetap mungkin terlepas peluang penting dalam masa bukan dagangan, dan mungkin berlaku kedudukan kosong dan operasi masuk semula yang tidak perlu di sempadan masa dagangan.

  5. Kepekaan ParameterPrestasi strategi sangat bergantung kepada tetapan parameter saiz blok, pilihan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan atau kehilangan peluang.

Penyelesaian:

  • Menambah indikator pengesahan trend, seperti purata bergerak atau MACD, meningkatkan kualiti isyarat
  • Memperkenalkan mekanisme penangguhan kerugian untuk mengawal risiko maksimum dalam satu transaksi
  • Pertimbangan untuk menambah fungsi shorting untuk perdagangan dua hala
  • Penapis masa yang dioptimumkan, menyesuaikan tempoh dagangan mengikut ciri-ciri pasaran yang berbeza
  • Menggunakan ujian pengoptimuman parameter untuk mencari kombinasi parameter terbaik

Arah pengoptimuman strategi

Berdasarkan analisis kod, strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Perpaduan pelbagai indikatorGabungan dengan penunjuk teknikal lain seperti RSI, MACD atau persilangan purata bergerak sebagai isyarat pengesahan, meningkatkan kualiti masuk. Ini dapat mengelakkan isyarat palsu yang disebabkan oleh bergantung semata-mata pada bentuk harga, terutama di pasaran yang bergolak.

  2. Mekanisme Hentikan Kerosakan Dinamik: Memperkenalkan ciri-ciri pengesanan berhenti, seperti berhenti dinamik berasaskan ATR, melindungi keuntungan yang telah diperoleh sambil mengekalkan ruang di atas. Ini sangat penting untuk menangkap trend besar.

  3. Peningkatan perdagangan dua halaMenambah ciri-ciri perdagangan kosong, membolehkan strategi mendapat keuntungan yang sama dalam pasaran yang menurun, dan meningkatkan kemampuan strategi untuk beradaptasi sepanjang masa.

  4. Penapisan masa pintarPenapisan masa tetap ditingkatkan kepada penapisan masa dinamik berdasarkan aktiviti pasaran, misalnya dengan menggabungkan analisis kuantiti transaksi, perdagangan aktif pada masa likuiditi tinggi, operasi konservatif pada masa likuiditi rendah.

  5. Analisis pelbagai kitaranPendahuluan analisis pelbagai kerangka masa, contohnya menggunakan arah trend dalam kerangka masa yang lebih tinggi sebagai syarat penapisan perdagangan, dan hanya berdagang apabila arah trend yang besar adalah sama.

  6. Parameter pengoptimuman menyesuaikan diriMekanisme penyesuaian diri parameter yang dibangunkan untuk menyesuaikan kitaran dan pengganda ATR mengikut keadaan pasaran yang dinamik, menjadikan strategi lebih sesuai dengan keadaan pasaran yang berbeza.

  7. Kawalan pendedahan risikoMenambah algoritma pengurusan kedudukan, menyesuaikan skala dagangan mengikut turun naik pasaran dan dinamik kekuatan isyarat, mengawal pendedahan risiko.

Arahan pengoptimuman ini bertujuan untuk meningkatkan kestabilan dan kesesuaian strategi, mengurangkan kerugian dalam keadaan pasaran yang tidak menguntungkan, sambil memaksimumkan keuntungan dalam keadaan pasaran yang menguntungkan.

ringkaskan

Blok grafik masa penapis strategi perdagangan multi arah adalah sistem trend pengesanan yang menggabungkan pergerakan harga dan penapis masa. Melalui mekanisme pembinaan grafik blok, strategi ini dapat menapis bunyi pasaran dengan berkesan, dengan fokus pada menangkap perubahan harga yang berterusan. Melalui penapis masa, strategi ini mengelakkan masa pasaran yang tidak aktif, mengurangkan risiko memegang kedudukan semalaman.

Kelebihan utama strategi ini adalah logik perdagangan yang ringkas dan jelas, reka bentuk saiz blok yang menyesuaikan diri, dan pengurusan masa yang ketat, menjadikannya sangat sesuai untuk pasaran yang lebih bergolak tetapi secara keseluruhan naik. Namun, ciri perdagangan satu arah dan tindak balas lag juga merupakan batasan yang perlu diperhatikan.

Dengan memperkenalkan langkah-langkah pengoptimuman seperti pengesahan pelbagai indikator, mekanisme berhenti rugi dinamik, keupayaan perdagangan dua hala dan penapisan masa pintar, strategi ini dijangka meningkatkan lagi prestasinya dalam pelbagai keadaan pasaran. Ini adalah kerangka strategi yang patut dipertimbangkan bagi pelabur yang mencari perdagangan yang stabil dan bersedia mengorbankan beberapa fleksibiliti untuk pertukaran isyarat perdagangan yang lebih jelas.

Kod 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)//在交易时间内显示浅蓝色背景