ڈائنامک پرائس رینج اور RSI ڈائیورجینس ٹریڈنگ حکمت عملی: ملٹی پیریڈ موونگ ایوریج ٹرینڈ فلٹرنگ اور ڈائنامک پوزیشن مینجمنٹ آپٹیمائزیشن

RSI MA DIVERGENCE DYNAMIC POSITION SIZING TREND FILTERING BOX RANGE
تخلیق کی تاریخ: 2025-05-15 16:07:47 آخر میں ترمیم کریں: 2025-05-15 16:07:47
کاپی: 3 کلکس کی تعداد: 306
2
پر توجہ دیں
319
پیروکار

ڈائنامک پرائس رینج اور RSI ڈائیورجینس ٹریڈنگ حکمت عملی: ملٹی پیریڈ موونگ ایوریج ٹرینڈ فلٹرنگ اور ڈائنامک پوزیشن مینجمنٹ آپٹیمائزیشن ڈائنامک پرائس رینج اور RSI ڈائیورجینس ٹریڈنگ حکمت عملی: ملٹی پیریڈ موونگ ایوریج ٹرینڈ فلٹرنگ اور ڈائنامک پوزیشن مینجمنٹ آپٹیمائزیشن

جائزہ

متحرک قیمت کی حد اور آر ایس آئی سے دور تجارت کی حکمت عملی ایک جامع مقداری تجارتی نظام ہے جس میں قیمت کی حد کا پتہ لگانے ، آر ایس آئی اشارے سے دور سگنل اور منتقل اوسط رجحان تجزیہ کی تین بنیادی ٹیکنالوجیز کو یکجا کیا گیا ہے۔ یہ حکمت عملی خاص طور پر او کے ایکس سگنل روبوٹ پلیٹ فارم کے لئے ڈیزائن کی گئی ہے ، جس میں متحرک پوزیشن ایڈجسٹمنٹ اور کچھ پوزیشنوں کی صفائی کی اعلی درجے کی خصوصیات ہیں۔ حکمت عملی بنیادی طور پر قیمت کی حد کے اندر اندر توڑ پھوڑ کی نشاندہی کرتی ہے ، آر ایس آئی اشارے سے دور سگنل کے ساتھ ملتی ہے ، اور مارکیٹ کے رجحان کو فلٹر کرتی ہے ، جس سے متعدد مواقع کی تلاش ہوتی ہے ، اور اس طرح نیچے کی طرف رجحان میں عین مطابق ٹریڈنگ کے مواقع کو حاصل کیا جاسکتا ہے۔

اس حکمت عملی کی منفرد بات یہ ہے کہ اس کا متحرک پوزیشن مینجمنٹ سسٹم ہے جو موجودہ قیمتوں اور اوسط پوزیشن رکھنے والی قیمتوں کے مابین فرق کے مطابق تجارت کے پیمانے کو متحرک طور پر ایڈجسٹ کرسکتا ہے ، اس حکمت عملی کو پوزیشنوں میں اضافے کی اجازت دیتا ہے جب قیمتیں فائدہ مند سمت میں جاری رہتی ہیں ، جبکہ جب قیمتیں الٹنا شروع ہوجاتی ہیں تو پوزیشنوں کو آہستہ آہستہ کم کرنا ، جس سے سرمایہ کاری کی کارکردگی اور رسک ریٹرن کو بہتر بنایا جاسکتا ہے۔

حکمت عملی کا اصول

