Chiến lược bắt kịp xu hướng

Tác giả:ChaoZhang, Ngày: 2024-04-26 11:48:28
Tags:MASMA

img

Tổng quan

Chiến lược bắt xu hướng là một chiến lược phát hiện các hình thành xu hướng bằng cách sử dụng phương pháp độc đáo của riêng mình và mở các vị trí theo hướng xu hướng. Nó tính toán một giá trị phần trăm được gọi là limit bằng cách chia sự khác biệt giữa giá cao nhất và thấp nhất trong một phạm vi nhất định bằng tổng chiều dài của nến trong phạm vi đó. Giá trị này càng gần 100 thì xu hướng càng mạnh. Khi giá trị này vượt quá giới hạn đã thiết lập và đường trung bình động đang tăng, chiến lược mở một vị trí dài; khi giá trị này vượt quá giới hạn đã thiết lập và đường trung bình động đang giảm, chiến lược mở một vị trí ngắn. Sau khi mở một vị trí, chiến lược đóng một phần vị trí khi giá đạt đến một mức độ nhất định và di chuyển vị trí còn lại đến một điểm mà nó tin rằng xu hướng đã kết thúc.

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

  1. Tính toán sự khác biệt giữa giá cao nhất và thấp nhất trong một phạm vi nhất định, cũng như tổng chiều dài của tất cả các nến trong phạm vi đó.
  2. Chia sự khác biệt bằng tổng chiều dài của nến và nhân với 100 để có được một giá trị phần trăm gọi là giới hạn.
  3. Khi giới hạn vượt quá một giá trị thiết lập và đường trung bình động đang tăng, mở một vị trí dài; khi giới hạn vượt quá một giá trị thiết lập và đường trung bình động đang giảm, mở một vị trí ngắn.
  4. Sau khi mở một vị trí, đóng một phần của vị trí khi giá đạt mức lấy lợi nhuận và di chuyển vị trí còn lại đến mức dừng lỗ.
  5. Khi đường trung bình động vượt xuống, đóng vị trí dài; khi đường trung bình động vượt lên, đóng vị trí ngắn.

Ưu điểm chiến lược

  1. Chiến lược này sử dụng một phương pháp độc đáo để phát hiện các hình thành xu hướng. Bằng cách tính giá trị giới hạn để xác định sức mạnh của xu hướng, nó giúp mở các vị trí vào đầu xu hướng.
  2. Sau khi mở một vị trí, chiến lược kiểm soát rủi ro bằng cách đóng một phần của vị trí và di chuyển mức dừng lỗ của vị trí còn lại.
  3. Chiến lược sử dụng các đường chéo lên và xuống của đường trung bình động để xác định kết thúc xu hướng, giúp đóng các vị trí kịp thời.

Rủi ro chiến lược

  1. Chiến lược mở các vị trí ở đầu xu hướng. Nếu xu hướng không thể duy trì, nó có thể gây ra tổn thất.
  2. Chiến lược sử dụng mức lợi nhuận cố định và mức dừng lỗ, có thể không đủ linh hoạt trong một số trường hợp.
  3. Chiến lược chỉ sử dụng đường trung bình động để xác định xu hướng, có thể bỏ lỡ một số cơ hội xu hướng.

Định hướng tối ưu hóa chiến lược

  1. Xem xét sử dụng các chỉ số khác như MACD và RSI để giúp xác định xu hướng và cải thiện độ chính xác của các vị trí mở.
  2. Điều chỉnh năng động mức lợi nhuận và dừng lỗ dựa trên biến động thị trường để kiểm soát tốt hơn rủi ro.
  3. Xem xét việc mở các vị trí chỉ sau khi xu hướng được xác nhận để giảm rủi ro vào đầu xu hướng.

Tóm lại

