Chiến lược nắm bắt xu hướng

MA SMA
Ngày tạo: 2024-04-26 11:48:28 sửa đổi lần cuối: 2024-04-26 11:48:28
sao chép: 5 Số nhấp chuột: 753
1
tập trung vào
1617
Người theo dõi

Chiến lược nắm bắt xu hướng

Tổng quan

Chiến lược bắt xu hướng là một chiến lược sử dụng phương pháp độc đáo để phát hiện xu hướng hình thành và mở vị trí theo hướng xu hướng. Bằng cách tính toán tỷ lệ chênh lệch giữa giá cao nhất và giá thấp nhất trong một phạm vi nhất định với tổng các chiều dài của tất cả các đường K trong phạm vi đó, nó có được một tỷ lệ phần trăm được gọi là “giới hạn”.

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

  1. Tính phân biệt giá cao nhất và giá thấp nhất trong một phạm vi nhất định, và tổng tất cả các chiều dài của K trong phạm vi đó.
  2. Khi chia số lượng chênh lệch cho chiều dài K và nhân nó với 100, bạn sẽ có được một phần trăm, gọi là “giới hạn”.
  3. Khi giới hạn vượt quá giá trị thiết lập và di chuyển trung bình lên, mở nhiều lệnh; khi giới hạn vượt quá giá trị thiết lập và di chuyển trung bình xuống, mở thẻ trống.
  4. Sau khi mở vị trí, khi giá đạt đến điểm dừng, một phần vị trí bị xóa và vị trí còn lại di chuyển đến điểm dừng lỗ.
  5. Khi đường trung bình di chuyển đi xuống, bạn sẽ xóa nhiều thẻ; khi đường trung bình di chuyển đi lên, bạn sẽ xóa thẻ trống.

Lợi thế chiến lược

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

Rủi ro chiến lược

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

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

  1. Có thể xem xét sử dụng các chỉ số khác để hỗ trợ phán đoán xu hướng, như MACD, RSI, v.v. để cải thiện độ chính xác của việc mở vị trí.
  2. Bạn có thể điều chỉnh các điểm dừng và dừng lỗ theo biến động của thị trường để kiểm soát rủi ro tốt hơn.
  3. Bạn có thể cân nhắc mở thêm một vị thế sau khi xác nhận xu hướng để giảm thiểu rủi ro khi xu hướng bắt đầu.

Tóm tắt

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

Mã nguồn 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))