Chiến lược này theo dõi xu hướng giá của tiền điện tử bằng cách thiết lập mức giá cao và thấp. Nó đi dài khi giá vượt qua mức giá cao nhất và đi ngắn khi giá vượt qua mức giá thấp nhất để nắm bắt xu hướng.
Chiến lược này chủ yếu sử dụng phương pháp trung bình động cân để xác định liệu có xu hướng tăng hoặc giảm rõ ràng hay không. Cụ thể, nó sẽ ghi lại giá cao nhất và thấp nhất trong một khoảng thời gian nhất định. Khi giá giao dịch thực tế vượt quá giá cao nhất được ghi nhận, nó được đánh giá là xu hướng tăng đã xảy ra và nó sẽ dài. Khi giá giao dịch thực tế thấp hơn giá thấp nhất được ghi nhận, nó được đánh giá là xu hướng giảm đã xảy ra và nó sẽ ngắn.
Giá mở cho dài và ngắn được thiết lập thông qua tham số đầu vào
Cụ thể, logic chính của chiến lược là:
Thông qua vòng lặp logic này, nó có thể nắm bắt xu hướng tăng và giảm của giá và đạt được xu hướng theo.
Ưu điểm lớn nhất của chiến lược này là bằng cách điều chỉnh các tham số, nó có thể tự động nắm bắt xu hướng giá mà không cần phải đánh giá theo hướng xu hướng.
Ngoài ra, chiến lược này rất phù hợp với giao dịch định lượng và có thể dễ dàng đạt được việc đặt lệnh tự động. Không cần hoạt động bằng tay, nó làm giảm rủi ro giao dịch cảm xúc và cải thiện đáng kể hiệu quả giao dịch.
Cuối cùng, chiến lược này cũng có thể tối đa hóa lợi nhuận bằng cách điều chỉnh các tham số. Bằng cách thử nghiệm các tham số ENTRY và EXIT khác nhau, các tham số tối ưu có thể được tìm thấy để tối đa hóa lợi nhuận.
Rủi ro lớn nhất của chiến lược này là việc cài đặt tham số không đúng có thể dẫn đến giao dịch quá thường xuyên, tăng phí giao dịch và lỗ trượt.
Ngoài ra, điều chỉnh tham số không đúng cũng có thể dẫn đến việc không nắm bắt xu hướng giá đúng thời gian, bỏ lỡ cơ hội giao dịch.
Cuối cùng, chiến lược này quá nhạy cảm với tiếng ồn thị trường ngắn hạn, có thể tạo ra các tín hiệu giao dịch sai.
Các khía cạnh sau đây có thể được tối ưu hóa hơn nữa cho chiến lược này:
Thêm logic dừng lỗ. Điều này cho phép dừng lỗ khi lỗ vượt quá một tỷ lệ phần trăm nhất định để tránh lỗ lớn hơn.
Thêm các bộ lọc chỉ số kỹ thuật như trung bình động, KDJ để đánh giá xu hướng tổng thể để tránh giao dịch quá nhiều do tiếng ồn ngắn hạn.
Tối ưu hóa logic thiết lập tham số. Cơ chế thay đổi thích nghi có thể được thiết lập cho các tham số ENTRY và EXIT thay vì thiết lập tĩnh để chúng có thể điều chỉnh dựa trên điều kiện thị trường.
Sử dụng máy học để đào tạo các thông số tối ưu. Nhận các thiết lập ENTRY và EXIT tối ưu cho môi trường thị trường hiện tại thông qua đào tạo dữ liệu lịch sử lớn.
Ưu điểm lớn nhất của chiến lược này là bằng cách nắm bắt xu hướng giá, nó đạt được giao dịch tự động, có thể làm giảm tác động của cảm xúc con người đối với giao dịch, giảm rủi ro và cải thiện hiệu quả.
Các rủi ro chính của chiến lược là cài đặt tham số không phù hợp và quá nhạy cảm với tiếng ồn thị trường. Điều này cần được cải thiện thông qua dừng lỗ, bộ lọc chỉ số, tối ưu hóa tham số thích nghi và nhiều hơn nữa.
Nhìn chung, đây là một xu hướng đơn giản và hiệu quả sau chiến lược phù hợp với giao dịch định lượng và tự động.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 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/ // © JstMtlQC //@version=4 strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) /////////////// INPUT ENTRY EXIT entry= input(100, "ENTRY H/L") exit= input(50, "EXIT H/L") /////////////// Backtest Input FromYear = input(2015, "Backtest Start Year") FromMonth = input(1, "Backtest Start Month") FromDay = input(1, "Backtest Start Day") ToYear = input(2999, "Backtest End Year") ToMonth = input(1, "Backtest End Month") ToDay = input(1, "Backtest End Day") /////////////// Backtest Setting start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false /////////////// BUY OPEN PLOT highestpricelong = highest(high,entry)[1] plot(highestpricelong, color=color.green, linewidth=2) /////////////// BUY CLOSE PLOT lowestpricelong = lowest(high,exit)[1] plot(lowestpricelong, color=color.green, linewidth=2) /////////////// SHORT OPEN PLOT lowestpriceshort = lowest(low,entry)[1] plot(lowestpriceshort, color=color.red, linewidth=2) /////////////// SHORT CLOSE PLOT highestpriceshort = highest(low,exit)[1] plot(highestpriceshort, color=color.red, linewidth=2) /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// CONDITION LONG SHORT ////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////// SHORT entryshort= crossunder(close, lowestpriceshort) exitshort= crossover(close,highestpriceshort) /////////////// LONG exitlong= crossover(close, lowestpricelong) entrylong= crossover(close,highestpricelong) /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// LONG and SHORT ORDER ////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////// LONG if (entrylong) strategy.entry("LongEntry", strategy.long, when = window()) if (exitlong or entryshort) strategy.close("LongEntry", when=window()) /////////////// SHORT if (entryshort) strategy.entry("short", strategy.short, when = window()) if (exitshort or entrylong) strategy.close("short", when=window())