
یہ حکمت عملی ایک متحرک تجارتی نظام ہے جس میں بے ترتیب نسبتا weak مضبوط اشارے ((SRSI) اور متحرک اوسط رجحان / پھیلاؤ اشارے ((MACD) کا امتزاج ہے۔ اس نے اے ٹی آر اشارے کے ذریعہ اسٹاپ نقصان اور اسٹاپ پوائنٹس کو متحرک طور پر ایڈجسٹ کیا ہے ، جس سے خطرے کا ذہین انتظام ممکن ہے۔ اس حکمت عملی کا بنیادی مقصد متعدد تکنیکی اشارے کی کراس تصدیق کے ذریعہ تجارتی سگنل پیدا کرنا ہے ، جبکہ مارکیٹ میں اتار چڑھاؤ کے ساتھ پوزیشن مینجمنٹ کرنا ہے۔
اس حکمت عملی کا کام مندرجہ ذیل بنیادی طریقہ کار پر مبنی ہے:
اس حکمت عملی نے ایس آر ایس آئی اور ایم اے سی ڈی کے فوائد کو ملا کر ایک مضبوط تجارتی نظام تشکیل دیا ہے۔ متحرک رسک مینجمنٹ میکانزم نے اسے اچھی طرح سے اپنانے کی اجازت دی ہے ، لیکن اس کے باوجود تاجر کو حقیقی مارکیٹ کی صورتحال کے مطابق پیرامیٹرز کو بہتر بنانے کی ضرورت ہے۔ اس حکمت عملی کے کامیاب آپریشن کے لئے مارکیٹ کی گہری تفہیم کی ضرورت ہوتی ہے ، اور مناسب پوزیشن مینجمنٹ کے لئے انفرادی خطرے کی برداشت کے ساتھ مل کر۔
/*backtest
start: 2024-09-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy(title="SRSI + MACD Strategy with Dynamic Stop-Loss and Take-Profit", shorttitle="SRSI + MACD Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// User Inputs
smoothK = input.int(3, "K", minval=1)
smoothD = input.int(3, "D", minval=1)
lengthRSI = input.int(16, "RSI Length", minval=1)
lengthStoch = input.int(16, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
enableStopLoss = input.bool(true, "Enable Stop-Loss")
enableTakeProfit = input.bool(true, "Enable Take-Profit")
riskFactor = input.float(2.5, "Risk Factor", minval=0.1, step=1)
// Calculate K and D lines
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = ta.sma(k, smoothD)
differenceKD = k - d
// Calculate MACD and normalization
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
lowestK = ta.lowest(k, lengthRSI)
highestK = ta.highest(k, lengthRSI)
normalizedMacd = (macdLine - ta.lowest(macdLine, lengthRSI)) / (ta.highest(macdLine, lengthRSI) - ta.lowest(macdLine, lengthRSI)) * (highestK - lowestK) + lowestK
differenceKMacd = k - normalizedMacd
// Sum both differences for a unique display
differenceTotal = (differenceKD + differenceKMacd) / 2
// Check if MACD is falling or rising
isMacdFalling = ta.falling(macdLine, 1)
isMacdRising = ta.rising(macdLine, 1)
// Check if K is falling or rising
isKFalling = ta.falling(k, 1)
isKdRising = ta.rising(k, 1)
// Calculate ATR and dynamic levels
atrValue = ta.atr(14)
stopLossDistance = atrValue * riskFactor
takeProfitDistance = atrValue * riskFactor
// Variables for stop-loss and take-profit levels
var float longStopPrice = na
var float longTakeProfitPrice = na
// Buy and sell conditions with differenceKD added
buyCondition = ((differenceTotal > 0 or differenceKD > 0) and (isKdRising or isMacdRising) and k < 20 )
sellCondition = ((differenceTotal <= 0 or differenceKD <= 0) and (isKFalling or isMacdFalling) and k > 80)
// Execute strategy orders with conditional stop-loss and take-profit
if buyCondition and strategy.position_size == 0
strategy.entry("Buy", strategy.long)
if strategy.position_size > 0
longStopPrice := strategy.position_avg_price - stopLossDistance
longTakeProfitPrice := strategy.position_avg_price + takeProfitDistance
if enableStopLoss or enableTakeProfit
strategy.exit("Sell/Exit", "Buy", stop=(enableStopLoss ? longStopPrice : na), limit=(enableTakeProfit ? longTakeProfitPrice : na))
if sellCondition
strategy.close("Buy")
// Hide lines when position is closed
stopLossToPlot = strategy.position_size > 0 ? longStopPrice : na
takeProfitToPlot = strategy.position_size > 0 ? longTakeProfitPrice : na
// Plot stop-loss and take-profit lines only when long positions are active
plot(enableStopLoss ? stopLossToPlot : na, title="Stop-Loss", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true)
plot(enableTakeProfit ? takeProfitToPlot : na, title="Take-Profit", color=color.yellow, linewidth=1, style=plot.style_linebr, offset=0, force_overlay=true)
// Plot the MACD and candles
plot(normalizedMacd, "Normalized MACD", color=color.new(color.purple, 0), linewidth=1, display=display.all)
h0 = hline(80, "Upper Band", color=#787B86)
hline(50, "Middle Band", color=color.new(#787B86, 50))
h1 = hline(20, "Lower Band", color=#787B86)
fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")
// New candle based on the sum of differences
plotcandle(open=0, high=differenceTotal, low=0, close=differenceTotal, color=(differenceTotal > 0 ? color.new(color.green, 60) : color.new(color.red, 60)), title="K-D + MACD Candles")