یہ حکمت عملی تین بنیادی اجزاء پر مبنی ہے:

  1. قیمت کی حد کا پتہ لگانےحکمت عملی: قیمتوں کی حدود کا تعین کرنے کے لئے ایک مخصوص مدت کے اندر اندر کم از کم اور زیادہ سے زیادہ قیمتوں کا حساب لگانا (باکس لمبائی پیرامیٹرز کی ترتیب) ۔ یہ قیمت کی سطح چارٹ پر اوپر اور نیچے کی سرحد لائنوں کے طور پر تیار کی جاتی ہیں ، جس سے تجارت کے لئے قیمتوں کا ایک مرئی حوالہ دیا جاتا ہے۔

  2. RSI کی جانچ پڑتال سے دورحکمت عملی: مارکیٹ کی حرکیات کا حساب لگانے کے لئے نسبتا strong مضبوط اشارے ((RSI) کا استعمال کریں ، اور قیمتوں اور RSI کے مابین انحراف کا پتہ لگائیں۔ جب قیمت نئی کم ہوتی ہے اور RSI ایک اعلی کم ہوتی ہے تو ، بیئرنگ بائٹ تشکیل دیا جاتا ہے۔ جب قیمت نئی اونچائی بناتی ہے اور RSI ایک کم اونچائی بناتی ہے تو ، بیئرنگ بائٹ تشکیل دیا جاتا ہے۔ حکمت عملی دائیں اور بائیں بازو کے دورانیے (leftLookback اور rightLookback) کو ترتیب دے کر مقامی انتہائی اقدار کی درست شناخت کرتی ہے۔

  3. حرکت پذیری اوسط رجحان تجزیہ: حکمت عملی اپنی مرضی کے مطابق ٹائم فریموں پر متعدد اقسام کی حرکت پذیری اوسط ((MA20 ، MA50 ، MA100 اور MA200) کا حساب لگاتی ہے ، اور ان اوسطوں کی ترتیب اور اوسط کے مقابلہ میں قیمت کی پوزیشن کا تجزیہ کرکے مارکیٹ کے رجحانات کا تعین کرتی ہے۔ حکمت عملی صرف نیچے کی طرف جانے والے رجحان میں متعدد سگنل کو متحرک کرتی ہے تاکہ یہ یقینی بنایا جاسکے کہ تجارت مجموعی طور پر مارکیٹ کے ماحول کے مطابق ہے۔

تجارت کی منطق کچھ اس طرح ہے:

  • زیادہ سگنل: جب قیمت نیچے کی حد کو توڑ دیتی ہے اور آر ایس آئی کی طرف سے پائی جانے والی موڑ کی تشخیص ہوتی ہے تو اس کا آغاز ہوتا ہے ، لیکن اس بات کو یقینی بناتا ہے کہ یہ صرف نیچے کی طرف جانے والے رجحان کی شرائط پر عملدرآمد کرے گا۔ نظام متحرک طور پر پوزیشن کے سائز کو موجودہ قیمت اور اوسط پوزیشن رکھنے والی قیمت کے فرق کے مطابق ایڈجسٹ کرتا ہے۔
  • کم کرنے کا اشارہ: جب قیمت اوپری بارڈر کو توڑ دیتی ہے اور آر ایس آئی کی کمی کو دور کرنے کا پتہ چلتا ہے تو اس کا آغاز ہوتا ہے ، لیکن اس بات کو یقینی بناتا ہے کہ صرف اوپر کی طرف جانے والے رجحان کی شرائط پر عملدرآمد ہو۔ سسٹم قیمت کے مقابلے میں اوسط پوزیشن کی قیمت میں تبدیلی کے مطابق کچھ پوزیشنوں کو بند کردے گا۔

اسٹریٹجک فوائد

  1. کثیر جہتی تصدیق کا طریقہ کار: قیمتوں کے بیچوں میں توڑنے ، آر ایس آئی کو سگنل سے دور کرنے اور منتقل اوسط رجحانات کو فلٹر کرنے کے ساتھ مل کر ، ایک کثیر جہتی تجارتی تصدیق کا نظام پیدا کیا گیا ہے ، جس سے تجارتی سگنل کی وشوسنییتا اور درستگی میں نمایاں اضافہ ہوا ہے۔

  2. متحرک پوزیشن مینجمنٹحکمت عملی: پوزیشنوں کے سائز کو متحرک طور پر مارکیٹ کے حالات اور قیمتوں میں تبدیلی کے مطابق ایڈجسٹ کریں ، بجائے اس کے کہ پوزیشنوں کی مقررہ تقسیم کی جائے۔ اس سے حکمت عملی کو فائدہ مند مارکیٹ کے ماحول میں منافع کے امکانات کو زیادہ سے زیادہ کرنے کی اجازت ملتی ہے ، جبکہ منفی حالات میں خطرے کو کنٹرول کیا جاسکتا ہے۔ فارمولہmath.max(math.min(math.pow((avgPrice - close)* 1000/5,1.1), 100), minEnterPercent)اس بات کو یقینی بنائیں کہ پوزیشن میں تبدیلی لچکدار اور محدود ہے۔

  3. مارکیٹ کے حالات کے مطابق ڈھالنا: متحرک اوسط کے کراس اور صف بندی تجزیہ کے ذریعہ ، حکمت عملی مختلف مارکیٹ کے حالات کے مطابق ڈھال سکتی ہے ، اور صرف اس صورت میں تجارت کرتی ہے جب تکنیکی شکل مجموعی رجحانات کے مطابق ہو۔

  4. داخلہ اور باہر نکلنے کے عین مطابق مقامات: اشارے سے دور ہونے کے علاوہ قیمت کے فاصلے میں توڑنے سے عین مطابق اندراج اور باہر نکلنے کے مقامات ملتے ہیں ، جعلی سگنل کا امکان کم ہوجاتا ہے۔ پیچھے مڑنے والے پیرامیٹرز ((leftLookback اور rightLookback) انتہائی حد تک پہچاننے کی درستگی کو بڑھا دیتے ہیں۔

  5. بصری آراءحکمت عملی: چارٹ پر قیمتوں کی حدود ، متحرک اوسط اور تجارتی سگنل ٹیگ کا نقشہ ، تاجر کو سمجھنے اور تجارتی فیصلوں کی توثیق کرنے میں مدد کے لئے بصری آراء فراہم کرتا ہے۔

  6. لچکدار پیرامیٹرز ترتیب: متعدد ایڈجسٹ پیرامیٹرز حکمت عملی کو مختلف مارکیٹوں اور تجارتی طرزوں کے مطابق ڈھالنے کی اجازت دیتے ہیں ، جیسے RSI کی لمبائی ، قیمتوں کے وقفے کی مدت اور الٹ پلٹ کی مدت۔

اسٹریٹجک رسک

  1. جعلی دراندازی کا خطرہ: قیمت کی حد سے تجاوز کرنا کبھی کبھی مختصر ہوسکتا ہے ، نہ کہ اصل رجحان کا آغاز۔ اس سے غیر ضروری تجارت اور نقصان ہوسکتا ہے۔ خطرے کو کم کرنے کا ایک طریقہ یہ ہے کہ تصدیق کے عوامل کو بڑھایا جائے ، جیسے کہ واپسی کا دورانیہ بڑھایا جائے یا حجم کی تصدیق میں اضافہ کیا جائے۔

  2. زیادہ تجارت کا خطرہ: متحرک پوزیشن ایڈجسٹمنٹ سے زیادہ تجارت ہوسکتی ہے ، جس سے تجارت کی لاگت میں اضافہ ہوتا ہے۔ یہ تجویز کی جاتی ہے کہ کم سے کم ایڈجسٹمنٹ کی حد مقرر کی جائے (minEnterPercent اور minExitPercent) تاکہ قیمتوں میں معمولی اتار چڑھاؤ سے بار بار تجارت کا سبب نہ بنے۔

  3. اوسط لائن ٹائم لاگ خطرہ: حرکت پذیر اوسط خاص طور پر تیزی سے بدلنے والی منڈیوں میں تاخیر کا شکار ہیں۔ اس خطرے کو استعمال کرنے والے اوسط کی قسم کو ایڈجسٹ کرکے کم کیا جاسکتا ہے (جیسے ایس ایم اے سے ای ایم اے میں تبدیل ہونا) یا اوسط کی مدت کو ایڈجسٹ کرنا۔

  4. پیرامیٹر کی حساسیتحکمت عملی متعدد پیرامیٹرز پر منحصر ہوتی ہے ، جیسے کہ آر ایس آئی thresholds ، اوسط دورانیہ ، وغیرہ۔ ان پیرامیٹرز میں معمولی تبدیلیاں حکمت عملی کی کارکردگی کو نمایاں طور پر متاثر کرسکتی ہیں۔ مختلف پیرامیٹرز کے امتزاج کی جانچ پڑتال کرکے مستحکم ترتیبات کی تلاش کرنے اور مارکیٹ کے بدلتے حالات کے مطابق پیرامیٹرز کو باقاعدگی سے دوبارہ بہتر بنانے کی سفارش کی جاتی ہے۔

  5. واحد مارکیٹ پر انحصار: حکمت عملی کچھ مارکیٹ کے حالات میں اچھی کارکردگی کا مظاہرہ کرسکتی ہے اور دوسری صورت میں خراب کارکردگی کا مظاہرہ کرسکتی ہے۔ حکمت عملی کو مختلف مارکیٹ کے ماحول اور مختلف ٹائم فریموں میں جانچنے کی تجویز ہے ، اور مارکیٹ کے حالات کے فلٹر کو شامل کرنے پر غور کریں تاکہ مارکیٹ کے غیر مناسب حالات میں تجارت کو روک دیا جاسکے۔

اصلاح کی سمت

  1. حجم کی تصدیق میں اضافہ کریں۔: موجودہ حکمت عملی صرف قیمت اور آر ایس آئی اشارے پر انحصار کرتے ہوئے تجارت کے فیصلے کرتی ہے۔ حجم تجزیہ کو شامل کرنے سے قیمت کے وقفے کے وقفے کی افادیت کی تصدیق کی جاسکتی ہے ، اور ناقص حجم کے جھوٹے وقفے سے بچا جاسکتا ہے۔ اس کا عملی مظاہرہ اس بات کی جانچ پڑتال سے کیا جاسکتا ہے کہ توڑنے کے وقت تجارت کی مقدار پچھلے کچھ ادوار کی اوسط تجارت سے زیادہ ہے۔

  2. اتار چڑھاؤ کی شرح ایڈجسٹمنٹ کے لئے ایک طریقہ کار متعارف کرایا: اعلی اتار چڑھاؤ کے اوقات میں ، سگنل فلٹرز کو شامل کریں یا پوزیشن سائز فارمولے کو ایڈجسٹ کریں تاکہ جعلی سگنل کے خطرے کو کم کیا جاسکے اور زیادہ سے زیادہ رسک نالی کو کنٹرول کیا جاسکے۔ ATR ((Average True Range) اشارے کو اتار چڑھاؤ کی مقدار کے لئے استعمال کیا جاسکتا ہے اور تجارتی پیرامیٹرز کو متحرک طور پر ایڈجسٹ کیا جاسکتا ہے۔

  3. شامل کر دیا گیا منافع کے مقابلے میں فلٹر: ہر تجارت سے پہلے ممکنہ رسک ریٹرن کا اندازہ لگائیں اور صرف اس تجارت کو انجام دیں جو کم سے کم منافع نقصان کی قیمتوں کا تعین کرے ، اس طرح مجموعی حکمت عملی کی متوقع آمدنی کو بہتر بنایا جاسکے۔ یہ اے ٹی آر پر مبنی متحرک اسٹاپ نقصان اور اسٹاپ کی سطح کی ترتیب کے ذریعہ حاصل کیا جاسکتا ہے۔

  4. ملٹی ٹائم فریم تجزیہ متعارف کرایا: اعلی ٹائم فریم پر رجحان کی تصدیق شامل کرکے سگنل کی معیار کو بہتر بنایا جاسکتا ہے۔ مثال کے طور پر ، صرف اس وقت تجارت پر عملدرآمد کریں جب سورج کی کرنسی کا رجحان موجودہ ٹریڈنگ ٹائم فریم کے رجحان کے مطابق ہو۔

  5. متحرک پوزیشننگ الگورتھم میں بہتری: موجودہ رسک فنکشن انتہائی صورتوں میں بہت زیادہ یا بہت کم ایڈجسٹمنٹ کا سبب بن سکتا ہے۔ زیادہ پیچیدہ الگورتھم پر غور کیا جاسکتا ہے ، جیسے مارکیٹ میں اتار چڑھاؤ اور موجودہ منافع بخش صورتحال پر مبنی خود سے موافقت کا فارمولا ، یا خطرے کے دروازے کی حد متعارف کرانا ، اس بات کو یقینی بنانا کہ انفرادی تجارت مجموعی طور پر پورٹ فولیو کو زیادہ متاثر نہیں کرتی ہے۔

  6. خود کار طریقے سے پیرامیٹرز کی اصلاح شامل کریں: خود کار طریقے سے پیرامیٹرز کو بہتر بنانے کا عمل انجام دیں۔ مارکیٹ کے حالیہ اعداد و شمار کی بنیاد پر حکمت عملی کے پیرامیٹرز کو باقاعدگی سے ایڈجسٹ کریں تاکہ حکمت عملی کو بدلتے ہوئے مارکیٹ کے حالات کے مطابق بہتر بنایا جاسکے۔ یہ ریٹرننگ فریم ورک یا مشین لرننگ الگورتھم کے ذریعہ کیا جاسکتا ہے۔

خلاصہ کریں۔

متحرک قیمت کی حد اور آر ایس آئی سے دور تجارت کی حکمت عملی ایک اعلی درجے کا مقداری تجارتی نظام ہے جس میں متعدد تکنیکی تجزیہ کے طریقوں کو شامل کیا گیا ہے۔ قیمت کی حد ، آر ایس آئی سے دور اور منتقل اوسط رجحانات کے ساتھ مل کر ، یہ ایک مضبوط تجارتی فیصلہ سازی کا فریم ورک فراہم کرتا ہے۔ اس کا سب سے بڑا فائدہ متحرک پوزیشن مینجمنٹ سسٹم ہے جو مارکیٹ کے حالات کے مطابق خود بخود تجارت کے پیمانے کو ایڈجسٹ کرنے کے قابل ہے ، جبکہ خطرے پر قابو رکھتے ہوئے سرمایہ کاری کی کارکردگی کو بہتر بناتا ہے۔

اگرچہ اس حکمت عملی میں کچھ موروثی خطرات ہیں ، جیسے جعلی توڑ اور پیرامیٹرز کی حساسیت ، لیکن اس حکمت عملی کی استحکام اور موافقت کو مزید بہتر بنانے کے لئے تجویز کردہ اصلاحاتی سمتوں کے ذریعہ ، جیسے حجم کی تصدیق میں اضافہ ، اتار چڑھاؤ کی شرح میں ایڈجسٹمنٹ اور کثیر ٹائم فریم تجزیہ متعارف کرایا جاسکتا ہے۔ یہ ایک لچکدار اور طاقتور بنیادی فریم ورک فراہم کرتا ہے جو تاجروں کے لئے جو خودکار تجارتی پلیٹ فارم (جیسے او کے ایکس سگنل روبوٹ) پر اعلی درجے کی حکمت عملی کو تعینات کرنا چاہتے ہیں ، جو ذاتی تجارتی طرز اور مارکیٹ کی ترجیحات کے مطابق اپنی مرضی کے مطابق اور اس میں توسیع کرسکتے ہیں۔

حکمت عملی کا ماخذ کوڈ
/*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)