
Chiến lược này được gọi là Chiến lược dừng lỗ mua theo hướng giảm giá. Nó sử dụng đường chéo của đường trung bình di chuyển làm tín hiệu mua, kết hợp với dừng lỗ để khóa lợi nhuận, áp dụng cho các loại tiền tệ trong phạm vi biến động thấp.
Chiến lược này sử dụng trung bình di chuyển của 3 chu kỳ khác nhau: 50 chu kỳ, 100 chu kỳ và 200 chu kỳ. Logic mua của nó là: khi 50 chu kỳ đi qua 100 chu kỳ và 200 chu kỳ đi qua 100 chu kỳ, hãy tham gia nhiều hơn.
Dấu hiệu này cho thấy thị trường đang phá vỡ từ vùng biến động thấp và bắt đầu đi vào trạng thái xu hướng. 50 chu kỳ tăng nhanh cho thấy sức mạnh nội bộ ngắn hạn tăng đột ngột và bắt đầu đẩy đường dài trung bình lên; 100 chu kỳ cũng bắt đầu lên cho thấy sức mạnh trung bình gia nhập và ổn định xu hướng lên.
Sau khi vào cửa, chiến lược sử dụng phương thức dừng lỗ để khóa lợi nhuận. Mục tiêu dừng là 8% giá vào cửa và đường dừng là 4% giá vào cửa. Thiết lập dừng lớn hơn dừng lỗ, có lợi cho lợi nhuận hơn tổn thất, đảm bảo lợi nhuận của chiến lược.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Phản ứng:
Chiến lược này có thể được tối ưu hóa bằng cách:
Tóm lại, chiến lược này hoạt động theo logic rõ ràng, có thể được áp dụng linh hoạt cho giao dịch định lượng để có được lợi nhuận có rủi ro thấp bằng cách cấu hình chu kỳ trung bình di chuyển và mức dừng lỗ. Tiếp theo, có thể được tối ưu hóa từ các tín hiệu đầu vào, phương thức dừng lỗ, v.v., phối hợp với điều chỉnh tham số để tìm ra hiệu quả tối ưu.
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 10, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2019, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))
//Entry
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)
//Exit
longStopPrice = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)
strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())
//PLOT
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)