
یہ حکمت عملی ایک ملٹی لیول انڈیکیٹر اوورلے ٹریڈنگ سسٹم ہے جس کی بنیاد رشتہ دار طاقت انڈیکس (RSI) پر ہے۔ حکمت عملی ایک مخصوص ٹریڈنگ ٹائم ونڈو کے اندر کام کرتی ہے، RSI اشارے کے زیادہ خریدے گئے اور زیادہ فروخت ہونے والے سگنلز کے ذریعے تجارت کے مواقع کی نشاندہی کرتی ہے، اور اسے ایک متحرک پوزیشن ایڈجسٹمنٹ میکانزم کے ساتھ جوڑتی ہے تاکہ بیچوں میں پوزیشنیں بنا کر مجموعی منافع کو بہتر بنایا جا سکے جب مارکیٹ مخالف سمت میں چلتی ہے۔ حکمت عملی سٹاپ پرافٹ مینجمنٹ کے لیے اوسط اندراج کی قیمت کی بنیاد پر ہدف منافع کا طریقہ استعمال کرتی ہے۔
حکمت عملی بنیادی طور پر درج ذیل بنیادی اجزاء پر مبنی ہے:
یہ حکمت عملی RSI اشارے کو بیچ کھولنے کے طریقہ کار کے ساتھ ملا کر ایک نسبتاً مکمل تجارتی نظام تشکیل دیتی ہے۔ حکمت عملی کا بنیادی فائدہ اس کے ملٹی لیول سگنل فلٹرنگ میکانزم اور لچکدار پوزیشن مینجمنٹ کے طریقہ کار میں مضمر ہے، لیکن اس کے ساتھ ساتھ، رجحان مارکیٹ کے خطرات اور پیرامیٹر کی اصلاح جیسے مسائل پر بھی توجہ دینا ضروری ہے۔ حکمت عملی کی مجموعی کارکردگی کو اب بھی ٹرینڈ فلٹرز شامل کرکے، سٹاپ لوس میکانزم کو بہتر بنانے، اور دیگر بہتریوں سے بہتر بنایا جا سکتا ہے۔
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("TonyM RSI", overlay=true)
// Input Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
startHour = input.int(2, "Start Hour", minval=0, maxval=23, group="Trading Window")
endHour = input.int(4, "End Hour", minval=0, maxval=23, group="Trading Window")
// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// Time Filter
inTradingWindow = (hour >= startHour and hour < endHour)
// Strategy Settings
buyLevel = 30
sellLevel = 70
scaleDistance = 1.0 // Distance in points to add to the position
takeProfitPoints = 1.5 // Profit target from average price
initialQty = 1 // Initial trade size
scalingQty = 1 // Additional trade size for scaling
// Trade Logic
if inTradingWindow
// Entry Logic
if rsi <= buyLevel and strategy.position_size == 0
strategy.entry("Buy", strategy.long, qty=initialQty)
if rsi >= sellLevel and strategy.position_size == 0
strategy.entry("Sell", strategy.short, qty=initialQty)
// Scaling Logic
if strategy.position_size > 0 and close <= strategy.position_avg_price - scaleDistance
strategy.entry("Scale Buy", strategy.long, qty=scalingQty)
if strategy.position_size < 0 and close >= strategy.position_avg_price + scaleDistance
strategy.entry("Scale Sell", strategy.short, qty=scalingQty)
// Exit Logic (based on average price)
if strategy.position_size > 0
strategy.exit("Take Profit Long", "Buy", limit=strategy.position_avg_price + takeProfitPoints)
if strategy.position_size < 0
strategy.exit("Take Profit Short", "Sell", limit=strategy.position_avg_price - takeProfitPoints)
// Plot RSI
plot(rsi, "RSI", color=color.blue, linewidth=1)
rsiUpperBand = hline(70, "RSI Upper Band", color=color.red)
rsiLowerBand = hline(30, "RSI Lower Band", color=color.green)
fill(rsiUpperBand, rsiLowerBand, color=color.new(color.gray, 90))