Chiến lược đột phá đà tăng dựa trên xu hướng


Ngày tạo: 2024-01-05 13:38:18 sửa đổi lần cuối: 2024-01-05 13:38:18
sao chép: 0 Số nhấp chuột: 695
1
tập trung vào
1621
Người theo dõi

Chiến lược đột phá đà tăng dựa trên xu hướng

Tổng quan

Chiến lược này được gọi là chiến lược phá vỡ động lực dựa trên theo dõi xu hướng. Chiến lược này sử dụng chỉ số siêu xu hướng để xác định hướng xu hướng hiện tại và kết hợp với hướng của thực thể K-line để theo dõi xu hướng và thực hiện giao dịch phá vỡ động lực.

Nguyên tắc chiến lược

Chiến lược này chủ yếu dựa vào chỉ số siêu xu hướng để xác định hướng xu hướng hiện tại. Chỉ số siêu xu hướng kết hợp với bước sóng thực trung bình (ATR) tính trên đường ray và xuống đường ray, báo hiệu lạc quan khi giá phá vỡ đường ray, báo hiệu giảm giá khi giá rơi xuống đường ray.

Khi chỉ số siêu xu hướng được đánh giá là xu hướng tăng, nếu đường K là thực thể màu đỏ ((giá đóng cửa thấp hơn giá mở cửa), hãy làm nhiều; khi chỉ số siêu xu hướng được đánh giá là xu hướng giảm, nếu đường K là thực thể màu xanh lá cây ((giá đóng cửa cao hơn giá mở cửa), hãy làm trống. Như vậy, giao dịch phá vỡ động lực theo dõi xu hướng đã được thực hiện.

Phân tích lợi thế

Chiến lược này kết hợp sự phán đoán xu hướng và tính năng động lượng, có thể lọc hiệu quả các đột phá giả mạo, tăng hiệu quả của tín hiệu giao dịch. Ngoài ra, theo dõi xu hướng để giao dịch, tránh hoạt động ngược lại, làm tăng đáng kể khả năng kiếm lợi nhuận.

Những ưu điểm được tóm tắt như sau:

  1. Kết hợp định hướng và tính năng động lượng, lọc đột phá giả
  2. Theo dõi xu hướng và tránh giao dịch ngược
  3. Tỷ lệ lợi nhuận cao hơn

Phân tích rủi ro

Chiến lược này có những rủi ro chính như sau:

  1. Vấn đề về cách thiết lập tham số của chỉ số siêu xu hướng. Thiết lập tham số không đúng có thể dẫn đến sai lầm trong đánh giá chỉ số và tạo ra tín hiệu sai.
  2. Theo dõi chỉ hướng của thực thể, không thể đánh giá được sự mạnh mẽ của thực thể, có thể có nguy cơ thua lỗ.
  3. Lợi nhuận và lỗ hổng cố định không thể được điều chỉnh động, không thể kiểm soát tổn thất đơn lẻ.

Phản ứng như sau:

  1. Tối ưu hóa các tham số của chỉ số siêu xu hướng để đưa ra phán đoán chính xác hơn.
  2. Các chỉ số như khối lượng giao dịch, dòng tiền và các chỉ số khác được kết hợp để đánh giá sức mạnh của các thực thể.
  3. Tăng mức dừng động để kiểm soát tổn thất đơn.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Kết hợp với các chỉ số kỹ thuật khác để lọc tín hiệu, chẳng hạn như đường Brin, KDJ, để tăng hiệu quả chiến lược.
  2. Thêm thuật toán học máy, tối ưu hóa động của tham số, làm cho chỉ số siêu xu hướng ổn định hơn.
  3. Tham gia vào cơ chế dừng lỗ, có thể dừng lỗ trước khi lỗ mở rộng.
  4. Sử dụng các biến thể có đặc điểm giao dịch hai chiều như hợp đồng tương lai, tận dụng tối đa cơ hội giao dịch hai chiều theo xu hướng giảm giá.

Tóm tắt

Chiến lược này nói chung rất phù hợp để nắm giữ vị trí ngắn hạn và trung hạn. Kết hợp với tính năng phán đoán xu hướng và động lực đột phá, có thể lọc tiếng ồn hiệu quả, tăng tỷ lệ chiến thắng giao dịch. Đồng thời, chiến lược này cũng có một số thông số tối ưu hóa, có thể đạt được hiệu quả chiến lược tốt hơn bằng cách tối ưu hóa hơn nữa.

Mã nguồn chiến lược
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's SuperTrend Strategy v1.0", shorttitle = "ST str 1.0", 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 = 10000, title = "Lot, %")
cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR")
Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100)
ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100)
centr = input(true, defval = true, title = "need center of ATR?")
border = input(false, defval = false, title = "need border?")
fromyear = input(1900, defval = 1900, 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")

//Super Trend ATR 1
src = close
Up=hl2-(Factor*atr(ATR))
Dn=hl2+(Factor*atr(ATR))
TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up
TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn
Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1)
Tsl1 = Trend==1? TUp: TDown
Tsl2 = Trend==1? TDown: TUp
limit = (Tsl1 - Tsl2) / 100 * cloud
upcloud = Tsl1 - limit
dncloud = Tsl2 + limit

//Cloud
linecolor = Trend == 1 ? green : red
centercolor = centr == true ? blue : na
cloudcolor = Trend == 1 ? green : red
cline = (Tsl1 + Tsl2) / 2
P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1")
P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2")
P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center")
P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1")
P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1")
fill(P1, P4, color = linecolor == red ? red : lime, transp = 50)
fill(P2, P5, color = linecolor == red ? red : lime, transp = 50)

//Signals
up = Trend == 1 and close < open //and low < cline 
dn = Trend == -1 and close > open //and high > cline

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong ? lot : 0)

if dn
    strategy.entry("Short", strategy.short, needshort ? lot : 0)