Phương pháp theo dõi thông minh với máy quét thấp

Tác giả:ChaoZhang, Ngày: 2023-11-01 16:12:00
Tags:

img

Tổng quan

Phương pháp theo dõi thông minh máy quét thấp là một chiến lược giao dịch ngoại hối không tái tạo. Nó sử dụng máy quét thấp để xác định điểm thấp và kết hợp với Trung bình di chuyển Hull để đánh giá tín hiệu giao dịch, có thể đạt được tỷ lệ thắng cao.

Phân tích nguyên tắc

Đầu tiên, chiến lược sử dụng một máy quét thấp để xác định điểm thấp. Máy quét thấp tính toán các giá trị RSI của giá và khối lượng, và so sánh chúng với đường cong WMA để xác định điểm thấp khi RSI thấp hơn WMA.

Thứ hai, chiến lược này sử dụng Hull Moving Average để đánh giá tín hiệu giao dịch. Nó tính toán hai Hull MA với các khoảng thời gian khác nhau, và đi dài khi khoảng thời gian ngắn hơn Hull MA vượt qua khoảng thời gian dài hơn một, và đi ngắn khi nó vượt qua dưới.

Cuối cùng, chiến lược kết hợp các tín hiệu quét điểm thấp và tín hiệu Hull MA, và chỉ kích hoạt tín hiệu Hull MA khi máy quét thấp phát ra các tín hiệu điểm thấp, tạo thành chiến lược nhập cảnh.

Bằng cách này, bằng cách xác định các điểm thấp của thị trường trước và sau đó theo dõi xu hướng, nó có thể ngăn chặn thời gian nhập cảnh sai và cải thiện tỷ lệ thắng của hệ thống giao dịch.

Phân tích lợi thế

Những lợi thế chính của Phương pháp theo dõi thông minh Low Scanner là:

  1. Sử dụng máy quét thấp, nó có thể xác định chính xác các điểm thấp của thị trường và tránh mua ở các điểm cao.

  2. Hull MA là một chỉ số theo dõi xu hướng tuyệt vời có thể nắm bắt các xu hướng lớn hơn.

  3. Kết hợp máy quét thấp và Hull MA xác minh lẫn nhau và lọc ra rất nhiều tiếng ồn và tín hiệu sai.

  4. Việc áp dụng một cơ chế thoát lỗ dừng dần có thể tối đa hóa lợi nhuận và tránh giảm giá.

  5. Chiến lược sử dụng logic dựa trên chỉ số và không thao túng dữ liệu lịch sử, đáng tin cậy.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Máy quét thấp có thể bỏ lỡ một số điểm thấp và mất cơ hội giao dịch. Các thông số có thể được điều chỉnh để mở rộng phạm vi quét.

  2. Thị trường có thể đảo ngược đột ngột, gây ra việc dừng lỗ.

  3. Cài đặt tham số không chính xác có thể tạo ra quá nhiều hoặc quá ít tín hiệu giao dịch.

  4. Chiến lược này chỉ áp dụng cho các cặp ngoại hối có xu hướng rõ ràng, không phù hợp với các thị trường giới hạn phạm vi hoặc dao động.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số của máy quét thấp để xác định các điểm thấp chính xác hơn.

  2. Tối ưu hóa các thông số của Hull MA để theo dõi xu hướng chính xác hơn.

  3. Thêm các bộ lọc chỉ số khác như MACD, KDJ để cải thiện độ tin cậy tín hiệu.

  4. Thêm dự đoán mô hình máy học để hỗ trợ đánh giá tín hiệu giao dịch.

  5. Tối ưu hóa cơ chế dừng lỗ để điều chỉnh năng động dựa trên biến động thị trường.

  6. Tối ưu hóa chiến lược kích thước vị trí để điều chỉnh kích thước vị trí một cách năng động dựa trên các quy tắc quản lý tiền.

Kết luận

Phương pháp theo dõi thông minh máy quét thấp là một chiến lược giao dịch ngoại hối có tỷ lệ thắng cao không tái tạo. Nó có thể xác định chính xác các điểm thấp của thị trường và bước vào xu hướng khi xu hướng rõ ràng, khóa lợi nhuận với stop loss tiến bộ. Chiến lược có nhiều chỗ để tối ưu hóa và có thể được cải thiện theo nhiều cách để trở thành một hệ thống giao dịch tự động mạnh mẽ.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-25 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
// strategy(title = "Low Scanner Forex strategy", overlay = false, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
leng=1
p1=close[1]
min=input(1440)
len55 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
tf3 = input("W", type=input.resolution)
ti = change( time(tf3) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
min1 =input(60)
len100 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min1 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange
plot(zx,color=col,linewidth=1)
//

tf10 = input("W", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(24, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)


a = security(syminfo.tickerid, tf10, hma(close, length))
b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


//plot(linear_reg, color=color.blue, title="LR", linewidth=3)

buy=crossover(linear_reg, b) 
sell=crossunder(linear_reg, b) 
//
// Time period input
testStartYear = input(2016, "BACKTEST START YEAR", minval = 1980, maxval = 2222) 
testStartMonth = input(06, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2222, "BACKTEST STOP YEAR", minval=1980, maxval = 2222)
testStopMonth = input(12, "BACKTEST STOP MONTH", minval=1, maxval=12)
testStopDay = input(31, "BACKTEST STOP DAY", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod = time >= testPeriodStart and time <= testPeriodStop ? true : false
l = crossover(zx,0) or buy
        
if l and testPeriod
    strategy.entry("buy", strategy.long)

per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=25, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=0.5, minval=0.01)
tp2=input(title=" Take profit2", defval=1, minval=0.01)
tp3=input(title=" Take profit3", defval=1.5, minval=0.01)
tp4=input(title=" Take profit4", defval=2, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)


Thêm nữa