
यह एक वॉल्यूम-वेटेड मूविंग एवरेज (VWMA) और इंडेक्स मूविंग एवरेज (EMA) पर आधारित ट्रेंड ट्रैकिंग रणनीति है, जिसमें मूल्य कोण विश्लेषण और गतिशील ट्रैकिंग स्टॉप-लॉस तंत्र शामिल हैं। यह रणनीति मुख्य रूप से VWMA और फास्ट मूविंग एवरेज के क्रॉसिंग की निगरानी करके प्रवेश का समय निर्धारित करती है, जबकि मूल्य आंदोलन की कोण स्थितियों के साथ, और प्रतिशत ट्रैकिंग स्टॉप-लॉस का उपयोग करके जोखिम का प्रबंधन करती है।
रणनीति का मूल तर्क निम्नलिखित प्रमुख घटकों पर आधारित है:
यह एक अच्छी तरह से संरचित प्रवृत्ति ट्रैकिंग रणनीति है जो कोण विश्लेषण और कई चलती औसत के संयोजन के माध्यम से प्रमुख रुझानों में बेहतर प्रदर्शन करने में सक्षम है। हालांकि कुछ पिछड़ेपन और पैरामीटर संवेदनशीलता की समस्याएं हैं, लेकिन अनुशंसित अनुकूलन दिशाओं के माध्यम से रणनीति को बढ़ाने के लिए अभी भी जगह है। यह विशेष रूप से लंबी समय अवधि के प्रवृत्ति व्यापार में लागू करने के लिए उपयुक्त है।
/*backtest
start: 2024-02-18 00:00:00
end: 2024-10-16 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("PVSRA Trailing Strategy with Angle Condition (40-50 degrees)", overlay=true)
// === INPUTS ===
priceData = input.source(close, title="Price Data")
maLength = input.int(25, title="Moving Average Length", minval=2)
useBias = input.bool(false, title="Long/Short just above/below 200 EMA")
useTrailing = input.bool(true, title="Use Trailing Stop")
trailPerc = input.float(1.0, title="Trailing Stop Percentage", minval=0.1)
anglePeriod = input.int(14, title="Period for Angle Calculation", minval=1)
// === CÁLCULOS ===
maValue = ta.vwma(priceData, maLength)
maLong = ta.ema(high, 50)
maShort = ta.ema(low, 50)
maFast = ta.vwma(close, 8)
bias = ta.ema(close, 200)
longBias = useBias ? close > bias : true
shortBias = useBias ? close < bias : true
// === CÁLCULO DO ÂNGULO DA MÉDIA MÓVEL DE 50 ===
ma50 = ta.ema(close, 50)
angle = math.atan((ma50 - ma50[anglePeriod]) / anglePeriod) * (180 / math.pi) // Converte radianos para graus
// === CONDIÇÃO DE ÂNGULO ===
validAngleL = angle >= 45
validAngleS = angle <= 45
// === PLOTS ===
plot(maValue, color=color.orange, title="Moving Average")
plot(maFast, color=color.green, title="Fast MA")
plot(ma50, color=color.blue, title="50 EMA")
plotshape(series=(strategy.position_size > 0) ? maValue : na,
color=color.red, style=shape.circle, location=location.absolute,
title="Long Stop")
plotshape(series=(strategy.position_size < 0) ? maValue : na,
color=color.red, style=shape.cross, location=location.absolute,
title="Short Stop")
// === CONDIÇÕES DE ENTRADA ===
enterLong = close > maValue and ta.crossover(maFast, maValue) and close > maLong and longBias and validAngleL
enterShort = close < maValue and ta.crossunder(maFast, maValue) and close < maShort and shortBias and validAngleS
// === CONDIÇÕES DE SAÍDA ===
exitLong = ta.crossunder(maFast, maValue) and strategy.position_size > 0
exitShort = ta.crossover(maFast, maValue) and strategy.position_size < 0
// === EXECUÇÃO DA ESTRATÉGIA ===
if (enterLong)
strategy.entry("EL", strategy.long)
if (enterShort)
strategy.entry("ES", strategy.short)
if (exitLong or exitShort)
strategy.close_all()
// === TRAILING STOP ===
if (useTrailing and strategy.position_size > 0)
trailPrice = close * (1 - trailPerc / 100)
strategy.exit("Trailing Long", from_entry="EL", stop=trailPrice)
if (useTrailing and strategy.position_size < 0)
trailPrice = close * (1 + trailPerc / 100)
strategy.exit("Trailing Short", from_entry="ES", stop=trailPrice)