
Chiến lược giao dịch đường hai chiều động là một chiến lược giao dịch đường ngắn sử dụng cả động lực giá và các chỉ số xu hướng. Chiến lược này sử dụng nhiều chỉ số như giá đóng cửa, giá mở cửa, đường giá và RSI nhanh để tạo ra tín hiệu giao dịch.
Chiến lược này giao dịch dựa trên một số chỉ số sau:
Cổng giá: tính giá cao nhất và giá thấp nhất trong 30 đường K trước đó, để có được phạm vi của kênh. Khi giá đóng cửa cao hơn đường trung tâm của kênh được coi là đà, khi giá đóng cửa thấp hơn đường trung tâm của kênh được coi là đà.
RSI nhanh: tính giá trị RSI của 2 đường K, RSI dưới 25 được coi là bán quá mức và trên 75 được coi là mua quá mức.
Xác định đường dương: Tính toán kích thước thực thể của 2 đường K cuối cùng. 2 đường dương được coi là tín hiệu giảm giá, 2 đường dương được coi là tín hiệu tăng giá.
Điều kiện dừng lỗ: Khi lỗ đạt đến một tỷ lệ nhất định, sẽ bắt buộc dừng lỗ.
Dựa trên nhiều chỉ số phán đoán trên, chiến lược có thể nắm bắt xu hướng, động lực và tình huống quá mua quá bán đồng thời, tạo ra tín hiệu giao dịch tại điểm đảo ngược, thuộc chiến lược giao dịch ngắn hạn điển hình.
Chiến lược này có một số lợi thế:
Đồng thời sử dụng nhiều chỉ số để đánh giá, tăng độ chính xác của tín hiệu. Chỉ số đơn lẻ dễ tạo ra tín hiệu sai, kết hợp có thể xác minh lẫn nhau, lọc một số tiếng ồn.
RSI nhanh nhạy hơn và có thể bắt được điểm biến. RSI thông thường dễ bị chậm trễ và bỏ lỡ thời điểm đầu vào tốt nhất.
Các tham số chiến lược đã được tối ưu hóa sau nhiều lần thử nghiệm, đạt được sự ổn định cao. Hiệu suất đáng tin cậy trong các giống và thời gian khác nhau.
Cơ chế tự động ngăn chặn thiệt hại kiểm soát thiệt hại. Không theo dõi vô hạn, có thể giảm thiệt hại vượt quá dự kiến.
Chiến lược này cũng có một số rủi ro cần lưu ý:
Các tham số cổng giá được thiết lập không đúng có thể gây ra cú sốc. Nếu lựa chọn cổng quá nhỏ, nó dễ bị phá vỡ giả.
Thời gian giữ vị thế đơn phương có thể quá dài.
Đặt điểm dừng lỗ không đúng cũng sẽ làm tăng lỗ. Điều này cần được đặt cẩn thận, quá lớn hoặc quá nhỏ đều không tốt.
Đối với các rủi ro trên, có thể tránh và giảm bớt bằng cách điều chỉnh các tham số lối đi, tối ưu hóa thời gian nhập cảnh, động điều chỉnh điểm dừng lỗ.
Chiến lược này cũng có một số hướng tối ưu hóa:
Thêm các thuật toán học máy, tự động tối ưu hóa các tham số. Có thể đào tạo các chiến lược thông minh và thích ứng hơn.
Kết hợp nhiều nguồn dữ liệu như thông tin tin tức, cải thiện quyết định giao dịch. Điều này có thể cải thiện độ chính xác của tín hiệu.
Phát triển cơ chế quản lý vị trí động, tự động điều chỉnh vị trí tùy theo tình hình thị trường. Điều này có thể kiểm soát rủi ro.
Tăng giao dịch tùy chọn nhị phân tương lai, mở rộng phạm vi chiến lược. Điều này có thể mang lại lợi nhuận tuyệt đối cao hơn.
Chiến lược này sử dụng nhiều phương tiện kỹ thuật như phá vỡ giá, tín hiệu chỉ số, thoát lỗ. Trong quá trình đo đạc và thực tế, nó hoạt động tốt và có tính ổn định cao. Với sự phát triển của thuật toán và công nghệ dữ liệu, chiến lược vẫn còn rất nhiều không gian để tiếp tục tối ưu hóa và cải thiện.
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Price Channel Strategy v1.2", shorttitle = "Price Channel str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 100000, title = "capital, %")
uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")
usersi = input(true, defval = true, title = "Use RSI strategy")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel Period")
showcl = input(true, defval = true, title = "Price Channel")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
src = close
//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
trend = low > center ? 1 : high < center ? -1 : trend[1]
col = showcl ? blue : na
col2 = showcl ? black : na
plot(lasthigh, color = col2, linewidth = 2)
plot(lastlow, color = col2, linewidth = 2)
plot(center, color = col, linewidth = 2)
//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1
//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Signals
body = abs(close - open)
abody = sma(body, 10)
up1 = rbars and close > center and uset
dn1 = gbars and close < center and uset
up2 = close <= lastlow and close < open and usect
dn2 = close >= lasthigh and close > open and usect
up3 = fastrsi < 25 and close > center and usersi
dn3 = fastrsi > 75 and close < center and usersi
exit = (((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2)
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
//Trading
if up1 or up2 or up3
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn1 or dn2 or dn3
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()