
متحرک قیمت کی حد اور آر ایس آئی سے دور تجارت کی حکمت عملی ایک جامع مقداری تجارتی نظام ہے جس میں قیمت کی حد کا پتہ لگانے ، آر ایس آئی اشارے سے دور سگنل اور منتقل اوسط رجحان تجزیہ کی تین بنیادی ٹیکنالوجیز کو یکجا کیا گیا ہے۔ یہ حکمت عملی خاص طور پر او کے ایکس سگنل روبوٹ پلیٹ فارم کے لئے ڈیزائن کی گئی ہے ، جس میں متحرک پوزیشن ایڈجسٹمنٹ اور کچھ پوزیشنوں کی صفائی کی اعلی درجے کی خصوصیات ہیں۔ حکمت عملی بنیادی طور پر قیمت کی حد کے اندر اندر توڑ پھوڑ کی نشاندہی کرتی ہے ، آر ایس آئی اشارے سے دور سگنل کے ساتھ ملتی ہے ، اور مارکیٹ کے رجحان کو فلٹر کرتی ہے ، جس سے متعدد مواقع کی تلاش ہوتی ہے ، اور اس طرح نیچے کی طرف رجحان میں عین مطابق ٹریڈنگ کے مواقع کو حاصل کیا جاسکتا ہے۔
اس حکمت عملی کی منفرد بات یہ ہے کہ اس کا متحرک پوزیشن مینجمنٹ سسٹم ہے جو موجودہ قیمتوں اور اوسط پوزیشن رکھنے والی قیمتوں کے مابین فرق کے مطابق تجارت کے پیمانے کو متحرک طور پر ایڈجسٹ کرسکتا ہے ، اس حکمت عملی کو پوزیشنوں میں اضافے کی اجازت دیتا ہے جب قیمتیں فائدہ مند سمت میں جاری رہتی ہیں ، جبکہ جب قیمتیں الٹنا شروع ہوجاتی ہیں تو پوزیشنوں کو آہستہ آہستہ کم کرنا ، جس سے سرمایہ کاری کی کارکردگی اور رسک ریٹرن کو بہتر بنایا جاسکتا ہے۔
یہ حکمت عملی تین بنیادی اجزاء پر مبنی ہے:
قیمت کی حد کا پتہ لگانےحکمت عملی: قیمتوں کی حدود کا تعین کرنے کے لئے ایک مخصوص مدت کے اندر اندر کم از کم اور زیادہ سے زیادہ قیمتوں کا حساب لگانا (باکس لمبائی پیرامیٹرز کی ترتیب) ۔ یہ قیمت کی سطح چارٹ پر اوپر اور نیچے کی سرحد لائنوں کے طور پر تیار کی جاتی ہیں ، جس سے تجارت کے لئے قیمتوں کا ایک مرئی حوالہ دیا جاتا ہے۔
RSI کی جانچ پڑتال سے دورحکمت عملی: مارکیٹ کی حرکیات کا حساب لگانے کے لئے نسبتا strong مضبوط اشارے ((RSI) کا استعمال کریں ، اور قیمتوں اور RSI کے مابین انحراف کا پتہ لگائیں۔ جب قیمت نئی کم ہوتی ہے اور RSI ایک اعلی کم ہوتی ہے تو ، بیئرنگ بائٹ تشکیل دیا جاتا ہے۔ جب قیمت نئی اونچائی بناتی ہے اور RSI ایک کم اونچائی بناتی ہے تو ، بیئرنگ بائٹ تشکیل دیا جاتا ہے۔ حکمت عملی دائیں اور بائیں بازو کے دورانیے (leftLookback اور rightLookback) کو ترتیب دے کر مقامی انتہائی اقدار کی درست شناخت کرتی ہے۔
حرکت پذیری اوسط رجحان تجزیہ: حکمت عملی اپنی مرضی کے مطابق ٹائم فریموں پر متعدد اقسام کی حرکت پذیری اوسط ((MA20 ، MA50 ، MA100 اور MA200) کا حساب لگاتی ہے ، اور ان اوسطوں کی ترتیب اور اوسط کے مقابلہ میں قیمت کی پوزیشن کا تجزیہ کرکے مارکیٹ کے رجحانات کا تعین کرتی ہے۔ حکمت عملی صرف نیچے کی طرف جانے والے رجحان میں متعدد سگنل کو متحرک کرتی ہے تاکہ یہ یقینی بنایا جاسکے کہ تجارت مجموعی طور پر مارکیٹ کے ماحول کے مطابق ہے۔
تجارت کی منطق کچھ اس طرح ہے:
کثیر جہتی تصدیق کا طریقہ کار: قیمتوں کے بیچوں میں توڑنے ، آر ایس آئی کو سگنل سے دور کرنے اور منتقل اوسط رجحانات کو فلٹر کرنے کے ساتھ مل کر ، ایک کثیر جہتی تجارتی تصدیق کا نظام پیدا کیا گیا ہے ، جس سے تجارتی سگنل کی وشوسنییتا اور درستگی میں نمایاں اضافہ ہوا ہے۔
متحرک پوزیشن مینجمنٹحکمت عملی: پوزیشنوں کے سائز کو متحرک طور پر مارکیٹ کے حالات اور قیمتوں میں تبدیلی کے مطابق ایڈجسٹ کریں ، بجائے اس کے کہ پوزیشنوں کی مقررہ تقسیم کی جائے۔ اس سے حکمت عملی کو فائدہ مند مارکیٹ کے ماحول میں منافع کے امکانات کو زیادہ سے زیادہ کرنے کی اجازت ملتی ہے ، جبکہ منفی حالات میں خطرے کو کنٹرول کیا جاسکتا ہے۔ فارمولہmath.max(math.min(math.pow((avgPrice - close)* 1000/5,1.1), 100), minEnterPercent)اس بات کو یقینی بنائیں کہ پوزیشن میں تبدیلی لچکدار اور محدود ہے۔
مارکیٹ کے حالات کے مطابق ڈھالنا: متحرک اوسط کے کراس اور صف بندی تجزیہ کے ذریعہ ، حکمت عملی مختلف مارکیٹ کے حالات کے مطابق ڈھال سکتی ہے ، اور صرف اس صورت میں تجارت کرتی ہے جب تکنیکی شکل مجموعی رجحانات کے مطابق ہو۔
داخلہ اور باہر نکلنے کے عین مطابق مقامات: اشارے سے دور ہونے کے علاوہ قیمت کے فاصلے میں توڑنے سے عین مطابق اندراج اور باہر نکلنے کے مقامات ملتے ہیں ، جعلی سگنل کا امکان کم ہوجاتا ہے۔ پیچھے مڑنے والے پیرامیٹرز ((leftLookback اور rightLookback) انتہائی حد تک پہچاننے کی درستگی کو بڑھا دیتے ہیں۔
بصری آراءحکمت عملی: چارٹ پر قیمتوں کی حدود ، متحرک اوسط اور تجارتی سگنل ٹیگ کا نقشہ ، تاجر کو سمجھنے اور تجارتی فیصلوں کی توثیق کرنے میں مدد کے لئے بصری آراء فراہم کرتا ہے۔
لچکدار پیرامیٹرز ترتیب: متعدد ایڈجسٹ پیرامیٹرز حکمت عملی کو مختلف مارکیٹوں اور تجارتی طرزوں کے مطابق ڈھالنے کی اجازت دیتے ہیں ، جیسے RSI کی لمبائی ، قیمتوں کے وقفے کی مدت اور الٹ پلٹ کی مدت۔
جعلی دراندازی کا خطرہ: قیمت کی حد سے تجاوز کرنا کبھی کبھی مختصر ہوسکتا ہے ، نہ کہ اصل رجحان کا آغاز۔ اس سے غیر ضروری تجارت اور نقصان ہوسکتا ہے۔ خطرے کو کم کرنے کا ایک طریقہ یہ ہے کہ تصدیق کے عوامل کو بڑھایا جائے ، جیسے کہ واپسی کا دورانیہ بڑھایا جائے یا حجم کی تصدیق میں اضافہ کیا جائے۔
زیادہ تجارت کا خطرہ: متحرک پوزیشن ایڈجسٹمنٹ سے زیادہ تجارت ہوسکتی ہے ، جس سے تجارت کی لاگت میں اضافہ ہوتا ہے۔ یہ تجویز کی جاتی ہے کہ کم سے کم ایڈجسٹمنٹ کی حد مقرر کی جائے (minEnterPercent اور minExitPercent) تاکہ قیمتوں میں معمولی اتار چڑھاؤ سے بار بار تجارت کا سبب نہ بنے۔
اوسط لائن ٹائم لاگ خطرہ: حرکت پذیر اوسط خاص طور پر تیزی سے بدلنے والی منڈیوں میں تاخیر کا شکار ہیں۔ اس خطرے کو استعمال کرنے والے اوسط کی قسم کو ایڈجسٹ کرکے کم کیا جاسکتا ہے (جیسے ایس ایم اے سے ای ایم اے میں تبدیل ہونا) یا اوسط کی مدت کو ایڈجسٹ کرنا۔
پیرامیٹر کی حساسیتحکمت عملی متعدد پیرامیٹرز پر منحصر ہوتی ہے ، جیسے کہ آر ایس آئی thresholds ، اوسط دورانیہ ، وغیرہ۔ ان پیرامیٹرز میں معمولی تبدیلیاں حکمت عملی کی کارکردگی کو نمایاں طور پر متاثر کرسکتی ہیں۔ مختلف پیرامیٹرز کے امتزاج کی جانچ پڑتال کرکے مستحکم ترتیبات کی تلاش کرنے اور مارکیٹ کے بدلتے حالات کے مطابق پیرامیٹرز کو باقاعدگی سے دوبارہ بہتر بنانے کی سفارش کی جاتی ہے۔
واحد مارکیٹ پر انحصار: حکمت عملی کچھ مارکیٹ کے حالات میں اچھی کارکردگی کا مظاہرہ کرسکتی ہے اور دوسری صورت میں خراب کارکردگی کا مظاہرہ کرسکتی ہے۔ حکمت عملی کو مختلف مارکیٹ کے ماحول اور مختلف ٹائم فریموں میں جانچنے کی تجویز ہے ، اور مارکیٹ کے حالات کے فلٹر کو شامل کرنے پر غور کریں تاکہ مارکیٹ کے غیر مناسب حالات میں تجارت کو روک دیا جاسکے۔
حجم کی تصدیق میں اضافہ کریں۔: موجودہ حکمت عملی صرف قیمت اور آر ایس آئی اشارے پر انحصار کرتے ہوئے تجارت کے فیصلے کرتی ہے۔ حجم تجزیہ کو شامل کرنے سے قیمت کے وقفے کے وقفے کی افادیت کی تصدیق کی جاسکتی ہے ، اور ناقص حجم کے جھوٹے وقفے سے بچا جاسکتا ہے۔ اس کا عملی مظاہرہ اس بات کی جانچ پڑتال سے کیا جاسکتا ہے کہ توڑنے کے وقت تجارت کی مقدار پچھلے کچھ ادوار کی اوسط تجارت سے زیادہ ہے۔
اتار چڑھاؤ کی شرح ایڈجسٹمنٹ کے لئے ایک طریقہ کار متعارف کرایا: اعلی اتار چڑھاؤ کے اوقات میں ، سگنل فلٹرز کو شامل کریں یا پوزیشن سائز فارمولے کو ایڈجسٹ کریں تاکہ جعلی سگنل کے خطرے کو کم کیا جاسکے اور زیادہ سے زیادہ رسک نالی کو کنٹرول کیا جاسکے۔ ATR ((Average True Range) اشارے کو اتار چڑھاؤ کی مقدار کے لئے استعمال کیا جاسکتا ہے اور تجارتی پیرامیٹرز کو متحرک طور پر ایڈجسٹ کیا جاسکتا ہے۔
شامل کر دیا گیا منافع کے مقابلے میں فلٹر: ہر تجارت سے پہلے ممکنہ رسک ریٹرن کا اندازہ لگائیں اور صرف اس تجارت کو انجام دیں جو کم سے کم منافع نقصان کی قیمتوں کا تعین کرے ، اس طرح مجموعی حکمت عملی کی متوقع آمدنی کو بہتر بنایا جاسکے۔ یہ اے ٹی آر پر مبنی متحرک اسٹاپ نقصان اور اسٹاپ کی سطح کی ترتیب کے ذریعہ حاصل کیا جاسکتا ہے۔
ملٹی ٹائم فریم تجزیہ متعارف کرایا: اعلی ٹائم فریم پر رجحان کی تصدیق شامل کرکے سگنل کی معیار کو بہتر بنایا جاسکتا ہے۔ مثال کے طور پر ، صرف اس وقت تجارت پر عملدرآمد کریں جب سورج کی کرنسی کا رجحان موجودہ ٹریڈنگ ٹائم فریم کے رجحان کے مطابق ہو۔
متحرک پوزیشننگ الگورتھم میں بہتری: موجودہ رسک فنکشن انتہائی صورتوں میں بہت زیادہ یا بہت کم ایڈجسٹمنٹ کا سبب بن سکتا ہے۔ زیادہ پیچیدہ الگورتھم پر غور کیا جاسکتا ہے ، جیسے مارکیٹ میں اتار چڑھاؤ اور موجودہ منافع بخش صورتحال پر مبنی خود سے موافقت کا فارمولا ، یا خطرے کے دروازے کی حد متعارف کرانا ، اس بات کو یقینی بنانا کہ انفرادی تجارت مجموعی طور پر پورٹ فولیو کو زیادہ متاثر نہیں کرتی ہے۔
خود کار طریقے سے پیرامیٹرز کی اصلاح شامل کریں: خود کار طریقے سے پیرامیٹرز کو بہتر بنانے کا عمل انجام دیں۔ مارکیٹ کے حالیہ اعداد و شمار کی بنیاد پر حکمت عملی کے پیرامیٹرز کو باقاعدگی سے ایڈجسٹ کریں تاکہ حکمت عملی کو بدلتے ہوئے مارکیٹ کے حالات کے مطابق بہتر بنایا جاسکے۔ یہ ریٹرننگ فریم ورک یا مشین لرننگ الگورتھم کے ذریعہ کیا جاسکتا ہے۔
متحرک قیمت کی حد اور آر ایس آئی سے دور تجارت کی حکمت عملی ایک اعلی درجے کا مقداری تجارتی نظام ہے جس میں متعدد تکنیکی تجزیہ کے طریقوں کو شامل کیا گیا ہے۔ قیمت کی حد ، آر ایس آئی سے دور اور منتقل اوسط رجحانات کے ساتھ مل کر ، یہ ایک مضبوط تجارتی فیصلہ سازی کا فریم ورک فراہم کرتا ہے۔ اس کا سب سے بڑا فائدہ متحرک پوزیشن مینجمنٹ سسٹم ہے جو مارکیٹ کے حالات کے مطابق خود بخود تجارت کے پیمانے کو ایڈجسٹ کرنے کے قابل ہے ، جبکہ خطرے پر قابو رکھتے ہوئے سرمایہ کاری کی کارکردگی کو بہتر بناتا ہے۔
اگرچہ اس حکمت عملی میں کچھ موروثی خطرات ہیں ، جیسے جعلی توڑ اور پیرامیٹرز کی حساسیت ، لیکن اس حکمت عملی کی استحکام اور موافقت کو مزید بہتر بنانے کے لئے تجویز کردہ اصلاحاتی سمتوں کے ذریعہ ، جیسے حجم کی تصدیق میں اضافہ ، اتار چڑھاؤ کی شرح میں ایڈجسٹمنٹ اور کثیر ٹائم فریم تجزیہ متعارف کرایا جاسکتا ہے۔ یہ ایک لچکدار اور طاقتور بنیادی فریم ورک فراہم کرتا ہے جو تاجروں کے لئے جو خودکار تجارتی پلیٹ فارم (جیسے او کے ایکس سگنل روبوٹ) پر اعلی درجے کی حکمت عملی کو تعینات کرنا چاہتے ہیں ، جو ذاتی تجارتی طرز اور مارکیٹ کی ترجیحات کے مطابق اپنی مرضی کے مطابق اور اس میں توسیع کرسکتے ہیں۔
/*backtest
start: 2025-05-07 00:00:00
end: 2025-05-14 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// Strategy: Box Range with RSI Divergence (Dynamic Adjustment - OKX Signal Format)
// © aws2333
//I'm chinese
strategy("Kaito Box with RSI Div(Dynamic Adjustment + MA + Long)", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=10)
rsiOverbought = 80
rsiOversold = 13
boxLength = input.int(3, title="Box Length", minval=1)
rsiLength = input.int(2, title="RSI Length", minval=1)
divergenceLookback = input.int(2, title="Divergence Lookback Period", minval=1)
leftLookback = input.int(2, title="Left Lookback", minval=1)
rightLookback = input.int(2, title="Right Lookback", minval=1)
var float avgPrice = na
//var float position_size = 0
signalToken = input.string("**********", "Signal Token")
enterOrderType = input.string("limit", "Order Type", options=["market", "limit"])
enterOrderPriceOffset = input.float(0.05, "Order Price Offset", minval=0, maxval=100, step=0.01)
enterInvestmentType = input.string("percentage_investment", "Investment Type", options=["margin", "contract", "percentage_balance", "percentage_investment"])
exitOrderType = input.string("limit", "Order Type", options=["market", "limit"])
exitOrderPriceOffset = input.float(0.05, "Order Price Offset", minval=0, maxval=100, step=0.01)
exitInvestmentType = input.string("percentage_position", "Investment Type", options=["percentage_position"])
maxLag = input.float(30, "maxLag")
minEnterPercent = 1.3
minExitPercent = 0.09
highestHigh = ta.highest(high, boxLength)
lowestLow = ta.lowest(low, boxLength)
plot(highestHigh, title="Upper Box", color=color.new(color.green, 0), linewidth=1, style=plot.style_line)
plot(lowestLow, title="Lower Box", color=color.new(color.red, 0), linewidth=1, style=plot.style_line)
rsi = ta.rsi(low, rsiLength)
isLowestLeft = low < ta.lowest(low[1], leftLookback)
isLowestRight = low <= ta.lowest(low, rightLookback)
isLowestClose = isLowestLeft and isLowestRight
isHighestLeft = low > ta.highest(low[1], leftLookback)
isHighestRight = low >= ta.highest(low, rightLookback)
isHighestClose = isHighestLeft and isHighestRight
lowestClose = ta.lowest(low, divergenceLookback)
lowestRsi = ta.lowest(rsi, divergenceLookback)
highestClose = ta.highest(low, divergenceLookback)
highestRsi = ta.highest(rsi, divergenceLookback)
lowestClosePrev = ta.lowest(low[1], leftLookback)
lowestRsiPrev = ta.lowest(rsi[1], leftLookback)
highestClosePrev = ta.highest(low[1], leftLookback)
highestRsiPrev = ta.highest(rsi[1], leftLookback)
bullishDivergence = isLowestClose and (low < lowestClosePrev) and (rsi > lowestRsiPrev) and (rsi < rsiOversold)
bearishDivergence = isHighestClose and (low > highestClosePrev) and (rsi < highestRsiPrev) and (rsi > rsiOverbought)
ma(source, length, type) =>
type == "SMA" ? ta.sma(source, length) :type == "EMA" ? ta.ema(source, length) :type == "SMMA (RMA)" ? ta.rma(source, length) :type == "WMA" ? ta.wma(source, length) :type == "VWMA" ? ta.vwma(source, length) :na
custom_timeframe = input.timeframe("3", "Custom time period (leave blank for current period)")
ma_type = input.string("SMA", "Moving average type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma20_period = input.int(20, "MA20 ", minval=1)
ma50_period = input.int(50, "MA50 ", minval=1)
ma100_period = input.int(100, "MA100 ", minval=1)
ma200_period = input.int(200, "MA200 ", minval=1)
source_close = request.security(syminfo.tickerid, custom_timeframe, close)
ma20 = ma(source_close, ma20_period, ma_type)
ma50 = ma(source_close, ma50_period, ma_type)
ma100 = ma(source_close, ma100_period, ma_type)
ma200 = ma(source_close, ma200_period, ma_type)
up_signal_1 = ma20 > ma200
up_signal_2 = ma50 > ma200
up_signal_3 = ma100 > ma200
up_signal_4 = (high > ma20 and high > ma50 and high > ma100 and high > ma200)
up_trend = (up_signal_1 and up_signal_2 and up_signal_3 and (source_close > ma200)) or up_signal_4
down_signal_1 = ma20 < ma200
down_signal_2 = ma50 < ma200
down_signal_3 = ma100 < ma200
down_signal_4 = (low < ma20 and low < ma50 and low < ma100 and low < ma200)
down_trend = (down_signal_1 and down_signal_2 and down_signal_3 and (source_close < ma200)) or down_signal_4
plot(ma20, color=color.yellow, title="MA20")
plot(ma50, color=color.orange, title="MA50")
plot(ma100, color=color.red, title="MA100")
plot(ma200, color=color.maroon, title="MA200")
var float longAddPercent = na
var float shortAddPercent = na
roundToFourDecimals(value) => math.round(value * 10000) / 10000
if not na(avgPrice)
if close < avgPrice
longAddPercent := roundToFourDecimals(math.max(math.min(math.pow((avgPrice - close)* 1000/5,1.1) , 100), minEnterPercent))
if close > avgPrice
longAddPercent := 1
if close == avgPrice
longAddPercent := 1
if not na(avgPrice)
if close < avgPrice
shortAddPercent := 0.01
if close > avgPrice
shortAddPercent := roundToFourDecimals(math.max(math.min(math.pow((close - avgPrice)*1000,1.1), 100), minExitPercent))
if close == avgPrice
longAddPercent := 1
longSignal = (close <= lowestLow) and bullishDivergence
shortSignal = (close >= highestHigh) and bearishDivergence
plotLongSignal = down_trend and longSignal and close < avgPrice
plotShortSignal = up_trend and shortSignal and close > avgPrice
if plotLongSignal
label.new(bar_index, avgPrice, "average price: " + str.tostring(avgPrice, "#.####"), style=label.style_label_up, color=color.green, textcolor=color.white )
if plotShortSignal
label.new(bar_index, avgPrice,"average price: " + str.tostring(avgPrice, "#.####"), style=label.style_label_down, color=color.red, textcolor=color.white)
if plotLongSignal
label.new(
bar_index,
close,
"LONG :" + str.tostring(longAddPercent, "#.####") + "%, Close: " + str.tostring(close, "#.####"),
style=label.style_label_up,
color=color.new(color.green, 80),
textcolor=color.white
)
if plotShortSignal
label.new(
bar_index,
close,
"EXIT LONG :" + str.tostring(shortAddPercent, "#.####") + "%, Close: " + str.tostring(close, "#.####"),
style=label.style_label_down,
color=color.new(color.red, 80),
textcolor=color.white
)
if longSignal
avgPrice := na(avgPrice) ? close : (avgPrice + close) / 2
if down_trend and longSignal
strategy.entry("Long",strategy.long,qty=longAddPercent )
var float close_size = na
if up_trend and shortSignal
if strategy.position_size > 0
close_size := strategy.position_size * (shortAddPercent/100)
strategy.order("Partial Close Long", strategy.short, close_size)