Renko Yin Yang Chiến lược giao dịch lượng tử

Tác giả:ChaoZhang, Ngày: 2023-09-27 17:11:30
Tags:

Tổng quan

Chiến lược giao dịch số lượng Renko Yin Yang là một chiến lược giao dịch ngắn hạn dựa trên mối quan hệ giá khối lượng trong ngày. Nó sử dụng thông tin hướng yin yang trong một ngày và kết hợp các tín hiệu xác nhận khối lượng để thực hiện giao dịch ngắn hạn rủi ro thấp.

Chiến lược logic

Chiến lược tính toán giá mở, đóng, cao và thấp của mỗi ngày giao dịch, và tạo ra các viên gạch Renko cùng với chỉ số ATR.

Cụ thể, chiến lược đầu tiên tính toán giá mở o2 và giá đóng c2 của các viên gạch Renko. Nếu o2 < c2, nó chỉ ra một đường yang, nếu o2> c2, nó chỉ ra một đường yin. Khi đường yang chuyển sang đường yin, một tín hiệu bán được tạo ra. Khi đường yin chuyển sang đường yang, một tín hiệu mua được tạo ra.

Để lọc các đột phá sai, chiến lược cũng đếm số thời gian của đường yang và đường yin cuối cùng. Nếu đường yang có nhiều thời gian hơn, tín hiệu đáng tin cậy hơn. Ngoài ra, logic dừng lỗ và lấy lợi nhuận được đặt sau khi mua và bán.

Ưu điểm

  1. Đồ gạch Renko lọc tiếng ồn thị trường và làm cho tín hiệu giao dịch rõ ràng hơn.

  2. Kết hợp mối quan hệ giá - khối lượng tránh rủi ro phá vỡ sai.

  3. Mô hình DAPM đơn giản và hiệu quả cho giao dịch trong ngày.

  4. Các tham số ATR có thể tùy chỉnh điều chỉnh tần suất giao dịch.

  5. Stop loss tùy chỉnh cải thiện quản lý rủi ro.

Rủi ro

  1. Vẫn còn nguy cơ không rõ ràng của sự thoát hiểm giả.

  2. Cài đặt tham số Renko không đúng có thể bỏ lỡ xu hướng hoặc tăng tần suất giao dịch.

  3. Một stop loss quá chặt chẽ có thể bị dừng lại bởi pullback nhỏ.

Tối ưu hóa

  1. Xem xét kết hợp các chỉ số kỹ thuật khác để lọc tín hiệu.

  2. Hãy xem xét thêm tính năng dừng lỗ.

  3. Tối ưu hóa các tham số cho các tài sản khác nhau.

  4. Xem xét kết hợp các khung thời gian khác nhau cho giao dịch nhiều khung thời gian.

Kết luận

Kết luận, đây là một chiến lược giao dịch ngắn hạn rất thực tế. Nó sử dụng mối quan hệ giá-tháng lượng để lọc hiệu quả và nắm bắt các điểm chuyển đổi chính. Điều chỉnh tham số, quản lý rủi ro và chiến lược dừng lỗ thích hợp có thể cải thiện đáng kể sự ổn định và lợi nhuận của nó. Với tối ưu hóa và thử nghiệm liên tục, chiến lược này có thể trở thành một công cụ mạnh mẽ cho các nhà giao dịch trong ngày.


/*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')

Thêm nữa