Chiến lược giao dịch định lượng clone là một chiến lược giao dịch ngắn hạn dựa trên quan hệ giá trị số lượng trong ngày. Chiến lược này sử dụng thông tin về hướng dương của giao dịch cổ phiếu trong ngày, kết hợp với tín hiệu xác nhận số lượng, để thực hiện hoạt động ngắn hạn có rủi ro thấp.
Chiến lược này tạo ra khối Renko bằng cách tính toán giá mở, giá đóng, giá cao nhất, giá thấp nhất của cổ phiếu mỗi ngày, kết hợp với chỉ số ATR. Khi khối dương và dương đảo ngược, nó tạo ra tín hiệu giao dịch.
Cụ thể, chiến lược này tính toán giá mở o2 và giá đóng c2 của khối Renko. Nếu o2c2, biểu thị âm. Khi dương chuyển sang âm, nó tạo ra tín hiệu bán và khi âm chuyển sang dương, nó tạo ra tín hiệu mua.
Để lọc các đột phá giả mạo, chiến lược cũng tính toán số lần chu kỳ của đường dương và đường âm trước đó, và nếu có nhiều chu kỳ đường dương, tín hiệu sẽ đáng tin cậy hơn. Ngoài ra, chiến lược cũng thiết lập logic dừng lỗ sau khi mua và bán.
Với Renko Block, các tín hiệu giao dịch sẽ rõ ràng hơn khi các tín hiệu giao dịch được lọc ra khỏi tiếng ồn thị trường.
Kết hợp các quan hệ năng lượng, tránh nguy cơ đột phá giả.
Mô hình DAPM đơn giản và hiệu quả, phù hợp cho hoạt động ngắn trong ngày.
Các tham số ATR tùy chỉnh có thể điều chỉnh tần số giao dịch.
Có thể tùy chỉnh chiến lược dừng lỗ để tối ưu hóa quản lý rủi ro.
Tuy nhiên, có một số nguy cơ đột phá giả vẫn còn tồn tại.
Thiết lập tham số Renko không đúng có thể làm mất xu hướng hoặc tăng tần suất giao dịch.
Cài đặt điểm dừng quá nhỏ có thể gây ra tổn thất nhẹ khi bị dừng lại.
Có thể xem xét kết hợp với các chỉ số kỹ thuật khác để lọc tín hiệu.
Bạn có thể xem xét thêm tính năng dừng lỗ di động hoặc theo dõi.
Có thể thử nghiệm tối ưu hóa cho các tham số khác nhau của giống.
Có thể xem xét sự kết hợp của các chu kỳ thời gian khác nhau để giao dịch nhiều khung thời gian.
Chiến lược này nói chung là một chiến lược giao dịch đường ngắn rất thực tế. Nó sử dụng quan hệ giá trị để lọc hiệu quả, có thể nắm bắt các điểm quan trọng của giá đường ngắn lên và xuống. Ngoài ra, cũng cần chú ý đến cài đặt tham số hợp lý, quản lý rủi ro thích hợp và chiến lược dừng lỗ, sẽ làm tăng đáng kể sự ổn định và lợi nhuận của chiến lược.
/*backtest
start: 2022-09-26 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License https://creativecommons.org/licenses/by-sa/4.0/
// © dman103
strategy(title="Renko Strategy V2", shorttitle="Renko Strategy V2", overlay=true,precision=3, commission_value=0.025, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)
// Version 2.0 of my previous renko strategy using Renko calculations, this time without Tilson T3 and without using security with Renko to remove repaints!
// Seems to work nicely on cryptocurrencies on higher time frames.
//== Description ==
// Strategy gets Renko values and uses renko close and open to trigger signals.
// Base on these results the strategy triggers a long and short orders, where green is uptrending and red is downtrending.
// This Renko version is based on ATR, you can Set ATR (in settings) to adjust it.
// == Notes ==
// Supports alerts.
// Supports backtesting time ranges.
// Shorts are disabled by default (can be enabled in settings).
// Link to previous Renko strategy V1: https://www.tradingview.com/script/KeWBWLGT-Renko-Strategy-T3-V1/
//
// Stay tuned for version V3 in the future as i have an in progress prototype, Follow to get updated: https://www.tradingview.com/u/dman103/#published-scripts
// === INPUT BACKTEST RANGE ===
useDate = input(true, title='---------------- Trade Range ----------------', type=input.bool)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2017, title = "From Year", minval = 2000)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2099, title = "To Year", minval = 2010)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create
settings = input(true, title='---------------- Settings ----------------', type=input.bool)
allow_short = input(false,title="Allow Short")
atr_len = input(10,"ATR Length")
atr = atr(atr_len)
// Thanks to renko snippet calculations from @RafaelZioni https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/
Renko1() =>
p1 = 0.0
p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
p1
Renko2() =>
p2 = 0.0
Br_1 = Renko1()
p2 := Renko1() != Renko1()[1] ? Br_1[1] : nz(p2[1])
p2
Renko3() =>
p3 = 0.0
p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
p3
Renko4() =>
open_v = 0.0
Br_2 = Renko3()
open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
open_v
o2 = Renko4()
c2 = Renko1()
l2 =low
h2 = high
//=== Plotting ===
crossPlot= 0.0
if (o2 < c2)
crossPlot :=o2
else
crossPlot := o2
// Used to make sure that even if o2 and c2 are equal, the result (short or long) will be based on previous trend.
bars_since_up=barssince(o2 < c2)
bars_since_down=barssince(o2 > c2)
go_long= (bars_since_up<bars_since_down) and o2<c2
go_short = (bars_since_up>bars_since_down) and o2>c2
plotColor = go_long and o2<c2 ? color.green : go_short and o2>c2? color.red : color.white
plot(crossPlot, color = plotColor, style = plot.style_circles, linewidth = 2,join=true)
changeCond = plotColor != plotColor[1]
//=== Buy/Sell ===
closeStatus = strategy.openprofit > 0 ? "win" : "lose"
long_entry = plotColor == color.green and window() and changeCond
long_exit_entry = plotColor == color.red //or (allow_alternative_sl and close < low_result )
short_entry = plotColor == color.red and window() and changeCond
short_exit_entry = plotColor == color.green // or (allow_alternative_sl and close > high_result )
strategy.entry("long", true, when = long_entry)
strategy.close("long",when=long_exit_entry,comment=closeStatus)
if (allow_short)
strategy.entry("short",false, when = short_entry)
strategy.close("short",when=short_exit_entry,comment=closeStatus)
//=== Alerts ===
alertcondition(go_long and changeCond , title='Renko Buy Signal', message='Renko Revered to Buy Signal')
alertcondition(go_short and changeCond , title='Renko Sell Signal', message='Renko Revered to Sell Signal')