Chiến lược này tính toán tỷ lệ thay đổi theo thời gian để xác định tín hiệu mua / bán. Nó có thể giúp các nhà giao dịch nắm bắt các cơ hội trong biến động giá ngắn hạn.
Chiến lược chủ yếu dựa trên các chỉ số sau:
Các quy tắc nhập cảnh cụ thể:
Các quy tắc rời khỏi đặc biệt:
Kích thước vị trí là tỷ lệ phần trăm (thường 96%) của tổng vốn chủ sở hữu cho đòn bẩy.
Chiến lược có những lợi thế sau:
Sử dụng ROC để phát hiện biến động cho phép nắm bắt các động thái tăng / giảm để có lợi nhuận cao hơn.
Kết hợp SMA nhanh / chậm giúp xác định chính xác hơn các điểm thấp / cao.
SMA tham chiếu cung cấp hướng tổng thể để tránh sự phân tâm từ tiếng ồn ngắn hạn.
Theo dõi dừng lỗ khóa trong lợi nhuận và giảm rủi ro giảm.
Đòn bẩy từ kích thước vị trí khuếch đại lợi nhuận.
Nhìn chung, chiến lược sử dụng ROC, SMA và các công cụ khác hiệu quả để tận dụng dao động giá. Nó có thể đạt được kết quả tốt trong thị trường biến động.
Chiến lược này cũng có những rủi ro sau:
Các thông số ROC và SMA không chính xác có thể gây ra các tín hiệu bị bỏ lỡ hoặc giao dịch xấu.
Số lượng lệnh quá lớn làm tăng rủi ro.
Stop Loss có thể thoát ra sớm trong các thị trường hỗn loạn.
Có xu hướng giảm giá trên các thị trường khác nhau.
Rủi ro quá phù hợp. Sự bền vững nên được xác minh thông qua giao dịch trực tiếp trên các thị trường.
Rủi ro có thể được quản lý thông qua tối ưu hóa tham số, kích thước vị trí, điều chỉnh dừng lỗ, kiểm tra độ bền v.v.
Chiến lược có thể được cải thiện trong các khía cạnh sau:
Thêm các chỉ số kỹ thuật khác như biến động, khối lượng để cải thiện độ chính xác tín hiệu.
Tối ưu hóa số lượng giao dịch bằng cách giảm tần suất giao dịch để giảm thiểu tác động của whipsaw.
Kết hợp các kỹ thuật đột phá xung quanh các mức giá chính.
Sử dụng máy học để tự động tối ưu hóa các thông số.
Kiểm tra độ bền trên các thị trường và khung thời gian khác nhau.
Điều chỉnh các thông số chuyên biệt cho các sản phẩm khác nhau như cổ phiếu, ngoại hối vv
Tiếp tục tinh chỉnh tín hiệu và kiểm soát rủi ro dựa trên kết quả trực tiếp.
Chiến lược này xác định các cơ hội giao dịch xung quanh dao động ngắn hạn bằng cách sử dụng phân tích ROC và SMA. Nó giúp tận dụng các biến động nhanh nhưng cũng yêu cầu kiểm soát rủi ro thích hợp. Các thông số điều chỉnh tốt, kích thước vị trí, dừng lỗ và kiểm tra độ bền có thể tăng cường tính ổn định và khả năng thích nghi. Chiến lược phục vụ như một mẫu tham chiếu cho giao dịch định lượng nhưng cần tùy chỉnh cho các thị trường khác nhau.
/*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)