
یہ ایک حجم وزنی منتقل اوسط ((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)