Chiến lược này tích hợp nhiều chỉ số kỹ thuật và khái niệm giao dịch để tự động tạo ra tín hiệu mua và bán.
Chỉ số UTSTC tùy chỉnh: Một stop trailing thích nghi dựa trên Average True Range để điều chỉnh stop loss range theo biến động thị trường.
Chỉ số STC: Sự khác biệt giữa các đường trung bình di chuyển đơn giản nhanh và chậm để xác định hướng xu hướng thị trường và các điểm đảo ngược tiềm năng.
Trung bình di chuyển đơn giản (SMA) và Trung bình di chuyển theo cấp số (EMA): Xây dựng biểu đồ trung bình di chuyển của các giai đoạn khác nhau để cung cấp thông tin xu hướng bổ sung.
Tín hiệu mua: Được tạo ra khi giá đóng vượt qua đường UTSTC và STC ở trạng thái tăng.
Tín hiệu bán: Được tạo ra khi giá đóng vượt dưới đường UTSTC và STC ở trạng thái giảm.
Tích hợp nhiều chỉ số để xác định xu hướng thị trường, cải thiện độ chính xác tín hiệu.
UTSTC điều chỉnh dừng tự động dựa trên biến động thực sự, kiểm soát hiệu quả lỗ cho mỗi giao dịch.
Các tín hiệu giao dịch đơn giản và hiệu quả từ đường chéo trung bình động.
Sự kết hợp các tham số khác nhau phù hợp với nhiều môi trường thị trường hơn.
Các chỉ số xu hướng như STC có thể tụt lại và bỏ lỡ sự đảo ngược ngắn hạn.
Các đường chéo trung bình di chuyển có thể tạo ra tín hiệu sai.
Đánh giá cẩn thận các thông số cần thiết, sự kết hợp không phù hợp có thể làm giảm lợi nhuận hoặc tăng lỗ.
Phạm vi dừng lỗ quá rộng có thể làm tăng lỗ, quá chặt có thể dừng sớm.
Kiểm tra các chiều dài STC khác nhau để tìm các thiết lập có tác động tối thiểu đến chiến lược.
Thêm các bộ lọc bổ sung để giảm tín hiệu sai, ví dụ: KDJ, MACD.
Tối ưu hóa các điểm dừng dựa trên kết quả backtest để tìm ra kết hợp tham số tốt nhất.
Đánh giá các khoảng thời gian giữ khác nhau để xác định tối ưu.
Chiến lược này kết hợp xu hướng, dừng tự động và các mô-đun tín hiệu thành một khuôn khổ giao dịch thuật toán khá hoàn chỉnh. Với điều chỉnh tham số và mở rộng tính năng, lợi nhuận ổn định có thể đạt được nhưng không có chiến lược nào có thể tránh hoàn toàn tổn thất.
/*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"}] */ //@version=4 strategy("OB+LQ+UTSTC+SMA+EMA-NORA-MIP21-Jashore-Bangladesh-OneMinuteTF", shorttitle="OB+LS+UTSTC-MIP21-Jashore-Bangladesh-OneMinuteTF", overlay=true) // Order Block + Liquidity Swings [NORA] Settings pivot_length = input(14, title="Pivot Lookback") bull_ext_last = input(3, title="Bullish OB Extension") bear_ext_last = input(3, title="Bearish OB Extension") swing_length = input(5, title="Swing Length") area = input("Wick Extremity", title="Swing Area", options=["Wick Extremity", "Full Range"]) min_profit = input(0.5, title="Minimum Profit Target") max_loss = input(0.5, title="Maximum Loss Stop") // Variables var float bull_ob_price = na var float bear_ob_price = na var float swing_high = na var float swing_low = na // Calculate Order Block Prices var float low_lowest = na var float high_highest = na if bar_index >= pivot_length low_lowest := lowest(low, pivot_length) high_highest := highest(high, pivot_length) bull_ob_price := low_lowest bear_ob_price := high_highest // Calculate Swing High/Low Prices var float low_lowest_swing = na var float high_highest_swing = na if area == "Wick Extremity" low_lowest_swing := lowest(low, swing_length) high_highest_swing := highest(high, swing_length) else low_lowest_swing := lowest(high - low, swing_length) high_highest_swing := highest(high - low, swing_length) swing_low := low_lowest_swing swing_high := high_highest_swing // Trading Logic for Order Block + Liquidity Swings buy_liquidity = crossover(close, bull_ob_price) and close > swing_low sell_liquidity = crossunder(close, bear_ob_price) and close < swing_high // Plot Buy/Sell Signals for Order Block + Liquidity Swings plotshape(series=buy_liquidity, style=shape.labelup, location=location.belowbar, color=color.rgb(39, 166, 175), size=size.small, title="Bullish LQ") plotshape(series=sell_liquidity, style=shape.labeldown, location=location.abovebar, color=color.rgb(248, 95, 215), size=size.small, title="Bearish LQ") // UTSTC-SMA-EMA-NORA-New Settings keyvalue = input(3, title="UT Bot Key Value", step=0.5) atrperiod = input(10, title="UT Bot ATR Period") src = close xATR = atr(atrperiod) nLoss = keyvalue * xATR xATRTrailingStop = 0.0 xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss), iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1, iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue plot(xATRTrailingStop, color=xcolor, title="UT Bot Trailing Stop") // STC Settings stc_length = input(12, title="STC Length") fastLength = input(26, title="STC Fast Length") slowLength = input(50, title="STC Slow Length") fastMA = ema(close, fastLength) slowMA = ema(close, slowLength) STC = fastMA - slowMA STCColor = STC > STC[1] ? color.green : color.red plot(STC, color=STCColor, title="STC") // Add SMAs sma21 = sma(close, 21) sma44 = sma(close, 44) plot(sma21, color=color.blue, title="SMA 21") plot(sma44, color=color.orange, title="SMA 44") // Add EMA ema5 = ema(close, 5) plot(ema5, color=color.yellow, title="EMA 5") // Combined Strategy buySignal = crossover(src, xATRTrailingStop) and STC < 25 and STCColor == color.green sellSignal = crossunder(src, xATRTrailingStop) and STC > 75 and STCColor == color.red // Plot Buy and Sell signals as triangles plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) strategy.entry("Buy", strategy.long, when=buySignal) strategy.entry("Sell", strategy.short, when=sellSignal)