Chiến lược này là một hệ thống giao dịch thích nghi dựa trên các khoảng trống và biến động giá, đạt được lợi nhuận ổn định thông qua các điểm vào linh hoạt và cài đặt lấy lợi nhuận / dừng lỗ năng động. Chiến lược này sử dụng kích thước vị trí kim tự tháp kết hợp với hệ thống quản lý lệnh OCA để kiểm soát rủi ro. Hệ thống tự động điều chỉnh hướng vị trí và đóng các vị trí ngay lập tức khi các tín hiệu đảo ngược xuất hiện.
Chiến lược hoạt động thông qua một số cơ chế cốt lõi:
Đây là một chiến lược giao dịch được thiết kế tốt với logic nghiêm ngặt, đảm bảo sự ổn định và an toàn giao dịch thông qua nhiều cơ chế. Những lợi thế cốt lõi nằm trong khả năng thích nghi và kiểm soát rủi ro của nó, trong khi phải chú ý đến rủi ro từ biến động thị trường. Thông qua tối ưu hóa và cải tiến liên tục, chiến lược có tiềm năng duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau.
/*backtest start: 2024-12-04 00:00:00 end: 2024-12-11 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Greedy Strategy - maclaurin", pyramiding = 100, calc_on_order_fills=false, overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) backtestStartDate = input(timestamp("1 Jan 1990"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") backtestEndDate = input(timestamp("1 Jan 2023"), title="End Date", group="Backtest Time Period", tooltip="This end date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") inTradeWindow = true tp = input(10) sl = input(10) maxidf = input(title="Max Intraday Filled Orders", defval=5) // strategy.risk.max_intraday_filled_orders(maxidf) upGap = open > high[1] dnGap = open < low[1] dn = strategy.position_size < 0 and open > close up = strategy.position_size > 0 and open < close if inTradeWindow and upGap strategy.entry("GapUp", strategy.long, stop = high[1]) else strategy.cancel("GapUp") if inTradeWindow and dn strategy.entry("Dn", strategy.short, stop = close) else strategy.cancel("Dn") if inTradeWindow and dnGap strategy.entry("GapDn", strategy.short, stop = low[1]) else strategy.cancel("GapDn") if inTradeWindow and up strategy.entry("Up", strategy.long, stop = close) else strategy.cancel("Up") XQty = strategy.position_size < 0 ? -strategy.position_size : strategy.position_size dir = strategy.position_size < 0 ? -1 : 1 lmP = strategy.position_avg_price + dir*tp*syminfo.mintick slP = strategy.position_avg_price - dir*sl*syminfo.mintick float nav = na revCond = strategy.position_size > 0 ? dnGap : (strategy.position_size < 0 ? upGap : false) if inTradeWindow and not revCond and XQty > 0 strategy.order("TP", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, lmP, nav, "TPSL", "TPSL") strategy.order("SL", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, nav, slP, "TPSL", "TPSL") if XQty == 0 or revCond strategy.cancel("TP") strategy.cancel("SL") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)