Chiến lược giao dịch dựa trên tỷ lệ thay đổi


Ngày tạo: 2023-09-28 11:26:44 sửa đổi lần cuối: 2023-09-28 11:26:44
sao chép: 1 Số nhấp chuột: 642
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này xác định thời điểm mua và bán bằng cách tính toán tỷ lệ thay đổi trong một khoảng thời gian nhất định. Nó có thể giúp các nhà giao dịch nắm bắt cơ hội thay đổi giá trong ngắn hạn.

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

Chiến lược này dựa trên một số chỉ số:

  1. Đường trung bình di chuyển nhanh đơn giản ((14 ngày mặc định): xu hướng ngắn hạn để đánh giá giá cả
  2. Đường trung bình di chuyển đơn giản chậm ((100 ngày mặc định): dùng để đánh giá xu hướng dài hạn của giá cả
  3. Reference Simple Moving Average ((Default 30 day): dùng để xác định xu hướng mua bán
  4. Tỷ lệ thay đổi: Xác định mức độ biến động của giá bằng cách tính toán biến động của giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định trong quá khứ (đường K 12 mặc định)

Quy tắc mua hàng cụ thể:

  1. Giá thấp hơn mức trung bình di chuyển đơn giản tham khảo
  2. Tỷ lệ thay đổi cao hơn so với ngưỡng thay đổi thấp được thiết lập (bằng mặc định là 2,3%)
  3. Đường SMA tăng nhanh và đường SMA giảm chậm cho thấy hai đường cong có thể giao nhau

Các quy tắc cụ thể:

  1. Giá cao hơn đường trung bình di chuyển đơn giản tham khảo
  2. Tỷ lệ thay đổi cao hơn so với ngưỡng thay đổi cao được thiết lập (bằng mặc định là 4,7%)
  3. Giá cả tăng liên tục 3 đường K
  4. Tiền lợi nhuận hiện tại
  5. SMA nhanh hơn SMA chậm

Kích thước đơn đặt hàng được thiết lập theo tỷ lệ phần trăm của tổng quyền lợi (bằng cách mặc định là 96%) để cung cấp hiệu ứng đòn bẩy.

Phân tích lợi thế chiến lược

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

  1. Sử dụng tỷ lệ biến đổi để đánh giá biến động, bạn có thể nắm bắt cơ hội tăng hoặc giảm giá nhanh trong thời gian ngắn để đạt được lợi nhuận cao hơn.
  2. Kết hợp với xu hướng đánh giá SMA, bạn có thể nắm bắt chính xác hơn thời điểm mua thấp và bán cao.
  3. Thiết lập SMA tham chiếu như một hướng dẫn tổng thể, có thể tránh bị lừa dối bởi giá cả đường ngắn.
  4. Sử dụng theo dõi dừng lỗ để khóa lợi nhuận, giảm rủi ro.
  5. Quy mô đơn đặt hàng có thể tạo ra hiệu ứng đòn bẩy và tăng lợi nhuận.

Nhìn chung, chiến lược này sử dụng đầy đủ các công cụ như tỷ lệ biến động giá, chỉ số SMA, để có được hiệu suất tốt hơn trong các tình huống biến động.

Phân tích rủi ro

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

  1. Tỷ lệ thay đổi và tham số SMA được thiết lập không đúng có thể dẫn đến tín hiệu giao dịch bị trục trặc hoặc sai. Cần điều chỉnh tham số cho các thị trường khác nhau.

  2. Quy mô đơn đặt hàng quá lớn sẽ làm tăng rủi ro.

  3. Theo dõi dừng lỗ có thể dừng quá sớm trong tình huống chấn động. Bạn có thể cân nhắc điều chỉnh mức dừng lỗ.

  4. Chiến lược Transactionsstab có thể dễ bị mạo hiểm. Nó nên được kết hợp với phán đoán xu hướng và quản lý rủi ro.

  5. Đánh giá rủi ro phù hợp của dữ liệu. Chiến lược này nên được thử nghiệm nhiều lần trên các thị trường khác nhau.

Đối với những rủi ro này, bạn có thể kiểm soát rủi ro bằng các phương tiện như tối ưu hóa tham số, điều chỉnh đơn đặt hàng, tối ưu hóa chiến lược dừng lỗ và xác minh thực tế.

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

Chiến lược này cũng có thể được tối ưu hóa bằng cách:

  1. Thêm các chỉ số kỹ thuật khác, chẳng hạn như tỷ lệ dao động, khối lượng giao dịch, để cải thiện độ chính xác của tín hiệu.

  2. Tối ưu hóa số lần giao dịch, giảm ảnh hưởng của thị trường giao dịch bằng cách giảm tần suất giao dịch.

  3. Kết hợp chiến lược phá vỡ, thiết lập tín hiệu giao dịch phá vỡ gần mức giá quan trọng.

  4. Sử dụng phương pháp học máy để tự động tối ưu hóa cài đặt tham số.

  5. Thử nghiệm sức mạnh của chiến lược trong nhiều thị trường trong nhiều thời gian để cải thiện khả năng thích ứng.

  6. Cân nhắc các đặc điểm của các loại khác nhau như cổ phiếu, ngoại hối và thiết lập các tham số cụ thể.

  7. Các tín hiệu chiến lược và phương pháp kiểm soát rủi ro được tối ưu hóa liên tục dựa trên kết quả thực tế.

Tóm tắt

Chiến lược này tìm kiếm cơ hội giao dịch trong biến động giá đường ngắn bằng cách đánh giá tỷ lệ thay đổi và chỉ số SMA. Nó có lợi cho việc nắm bắt xu hướng nhanh, nhưng cũng cần chú ý đến kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// Author: Sonny Parlin (highschool dropout)
// Best if run on 5m timeframe
strategy(shorttitle="ROC+Strategy", title="Rate of Change Strategy",
                                      overlay=true,  currency=currency.USD,
                                      initial_capital=10000)

// Inputs and variables
ss = input(14, minval=10, maxval=50, title="SMA Fast (days)")
ff = input(100, minval=55, maxval=200, title="SMA Slow (days)")
ref = input(30, minval=20, maxval=50, title="SMA Reference (days)")
lowOffset = input(0.023, "ROC Low (%)", minval=0, step=0.01)
highOffset = input(0.047, "ROC High (%)", minval=0, step=0.01)
orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01)
lookback = input(12, "Lookback Candles", minval=1, step=1) 

// SMA
smaFast = sma(close, ss)
smaSlow = sma(close, ff)
smaRef = sma(close, ref)
ROC = (max(close[lookback],close) - min(close[lookback],close)) / max(close[lookback],close)

// Set up SMA plot but don't show by default
plot(smaFast, "smaFast", color=#00ff00, display = 0)
plot(smaSlow, "smaSlow", color=#ff0000, display = 0)
plot(smaRef, "smaRef", color=#ffffff, display = 0)

// The buy stratey:
// Guard that the low is under our SMA Reference line 
// Guard that the rate of change over the lookback period is greater than our 
// ROC lowOffset %, default is 0.023. (low < smaRef) and (ROC > lowOffset)
// SMA fast is on the rise and SMA slow is falling and they are very likely
// to cross. (rising(smaFast,1)) and (falling(smaSlow, 1)) 
enterLong = (low < smaRef) and (ROC > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow,1)) 

// The sell Strategy:
// Guard that close is higher than our SMA reference line and that the rate of 
// change over the lookback period is greater than our highOffset %, default
// is 0.047. (close > smaRef) and (ROC > highOffset)
// Guard that close has risen by 3 candles in a row (rising(close,3)) 
// Guard that we currently have profit (strategy.openprofit > 0)
// Guard that SMA fast is higher than smaSlow (smaFast > smaSlow)
// If it keeps going up past our close position the trailing stoploss will kick in!
enterShort = (close > smaRef) and (ROC > highOffset) and (rising(close,3)) and (strategy.openprofit > 0) and (smaFast > smaSlow)

// Order size is based on total equity
// Example 1:
// startingEquity = 2000
// close = 47434.93
// orderStake = 0.45
// (2,000 × orderStake) / close = orderSize = 0.0189733599 = approx $900

// Example 2:
// startingEquity = 2000
// close = 1.272
// orderStake = 0.45
// (startingEquity × orderStake) / close = orderSize = 707.5471698113 = approx $900
orderSize = (strategy.equity * orderStake) / close

// Trailing Stoploss
// I'm using 2.62 as my default value, play with this for different results.
longTrailPerc = input(title="Trailing Stoploss (%)",
     type=input.float, minval=0.0, step=0.1, defval=3.62) * 0.01
     
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0

if (enterLong)
    strategy.entry("Open Long Position", strategy.long, orderSize, when=strategy.position_size <= 0)
    
if (enterShort)
    strategy.exit(id="Close Long Position", stop=longStopPrice)


//plot(strategy.equity)