Chiến lược này là một hệ thống giao dịch theo xu hướng kết hợp lại Fibonacci, nhiều đường trung bình chuyển động theo cấp số nhân và phân tích khối lượng. Nó xác định các cơ hội giao dịch tiềm năng bằng cách phân tích các vị trí giá ở các mức khôi phục Fibonacci khác nhau (0, 0, 382, 0, 618, 1), xác nhận xu hướng với EMA nhiều giai đoạn (20/50/100/200), và lọc qua ngưỡng khối lượng. Hệ thống bao gồm một cơ chế quản lý rủi ro toàn diện với cài đặt dừng lỗ và lấy lợi nhuận theo tỷ lệ phần trăm cố định.
Logic cốt lõi dựa trên phân tích kỹ thuật đa cấp:
Đây là một chiến lược theo xu hướng đa cấp được thiết kế tốt, xây dựng một khuôn khổ phân tích toàn diện bằng cách sử dụng các công cụ phân tích kỹ thuật cổ điển. Sức mạnh của nó nằm trong việc xác nhận tín hiệu nghiêm ngặt và quản lý rủi ro hoàn chỉnh, trong khi cần chú ý đến hiệu suất trong các thị trường khác nhau. Thông qua các tối ưu hóa được đề xuất, đặc biệt là trong quản lý rủi ro năng động và định lượng sức mạnh xu hướng, sự ổn định và lợi nhuận của chiến lược có thể được tăng thêm.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ALD Fib Ema SAKALAM", overlay=true) // Inputs lookback = input.int(30, title="Lookback Period for Fibonacci", minval=10) volumeThreshold = input.float(500000, title="24h Volume Threshold", step=50000) stopLossPct = input.float(3.0, title="Stop Loss %", minval=0.5) takeProfitPct = input.float(6.0, title="Take Profit %", minval=1.0) maLength = input.int(50, title="Trend Filter MA Length", minval=1) // Moving Average (Trend Filter) ma = ta.sma(close, maLength) // High and Low for Fibonacci Levels var float swingHigh = na var float swingLow = na if bar_index > lookback swingHigh := ta.highest(high, lookback) swingLow := ta.lowest(low, lookback) // Fibonacci Levels Calculation fib0 = swingLow fib1 = swingHigh fib382 = swingHigh - 0.382 * (swingHigh - swingLow) fib618 = swingHigh - 0.618 * (swingHigh - swingLow) // 24-hour Volume Calculation volume24h = ta.sma(volume, 24) // Plot Fibonacci Levels plot(fib0, title="Fib 0", color=color.new(color.red, 80)) plot(fib382, title="Fib 0.382", color=color.new(color.green, 50)) plot(fib618, title="Fib 0.618", color=color.new(color.blue, 50)) plot(fib1, title="Fib 1", color=color.new(color.red, 80)) plot(ma, title="Trend Filter MA", color=color.orange) // Entry Condition: Buy Signal longCondition = (close <= fib382) and (volume24h > volumeThreshold) and (close > ma) if (longCondition) strategy.entry("Buy", strategy.long) label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white) // Exit Conditions takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPct / 100) stopLossPrice = strategy.position_avg_price * (1 - stopLossPct / 100) // Place Exit Orders strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=takeProfitPrice, stop=stopLossPrice) // Add Labels for Exits if (strategy.position_size > 0) if (high >= takeProfitPrice) label.new(bar_index, high, "EXIT (Take Profit)", style=label.style_label_down, color=color.blue, textcolor=color.white) if (low <= stopLossPrice) label.new(bar_index, low, "EXIT (Stop Loss)", style=label.style_label_down, color=color.red, textcolor=color.white) // Short Selling Conditions shortCondition = (close >= fib618) and (volume24h > volumeThreshold) and (close < ma) if (shortCondition) strategy.entry("Sell", strategy.short) label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white) // Short Exit Conditions if (strategy.position_size < 0) strategy.exit("Short Take Profit/Stop Loss", from_entry="Sell", limit=strategy.position_avg_price * (1 - takeProfitPct / 100), stop=strategy.position_avg_price * (1 + stopLossPct / 100)) // Add EMA 20/50/100/200 shortest = ta.ema(close, 20) short = ta.ema(close, 50) longer = ta.ema(close, 100) longest = ta.ema(close, 200) plot(shortest, color=color.orange, title="EMA 20") plot(short, color=color.red, title="EMA 50") plot(longer, color=color.black, title="EMA 100") plot(longest, color=color.green, title="EMA 200")