Chiến lược bắt xu hướng sử dụng một phương pháp độc đáo để phát hiện các hình thành xu hướng và mở các vị trí theo hướng xu hướng. Nó tính toán giá trị giới hạn để xác định sức mạnh của xu hướng và sử dụng đường vượt của đường trung bình động để xác định kết thúc xu hướng. Chiến lược kiểm soát rủi ro bằng cách đóng một phần của vị trí và di chuyển mức dừng lỗ sau khi mở một vị trí. Tuy nhiên, chiến lược có thể phải đối mặt với một số rủi ro khi mở các vị trí vào đầu xu hướng, sử dụng mức lợi nhuận cố định và mức dừng lỗ có thể không đủ linh hoạt, và chỉ sử dụng đường trung bình động để xác định xu hướng có thể bỏ lỡ một số cơ hội. Trong tương lai, chúng ta có thể xem xét giới thiệu các chỉ số khác, điều chỉnh năng động mức lợi nhuận và mức dừng lỗ, và chỉ mở các vị trí sau khi xu hướng được xác nhận để tối ưu hóa chiến lược.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
strategy("Trend Catcher Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
len = input.int(10)
tp = input.float(2.5, step = 0.1)
sl = input.float(2.5, step = 0.1)
malen = input.int(5)
limit = input.int(50)
ma = ta.sma(close,malen)
sum = 0.0
for i = 0 to len-1
    sum := sum + high[i]-low[i]
frs = 100*(ta.highest(high,len)-ta.lowest(low,len))/sum
//hline(50)
//plot(frs, color = color.white)
l = ta.crossover(frs,limit) and ma>ma[1]
s = ta.crossover(frs,limit) and ma<ma[1]
cl = ma<ma[1]
cs = ma>ma[1]
qty_balance=input.int(50, maxval = 100)
if (l)
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("exit long", "My Long Entry Id", qty_percent = qty_balance, limit = close*(100+tp)/100, stop = close*(100-sl)/100)

if (s)
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("exit short", "My Short Entry Id", qty_percent = qty_balance, limit = close*(100-tp)/100, stop = close*(100+sl)/100)

if (cl)
    strategy.close("My Long Entry Id")
if (cs)
    strategy.close("My Short Entry Id")

l:= l and strategy.opentrades<1
s:= s and strategy.opentrades<1
transp = strategy.opentrades>0? 0 : 100
pma=plot(ma, color = ma<ma[1]? color.rgb(255, 82, 82, transp) : color.rgb(76, 175, 79, transp))
price = open/2+close/2
pprice = plot(price, display = display.none)
fill(pma,pprice, color = ma<ma[1]? color.rgb(255, 82, 82, transp+90) : color.rgb(76, 175, 79, transp+90))

spm=plot(ta.valuewhen(s,close,0), color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.white : color.rgb(1,1,1,100), offset=1)
lpm=plot(ta.valuewhen(l,close,0), color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.white : color.rgb(1,1,1,100), offset=1)

ltp=plot(ta.valuewhen(l,close,0)*(100+ta.valuewhen(l,tp,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
lsl=plot(ta.valuewhen(l,close,0)*(100-ta.valuewhen(l,sl,0))/100,  color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.red : color.rgb(1,1,1,100), offset=1)

stp=plot(ta.valuewhen(s,close,0)*(100-ta.valuewhen(s,tp,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.green : color.rgb(1,1,1,100), offset=1)
ssl=plot(ta.valuewhen(s,close,0)*(100+ta.valuewhen(s,sl,0))/100, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.red : color.rgb(1,1,1,100), offset=1)
fill(stp,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(ssl,spm, color = (strategy.opentrades>0 and ma<ma[1] and ma[1]<ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))
fill(ltp,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(76, 175, 79, 90) : color.rgb(1,1,1,100))
fill(lsl,lpm, color = (strategy.opentrades>0 and ma>ma[1] and ma[1]>ma[2])? color.rgb(255, 82, 82, 90) : color.rgb(1,1,1,100))

Có liên quan

Thêm nữa