Chiến lược PresentTrend là một chiến lược theo xu hướng tùy chỉnh độc đáo. Sự kết hợp này cho phép chiến lược tận dụng cả xu hướng thị trường ngắn hạn và dài hạn, làm cho nó phù hợp với các điều kiện thị trường khác nhau.
Chiến lược bao gồm hai phần:
Chỉ số RSI hoặc MFI tùy chỉnh: Chỉ số này tính toán giá trị PresentTrend dựa trên RSI hoặc MFI, tạo ra tín hiệu mua và bán dựa trên chéo và chéo của nó, cho thấy sự đảo ngược xu hướng tiềm năng.
Chỉ số ATR: Một chỉ số theo xu hướng phổ biến sử dụng Average True Range (ATR).
Chiến lược này đi vào một vị trí dài khi tất cả các tín hiệu mua từ cả hai chiến lược là đúng, và một vị trí ngắn khi tất cả các tín hiệu bán là đúng. Điều này đảm bảo giao dịch chỉ được đưa vào khi cả hai xu hướng ngắn hạn và dài hạn phù hợp, có khả năng làm tăng độ tin cậy của chiến lược.
Tổng thể, chiến lược PresentTrend là một hệ thống theo dõi xu hướng hiệu quả cao. Nó kết hợp các chỉ số xu hướng ngắn hạn và dài hạn để nhạy cảm trong khi cải thiện độ tin cậy tín hiệu. Với hướng điều chỉnh, tham số và logic bổ sung, chiến lược có thể thích nghi với môi trường thị trường và nhu cầu của nhà giao dịch khác nhau.
/*backtest start: 2023-08-21 00:00:00 end: 2023-09-20 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © PresentTrading //@version=5 // Define the strategy settings strategy('PresentTrend - Strategy [presentTrading]' , overlay=true, precision=3, default_qty_type=strategy.cash, commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000) // Define the input parameters priceSource = input.source(title='Source', defval=hlc3, group='PresentTrend') // The price source to use lengthParam = input.int(title='Length', defval=14, group='PresentTrend') // The length of the moving average multiplier = input.float(title='Multiplier', defval=1.618, step=0.1, group='PresentTrend') // The multiplier for the ATR indicatorChoice = input.bool(title='Whether to use RSI or MFI', defval=false, group='PresentTrend') // Whether to use RSI or MFI // Add a parameter for choosing Long or Short tradeDirection = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"]) // Calculate the ATR and the upT and downT values ATR = ta.sma(ta.tr, lengthParam) upperThreshold = low - ATR * multiplier lowerThreshold = high + ATR * multiplier // Initialize the PresentTrend indicator PresentTrend = 0.0 // Calculate the PresentTrend indicator PresentTrend := (indicatorChoice ? ta.rsi(priceSource, lengthParam) >= 50 : ta.mfi(hlc3, lengthParam) >= 50) ? upperThreshold < nz(PresentTrend[1]) ? nz(PresentTrend[1]) : upperThreshold : lowerThreshold > nz(PresentTrend[1]) ? nz(PresentTrend[1]) : lowerThreshold // Calculate the buy and sell signals longSignal = ta.crossover(PresentTrend, PresentTrend[2]) shortSignal = ta.crossunder(PresentTrend, PresentTrend[2]) // Calculate the number of bars since the last buy and sell signals barsSinceBuy = ta.barssince(longSignal) barsSinceSell = ta.barssince(shortSignal) previousBuy = ta.barssince(longSignal[1]) previousSell = ta.barssince(shortSignal[1]) // Initialize the direction variable trendDirection = 0 // Calculate the direction of the trend trendDirection := longSignal and previousBuy > barsSinceSell ? 1 : shortSignal and previousSell > barsSinceBuy ? -1 : trendDirection[1] // Check the trade direction parameter before entering a trade if (trendDirection == 1 and (tradeDirection == "Long" or tradeDirection == "Both")) strategy.entry("Buy", strategy.long) if (trendDirection == -1 and (tradeDirection == "Short" or tradeDirection == "Both")) strategy.entry("Sell", strategy.short) // Add a stop mechanism when the tradeDirection is one-sided if (tradeDirection == "Long" and trendDirection == -1) strategy.close("Buy") if (tradeDirection == "Short" and trendDirection == 1) strategy.close("Sell") // Visualization plot(PresentTrend, color=color.blue, title="PresentTrend") plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")