Chiến lược này đánh giá xu hướng giá thông qua việc tính toán trung bình di chuyển nhanh, trung bình di chuyển chậm và chỉ số MACD, và xây dựng các tín hiệu giao dịch chéo vàng và chéo chết. Nó cũng kết hợp lấy lợi nhuận, dừng lỗ và dừng lỗ để khóa lợi nhuận và liên tục theo dõi xu hướng.
Chiến lược này được xây dựng chủ yếu dựa trên ba chỉ số.
Đầu tiên, nó tính toán trung bình di chuyển nhanh và hai trung bình di chuyển chậm. Khi MA nhanh vượt quá hai MA chậm, một tín hiệu mua được tạo ra. Khi MA nhanh xuống dưới hai MA chậm, một tín hiệu bán được tạo ra. Điều này đánh giá mối quan hệ giữa xu hướng ngắn hạn và dài hạn để nhận ra giao dịch chéo vàng và chéo chết.
Thứ hai, nó tính toán chỉ số MACD, bao gồm đường MACD, đường tín hiệu và biểu đồ. Khi biểu đồ MACD > 0, đó là một chỉ số tăng; khi biểu đồ MACD < 0, đó là một chỉ số giảm. Điều này giúp đánh giá độ tin cậy của các tín hiệu chéo vàng và chéo chết.
Cuối cùng, nó kết hợp các cơ chế lấy lợi nhuận, dừng lỗ và dừng lỗ.
Những lợi thế của chiến lược này bao gồm:
Ngoài ra còn có một số rủi ro:
Các giải pháp là:
Chiến lược cũng có thể được tối ưu hóa từ các khía cạnh sau:
Tóm lại, đây là một chiến lược đơn giản nhưng hiệu quả sử dụng Golden Cross, Dead Cross và MACD để đánh giá xu hướng và nhận ra stop loss. Những lợi thế là theo dõi xu hướng và khóa lợi nhuận với khả năng tùy biến cao. Đây là một chiến lược tối ưu hóa tham số phổ quát phù hợp với các công cụ giao dịch khác nhau.
/*backtest start: 2023-12-14 00:00:00 end: 2023-12-21 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy('The Puria Method', shorttitle = 'Puria',overlay = true) //=== GENERAL INPUTS === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 5, title = "Fast MA Period", minval = 1) // long ma 1 maSlow1Source = input(defval = low, title = "Slow MA1 Source") maSlow1Length = input(defval = 85, title = "Slow MA Period", minval = 1) // long ma 2 maSlow2Source = input(defval = low, title = "Slow MA2 Source") maSlow2Length = input(defval = 75, title = "Slow MA Period", minval = 1) //macd macdFastLength = input(defval = 12, title = "Fast MACD Period", minval = 1) macdSlowLength = input(defval = 26, title = "Slow MACD Period", minval = 1) macdSmaLength = input(defval = 9, title = "SMA MACD Period", minval = 1) // the risk management inputs inpTakeProfit = input(defval = 30, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 10, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 5, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na // === SERIES SETUP === maFast = ema(maFastSource, maFastLength) maSlow1 = wma(maSlow1Source, maSlow1Length) maSlow2 = wma(maSlow2Source, maSlow2Length) [_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50) slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50) slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50) // === LOGIC === signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0 signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0 // ===STRATEGY=== strategy.entry(id = "Long", long = true, when = signalUp) strategy.entry(id = "Short", long = false, when = signalDown) strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)