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.
Chiến lược này dựa trên một số chỉ số:
Quy tắc mua hàng cụ thể:
Các quy tắc cụ thể:
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.
Chiến lược này có những lợi thế chính như sau:
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.
Chiến lược này cũng có những rủi ro sau:
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.
Quy mô đơn đặt hàng quá lớn sẽ làm tăng rủi ro.
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ỗ.
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.
Đá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ế.
Chiến lược này cũng có thể được tối ưu hóa bằng cách:
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.
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.
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.
Sử dụng phương pháp học máy để tự động tối ưu hóa cài đặt tham số.
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.
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ể.
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ế.
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.
/*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)