
Chiến lược giao dịch số hóa biến động chéo phẳng là một hệ thống theo dõi xu hướng dựa trên quy tắc, logic cốt lõi của hệ thống xoay quanh chỉ số di chuyển 21 chu kỳ ((21 EMA)). Chiến lược giám sát giá và mối quan hệ của 21 EMA, làm nhiều khi giá vượt qua đường trung bình, trống khi đi qua đường trung bình, và đóng cửa khi giá lại vượt qua đường trung bình và mở cửa ngược lại. Chiến lược này cũng bao gồm các cơ chế kiểm soát rủi ro như thiết lập dừng, dừng lỗ khi giao dịch tùy chỉnh, giới hạn số lần giao dịch tối đa mỗi ngày và tự động khóa giao dịch sau khi thu lợi lần đầu tiên, nhằm cung cấp một hệ thống giao dịch có tính kỷ luật và logic rõ ràng.
Nguyên tắc cốt lõi của chiến lược này là nắm bắt sự thay đổi động lực của giá xung quanh 21 EMA, để thực hiện theo xu hướng và giao dịch đảo ngược.
Chiến lược cũng tích hợp giá trung bình trọng lượng giao dịch (VWAP) như một chỉ số tham chiếu phụ, cung cấp thêm thông tin về bối cảnh thị trường.
Các hướng tối ưu hóa này nhằm nâng cao tính ổn định và khả năng thích ứng của chiến lược, giảm tín hiệu giả và tăng lợi nhuận.
Chiến lược giao dịch định lượng động lực xoay quanh đường trung bình là một hệ thống theo dõi xu hướng dựa trên 21 đường EMA, có tính năng rõ ràng về logic và quy tắc nghiêm ngặt. Bằng cách theo dõi mối quan hệ giữa giá và đường trung bình, kết hợp với cơ chế quản lý rủi ro nghiêm ngặt, chiến lược này có thể nắm bắt hiệu quả các điểm biến đổi xu hướng thị trường, đồng thời kiểm soát rủi ro.
Ưu điểm chính của chiến lược là logic giao dịch đơn giản và trực quan và cơ chế thực thi kỷ luật hoàn hảo, đặc biệt là thiết kế khóa giao dịch sau khi kiếm được lợi nhuận lần đầu tiên có hiệu quả trong việc ngăn chặn giao dịch quá mức và lợi nhuận quay trở lại. Tuy nhiên, chiến lược cũng có những rủi ro tiềm ẩn như chậm trễ theo chiều ngang, phụ thuộc quá nhiều vào chỉ số duy nhất.
Phương hướng tối ưu hóa trong tương lai nên tập trung vào các khía cạnh như biến động tham số, xác nhận tín hiệu đa yếu tố, tăng cường quản lý rủi ro và phân loại tình trạng thị trường để nâng cao khả năng thích ứng của chiến lược trong các môi trường thị trường khác nhau. Thông qua các tối ưu hóa này, chiến lược này có khả năng trở thành một hệ thống giao dịch định lượng vững chắc và đáng tin cậy hơn.
Là một phần của phương pháp DSPLN, chiến lược này thể hiện triết lý giao dịch của “lắng nghe kiên nhẫn” (Do So Patiently Listening Now), nhấn mạnh sự kỷ luật và hệ thống, cung cấp cho các nhà giao dịch một khung giao dịch vượt qua sự nhiễu loạn cảm xúc và tập trung vào thực hiện quy tắc.
/*backtest
start: 2025-06-15 00:00:00
end: 2025-06-21 08:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EnvisionTrades
//@version=5
strategy("DSPLN EMA Flip Strategy v6", overlay=true)
// 🔹 Inputs
startHour = input.int(8, "Start Hour")
startMinute = input.int(30, "Start Minute")
endHour = input.int(10, "End Hour")
endMinute = input.int(30, "End Minute")
useTPSL = input.bool(true, "Use TP/SL?")
tpPoints = input.int(40, "Take Profit (points)")
slPoints = input.int(20, "Stop Loss (points)")
// 🔹 Time Filter
isWithinTradingHours = (hour > startHour or (hour == startHour and minute >= startMinute)) and
(hour < endHour or (hour == endHour and minute < endMinute))
// 🔹 Indicators
ema21 = ta.ema(close, 21)
vwap = ta.vwap
plot(ema21, title="21 EMA", color=color.orange)
plot(vwap, title="VWAP", color=color.blue)
// 🔹 State Variables
var int tradesToday = 0
var bool lastTradeWon = false
var float entryPrice = na
var label winLabel = na
var int prevTradeCount = 0
// 🔹 Entry Conditions
longEntry = isWithinTradingHours and close > ema21 and close[1] <= ema21[1]
shortEntry = isWithinTradingHours and close < ema21 and close[1] >= ema21[1]
// 🔹 Exit Conditions
longExit = strategy.position_size > 0 and close < ema21
shortExit = strategy.position_size < 0 and close > ema21
// 🔹 Trade Control
canTrade = tradesToday < 5 and not lastTradeWon
// 🔹 Entry Logic
if canTrade and strategy.position_size == 0 and longEntry
strategy.entry("Long", strategy.long)
entryPrice := close
if useTPSL
strategy.exit("TP Long", from_entry="Long", stop=close - slPoints * syminfo.mintick, limit=close + tpPoints * syminfo.mintick)
if canTrade and strategy.position_size == 0 and shortEntry
strategy.entry("Short", strategy.short)
entryPrice := close
if useTPSL
strategy.exit("TP Short", from_entry="Short", stop=close + slPoints * syminfo.mintick, limit=close - tpPoints * syminfo.mintick)
// 🔹 EMA Manual Exit Logic
if longExit
strategy.close("Long")
tradesToday += 1
lastTradeWon := close > entryPrice
if lastTradeWon
winLabel := label.new(bar_index, high, "✅ WIN - No More Trades", style=label.style_label_down, color=color.green)
if shortExit
strategy.close("Short")
tradesToday += 1
lastTradeWon := close < entryPrice
if lastTradeWon
winLabel := label.new(bar_index, low, "✅ WIN - No More Trades", style=label.style_label_up, color=color.green)
// 🔹 Detect Closed Trades (TP/SL exits)
tradeCount = strategy.closedtrades
if tradeCount > prevTradeCount
closedProfit = strategy.netprofit - strategy.netprofit[1]
tradesToday += 1
lastTradeWon := closedProfit > 0
if lastTradeWon
winLabel := label.new(bar_index, high, "✅ TP WIN - No More Trades", style=label.style_label_down, color=color.green)
prevTradeCount := tradeCount
// 🔹 Reset Daily
if (hour == endHour and minute == endMinute)
tradesToday := 0
lastTradeWon := false
entryPrice := na
prevTradeCount := 0
if not na(winLabel)
label.delete(winLabel)