چلتی اوسط لفافہ چینل رجحان کی پیروی کرنے والی حکمت عملی چلتی اوسط لائنوں اور چینل کے اشارے پر مبنی رجحان کی پیروی کرنے والی حکمت عملی ہے۔ یہ کثیر سطح کی چلتی اوسط چینل کے قیام کے ذریعہ قیمت کے رجحانات کا فیصلہ اور سراغ لگانے کا احساس کرتی ہے۔ یہ حکمت عملی کثیر ٹائم فریم فیوژن کو حاصل کرنے کے لئے مختلف ٹائم فریموں کے چلتے اوسط حساب کتاب کو بھی جوڑتی ہے ، جو بڑے رجحانات کو پکڑنے میں مدد کرتی ہے۔
اس حکمت عملی کا بنیادی اصول حرکت پذیر اوسط لائنوں کی رجحان سے باخبر رہنے کی فعالیت اور لفافہ اشارے کے چینل فیصلے پر مبنی ہے۔ حکمت عملی ایک بنیادی حرکت پذیر اوسط کی تعمیر کے لئے قابل ترتیب پیرامیٹرز جیسے حرکت پذیر اوسط مدت ، ہموار قسم ، قیمت کا ذریعہ وغیرہ کا استعمال کرتی ہے۔ پھر پیرامیٹرز کے ذریعہ طے شدہ فیصد شفٹ کی اقدار کے مطابق اوپر اور نیچے چینلز قائم کیے جاتے ہیں۔ جب قیمت نچلے چینل سے ٹوٹ جاتی ہے تو ، طویل ہوجائیں۔ جب قیمت اوپری چینل سے ٹوٹ جاتی ہے تو ، مختصر ہوجائیں۔ اسی وقت ، حکمت عملی اسٹاپ نقصان لائن کے طور پر ایک آزاد حرکت پذیر اوسط متعارف کراتی ہے۔
خاص طور پر اس حکمت عملی کی مندرجہ ذیل خصوصیات ہیں:
دونوں طویل اور مختصر آپریشن کی حمایت، اوپر اور نیچے چینلز کے ذریعے رجحان کی سمت کا فیصلہ.
4 احکامات تک کھولیں، زیادہ سے زیادہ منافع حاصل کرنے کے لئے پولین لائن پرتوں کے ذریعے پیرامڈ آرڈر کھولنے کو لاگو کریں.
درست سٹاپ نقصان کے حصول کے لیے آزاد افتتاحی اور بند ہونے والی اوسط اوسط کو ترتیب دیں۔
ملٹی ٹائم فریم فیوژن کے حصول کے لئے مختلف ٹائم فریم (1 منٹ سے 1 دن) کے چلتے ہوئے اوسط حساب کی حمایت کریں۔
کھولنے اور بند ہونے والے چلتے ہوئے اوسط 6 مختلف ہموار طریقوں کا انتخاب کرتے ہیں، جو مختلف اقسام اور سائیکلوں کے لئے بہتر بنایا جا سکتا ہے.
مثبت اور منفی آفسیٹس کو چینلز کو ایڈجسٹ کرنے اور زیادہ درست پیشرفتوں کا پیچھا کرنے کے لئے داخل کیا جاسکتا ہے۔
حکمت عملی کا مخصوص تجارتی منطق مندرجہ ذیل ہے:
بینچ مارک کے افتتاحی چلتی اوسط کا حساب لگائیں، اور پیرامیٹرز کے مقررہ فیصد کے مطابق 4 توڑ لائنیں حاصل کریں۔
جب قیمت نیچے کی چینل لائن کو توڑتی ہے تو، طویل عرصے تک جانے کے لئے پوزیشن کھولیں؛ جب قیمت اوپر کی چینل لائن کو توڑتی ہے تو، مختصر کرنے کے لئے پوزیشن کھولیں.
اسٹاپ نقصان لائن کے طور پر آزاد بندش حرکت پذیر اوسط کا حساب لگائیں۔ جب قیمت دوبارہ لائن سے نیچے آجاتی ہے تو ، پرتوں میں طویل احکامات کو روکیں۔ جب قیمت دوبارہ لائن سے اوپر بڑھتی ہے تو ، پرتوں میں مختصر احکامات کو روکیں۔
زیادہ سے زیادہ 4 آرڈر کھولے جاسکتے ہیں۔ زیادہ سے زیادہ منافع حاصل کرنے کے لئے پرتوں پر مشتمل اہرام کے آرڈر کھولنے کا استعمال کریں۔
اس حکمت عملی کے اصول کے ذریعے یہ دیکھا جاسکتا ہے کہ حکمت عملی میں ایسے عناصر شامل ہیں جیسے حرکت پذیر اوسط لائنوں کی رجحان کی پیروی ، چینل کے فیصلے کے اختتام کے سگنل ، اور نسبتا سخت اور مکمل رجحان نظام بنانے کے لئے آزاد اسٹاپ نقصان کی لائنوں کی ترتیب۔
کوڈ اور منطقی تجزیہ کے مطابق، چلتی اوسط کو چینل کے رجحان کے بعد کی حکمت عملی مندرجہ ذیل فوائد ہیں:
ملٹی ٹائم فریم فیوژن بڑے پیمانے پر رجحانات کو پکڑنے کے امکان کو بہتر بناتا ہے۔ یہ حکمت عملی 1 منٹ سے 1 دن تک مختلف سائیکلوں کے چلتے ہوئے اوسط کے حساب کو سپورٹ کرتی ہے۔ مختلف سائیکلوں کے ساتھ افتتاحی اور اسٹاپ نقصان کے چلتے ہوئے اوسط کو ترتیب دینے سے ملٹی ٹائم فریم ٹرینڈ فیصلے کی طاقت کا فیوژن حاصل ہوتا ہے ، جو بڑے پیمانے پر رجحانات کو پکڑنے کے لئے زیادہ سازگار ہے۔
اہرام آرڈر کھولنے کا طریقہ زیادہ منافع حاصل کرتا ہے۔ حکمت عملی 4 آرڈر تک کھول سکتی ہے۔ پرتوں پر مشتمل آرڈر کھولنے سے ، یہ منافع کا تناسب متوازن کرتا ہے اور خطرات پر قابو پاتے ہوئے زیادہ منافع حاصل کرتا ہے۔
6 اقسام کے حرکت پذیر اوسط انتخاب کے لئے دستیاب ہیں اور موافقت پذیری مضبوط ہے۔ افتتاحی اور اسٹاپ نقصان حرکت پذیر اوسط 6 طریقوں کے انتخاب کی حمایت کرتا ہے جن میں ایس ایم اے / ای ایم اے / متحرک حرکت پذیر اوسط شامل ہیں ، جو موافقت پذیری کو بہتر بنانے کے لئے مختلف اقسام اور سائیکلوں کے لئے بہتر بنایا جاسکتا ہے۔
سایڈست چینل لائنیں توڑنے والے فیصلے کو زیادہ درست بناتی ہیں۔ حکمت عملی چینل میں منتقل ہونے والے فیصد پیرامیٹرز کو مختلف اقسام یا مارکیٹ کے ماحول کی طرف اصلاح کے ل channel چینل کی چوڑائی کو ایڈجسٹ کرنے کی اجازت دیتی ہے ، جس سے توڑنے والے فیصلوں کی درستگی میں بہتری آتی ہے۔
اسٹاپ نقصان کی آزاد لائن خطرے کے کنٹرول کے لئے مددگار ہے۔ حکمت عملی طویل یا مختصر احکامات کو روکنے کے لئے بند کرنے کی لائن کے طور پر ایک آزاد چلتی اوسط لائن کا حساب لگاتی ہے ، جو تجارتی خطرات کو بہت کم کرسکتی ہے اور کھونے والے احکامات کا پیچھا کرنے سے بچ سکتی ہے۔
کوڈ کا ڈھانچہ واضح اور تیار کرنا آسان ہے۔ حکمت عملی پائین اسکرپٹ میں واضح ڈھانچے کے ساتھ لکھی گئی ہے اور سمجھنے اور تیار کرنے میں آسان ہے۔ صارفین موجودہ فریم ورک کی بنیاد پر پیرامیٹرز کو بہتر بنانا یا دیگر منطق شامل کرنا جاری رکھ سکتے ہیں۔
اگرچہ مجموعی طور پر حکمت عملی کا منطق سخت ہے اور خطرے کا کنٹرول موجود ہے ، لیکن پھر بھی کچھ تجارتی خطرات سے آگاہ ہونا ضروری ہے ، خاص طور پر ان میں شامل ہیں:
بڑے پیمانے پر رجحان کی تبدیلی کا خطرہ۔ حکمت عملی کا بنیادی مفروضہ یہ ہے کہ قیمتیں کچھ رجحان کے ساتھ ، مستقل طور پر آگے بڑھتی رہیں گی۔ تاہم ، جب بڑے پیمانے پر رجحانات کی تبدیلی ہوتی ہے تو ، اس کا حکمت عملی کی منافع پر زیادہ اثر پڑے گا۔ نقصانات پر قابو پانے کے لئے وقت پر نقصان کو روکنا ضروری ہے۔
ناقابل اعتبار توڑ کا خطرہ۔ سائیڈ ویز یا شاک مارکیٹوں میں ، قیمتیں توڑنے کے بعد چینل لائن سے نیچے گر سکتی ہیں ، جس کی وجہ سے آرڈرز کو کھونے سے پیچھا کیا جائے گا۔ ایسے معاملات کو کم کرنے کے لئے پیرامیٹرز کو بہتر بنانے کی ضرورت ہے۔
توقعات کے انتظام کا خطرہ۔ حکمت عملی میں زیادہ سے زیادہ منافع کے حصول کے لئے 4 پرتوں کے پرامڈ آرڈرز کا تعین کیا گیا ہے ، جس کے نتیجے میں منافع کے ادوار کے دوران نمایاں واپسی ہوتی ہے لیکن نقصان کے ادوار کے دوران توقعات میں بھی تیزی سے کمی واقع ہوتی ہے۔ اس کے لئے سرمایہ کاروں کو پیشہ ورانہ نفسیاتی انتظامی مہارت کی ضرورت ہوتی ہے۔
سگنل کی اصلاح کا خطرہ۔ اس حکمت عملی میں متعدد پیرامیٹرز جیسے چینل کی چوڑائی اور حرکت پذیر اوسط سائیکل میں ایڈجسٹمنٹ اور اصلاحات شامل ہیں۔ اس کے ل professional پیشہ ور کوانٹس کو زیادہ سے زیادہ فٹنگ سے بچنے کے ل optimization اصلاح کا تجربہ ہونا ضروری ہے۔
مارکیٹ کے خصوصی حالات کا خطرہ۔ مارکیٹ کے انتہائی حالات جیسے تیز فرق یا مختصر لائن کی حدود حکمت عملی کی منطق کو بہت نقصان پہنچائیں گی ، لہذا بروقت اسٹاپ نقصانات کے ل system نظاماتی رسک میٹرکس پر توجہ دینے کی ضرورت ہے۔
عام طور پر ، حکمت عملی بنیادی طور پر منافع بخش ہونے کے ل large بڑے پیمانے پر رجحانات میں اضافے پر انحصار کرتی ہے ، اور یہ صرف طویل مدتی استحکام کی خصوصیات والی اقسام اور مارکیٹ کے ماحول پر لاگو ہوتی ہے۔ اس کے علاوہ ، حکمت عملیوں کی مستحکم منافع بخش کو یقینی بنانے کے لئے کثیر پیرامیٹر اصلاح اور ذہنیت کنٹرول بھی اہم ہیں۔
اس حرکت پذیر اوسط کے لئے، چینل کے رجحان کے بعد کی حکمت عملی کے لئے، اصلاح کی اہم سمتوں میں شامل ہیں:
مشین لرننگ الگورتھم کی بنیاد پر چینل لائنوں اور اسٹاپ نقصان لائنوں کی انکولی اصلاح۔ ایل ایس ٹی ایم اور پٹری کی پیش گوئی جیسے ماڈلز کو چینل اور اسٹاپ نقصان لائن ماڈلز کو تربیت دینے کے لئے استعمال کیا جاسکتا ہے تاکہ قیمت کی بہتر پیش گوئی اور خطرے سے بچنے کے لئے حاصل کیا جاسکے۔
پورٹ فولیو کے خطرات پر قابو پانے اور پورٹ فولیو آرڈر کھولنے کی منطق کو بہتر بنانے کے لئے جذبات کے اشارے ، پورٹ فولیو وزن کے تناسب جیسے معاون عوامل کو شامل کریں۔ پورٹ فولیو کے خطرات پر قابو پانے اور پورٹ فولیو آرڈر کھولنے کی منطق کو بہتر بنانے کے لئے مطلق اتار چڑھاؤ اور مارکیٹ کے جذبات جیسے عوامل شامل کیے جاسکتے ہیں۔
بیک ٹیسٹنگ کی صداقت کو بہتر بنانے کے لئے تجارتی لاگت اور سلائپج ماڈل متعارف کروائیں۔ موجودہ بیک ٹیسٹنگ میں تجارتی لاگت کے اثرات پر غور نہیں کیا جاتا ہے ، جو حقیقی تجارت میں ایک اہم عنصر ہے جسے ریاضیاتی ماڈلز میں شامل کرنے کی ضرورت ہے۔
اسی طرح کے اثاثہ جات کی کلاسوں میں ارتباط کا تجزیہ بڑھانا تاکہ رسک کنٹرول کے متحد فریم ورک تیار کیے جاسکیں۔ موجودہ واحد اثاثہ حکمت عملی کو اجناس اور کریپٹو کرنسیوں جیسی متعدد اسی طرح کی منڈیوں میں بڑھانا ، اور حکمت عملی کے استحکام کو بہتر بنانے کے لئے ارتباط کے تجزیے کے ذریعے رسک کنٹرول کو متحد کرنا۔
صارف دوست کو بہتر بنانے کے لئے حکمت عملی کی وضاحت کی اہلیت میں اضافہ کریں۔ حکمت عملی کے نتائج ، آؤٹ پٹ اہمیت کی درجہ بندی میں ہر ان پٹ متغیر کی اہمیت کا تجزیہ کرنے ، اور صارفین کے لئے حکمت عملی کی منطق کو زیادہ شفاف اور قابل تشریح بنانے کے لئے SHAP جیسے طریقوں کا استعمال کریں۔
مشین لرننگ اور ملٹی فیکٹر ماڈلز جیسے الگورتھم متعارف کرانے سے حکمت عملی کے استحکام ، صداقت اور استعمال میں آسانی کو مزید بہتر بنایا جاسکتا ہے۔
خلاصہ یہ کہ ، چلتی اوسط چینل کے رجحان کے بعد کی حکمت عملی میں تین اہم نکات شامل ہیں: چلتی اوسط کے رجحان کی پیروی ، چینل کے اشارے کی رجحان کی نشاندہی اور خطرے کے کنٹرول کے لئے آزاد اسٹاپ نقصان کی لائنیں۔ سخت رجحاناتی منڈیوں میں ، حکمت عملی منافع کے بعد رجحان کی معقول مقدار کے ساتھ مستحکم منافع فراہم کرسکتی ہے۔ لیکن صارفین کو میکرو مارکیٹ کے ماحول پر توجہ دینے ، پیرامیٹرز کو مناسب طریقے سے بہتر بنانے اور خطرات کا انتظام کرنے کی ضرورت ہے ، تاکہ حکمت عملی پیچیدہ اور ہمیشہ بدلتی ہوئی تجارتی منڈیوں میں موافقت کرسکے۔ مجموعی طور پر ، حکمت عملی صارفین کو نسبتا complete مکمل اور سخت رجحان کی نگرانی کا حل فراہم کرتی ہے ، اور ملکیتی ترقی اور ثانوی ترقی کے لئے ایک بہت ہی موزوں مقداری حکمت عملی کا فریم ورک ہے۔
/*backtest start: 2023-10-23 00:00:00 end: 2023-11-22 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the GNU Affero General Public License v3.0 at https://www.gnu.org/licenses/agpl-3.0.html //@version=4 strategy(title = "HatiKO Envelopes", shorttitle = "HatiKO Envelopes", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 4, initial_capital=10, calc_on_order_fills=false) //Settings isLotSizeAvgShifts=input(true, title ="Calculate lot size with avgPrice shifts (HatiKO calculate)") lotsize_Short = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %") lotsize_Long = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %") //Shorts Open Config timeFrame_Short = input(defval = "Current.", options = ["Current.", "1m", "3m", "5m", "10m", "15m", "20m", "30m", "45m", "1H","2H","3H","4H","1D"], title = "Timeframe Short") ma_type_Short = input(defval = "1. SMA", options = ["1. SMA", "2. PCMA", "3. EMA", "4. WMA", "5. DEMA", "6. ZLEMA"], title = "MA Type Short") Short_Data_input = input(defval = "7.OHLC4", options = ["1.Open", "2.High", "3.Low", "4.Close", "5.HL2", "6.HLC3", "7.OHLC4", "8.OC2"], title = "Data Short") len_Short = input(3, minval = 1, title = "MA Length Short") offset_Short = input(0, minval = 0, title = "MA offset Short") //Longs Open Config timeFrame_Long = input(defval = "Current.", options = ["Current.", "1m", "3m", "5m", "10m", "15m", "20m", "30m", "45m", "1H","2H","3H","4H","1D"], title = "Timeframe Long") ma_type_Long = input(defval = "1. SMA", options = ["1. SMA", "2. PCMA", "3. EMA", "4. WMA", "5. DEMA", "6. ZLEMA"], title = "MA Type Long") Long_Data_input = input(defval = "7.OHLC4", options = ["1.Open", "2.High", "3.Low", "4.Close", "5.HL2", "6.HLC3", "7.OHLC4", "8.OC2"], title = "Data Long") len_Long = input(3, minval = 1, title = "MA Length Long") offset_Long = input(0, minval = 0, title = "MA offset Long") //Shorts Close Config isEnableShortCustomClose=input(false, title ="Mode close MA Short") timeFrame_close_Short = input(defval = "Current.", options = ["Current.", "1m", "3m", "5m", "10m", "15m", "20m", "30m", "45m", "1H","2H","3H","4H","1D"], title = "Timeframe Short Close") ma_type_close_Short = input(defval = "1. SMA", options = ["1. SMA", "2. PCMA", "3. EMA", "4. WMA", "5. DEMA", "6. ZLEMA"], title = "MA Type Close Short") Short_Data_input_close = input(defval = "7.OHLC4", options = ["1.Open", "2.High", "3.Low", "4.Close", "5.HL2", "6.HLC3", "7.OHLC4", "8.OC2"], title = "Data Short Close") len_Short_close = input(3, minval = 1, title = "MA Length Short Close") shortDeviation = input( 0.0, title = "Short Deviation %",step=0.1) offset_Short_close = input(0, minval = 0, title = "MA offset Short Close") //Longs Close Config isEnableLongCustomClose=input(false, title ="Mode close MA Long") timeFrame_close_Long = input(defval = "Current.", options = ["Current.", "1m", "3m", "5m", "10m", "15m", "20m", "30m", "45m", "1H","2H","3H","4H","1D"], title = "Timeframe Long Close") ma_type_close_Long = input(defval = "1. SMA", options = ["1. SMA", "2. PCMA", "3. EMA", "4. WMA", "5. DEMA", "6. ZLEMA"], title = "MA Type Close Long") Long_Data_input_close = input(defval = "7.OHLC4", options = ["1.Open", "2.High", "3.Low", "4.Close", "5.HL2", "6.HLC3", "7.OHLC4", "8.OC2"], title = "Data Long Close") len_Long_close = input(3, minval = 1, title = "MA Length Long Close") longDeviation = input( -0.0, title = "Long Deviation %",step=0.1) offset_Long_close = input(0, minval = 0, title = "MA offset Long Close") shift_Short4_percent = input(0.0, title = "Short Shift 4") shift_Short3_percent = input(10.0, title = "Short Shift 3") shift_Short2_percent = input(7.0, title = "Short Shift 2") shift_Short1_percent = input(4.0, title = "Short Shift 1") shift_Long1_percent = input(-4.0, title = "Long Shift 1") shift_Long2_percent = input(-7.0, title = "Long Shift 2") shift_Long3_percent = input(-10.0, title = "Long Shift 3") shift_Long4_percent = input( -0.0, title = "Long Shift 4") isEnableDoubleLotShift3_Long=input(false, title ="Shift3 Long LotSize*2") isEnableDoubleLotShift3_Short=input(false, title ="Shift3 Short LotSize*2") year_Start = input(19, defval = 19, minval = 10, maxval = 99, title = "From Year 20XX") year_End = input(99, defval = 99, minval = 10, maxval = 99, title = "To Year 20XX") month_Start = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") month_End = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") day_Start = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") day_End = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") short4_isActive = shift_Short4_percent != 0 and lotsize_Short > 0 short3_isActive = shift_Short3_percent != 0 and lotsize_Short > 0 short2_isActive = shift_Short2_percent != 0 and lotsize_Short > 0 short1_isActive = shift_Short1_percent != 0 and lotsize_Short > 0 long1_isActive = shift_Long1_percent != 0 and lotsize_Long > 0 long2_isActive = shift_Long2_percent != 0 and lotsize_Long > 0 long3_isActive = shift_Long3_percent != 0 and lotsize_Long > 0 long4_isActive = shift_Long4_percent != 0 and lotsize_Long > 0 mult = 1 / syminfo.mintick is_time_true = time > timestamp(2000+year_Start, month_Start, day_Start, 00, 00) and time < timestamp(2000+ year_End, month_End, day_End, 23, 59) //MA TFsecurity_Short = timeFrame_Short == "4H"?60*4:timeFrame_Short=="3H"?60*3:timeFrame_Short=="2H"?60*2:timeFrame_Short=="1H"?60:timeFrame_Short=="45m"?45:timeFrame_Short=="30m"?30:timeFrame_Short=="20m"?20:timeFrame_Short=="15m"?15:timeFrame_Short=="10m"?10:timeFrame_Short=="5m"?5:timeFrame_Short=="3m"?3:1 TFsecurity_Long = timeFrame_Long == "4H"?60*4:timeFrame_Long=="3H"?60*3:timeFrame_Long=="2H"?60*2:timeFrame_Long=="1H"?60:timeFrame_Long=="45m"?45:timeFrame_Long=="30m"?30:timeFrame_Long=="20m"?20:timeFrame_Long=="15m"?15:timeFrame_Long=="10m"?10:timeFrame_Long=="5m"?5:timeFrame_Long=="3m"?3:1 oc2 = (open + close) / 2 lag_Short = (len_Short - 1) / 2//floor((len_Short - 1) / 2) lag_Long = (len_Long - 1) / 2 //floor((len_Long - 1) / 2) source_Short = Short_Data_input == "1.Open" ? open : Short_Data_input == "2.High" ? high : Short_Data_input == "3.Low" ? low : Short_Data_input == "4.Close" ? close : Short_Data_input == "5.HL2" ? hl2 : Short_Data_input == "6.HLC3" ? hlc3 : Short_Data_input == "7.OHLC4" ? ohlc4 : Short_Data_input == "8.OC2" ? oc2: close source_Long = Long_Data_input == "1.Open" ? open : Long_Data_input == "2.High" ? high : Long_Data_input == "3.Low" ? low : Long_Data_input == "4.Close" ? close : Long_Data_input == "5.HL2" ? hl2 : Long_Data_input == "6.HLC3" ? hlc3 : Long_Data_input == "7.OHLC4" ? ohlc4 : Long_Data_input == "8.OC2" ? oc2: close preS_MA_Short = ma_type_Short == "1. SMA" ? sma(source_Short, len_Short) : ma_type_Short == "2. PCMA"? (highest(high, len_Short) + lowest(low, len_Short)) / 2 : ma_type_Short == "3. EMA" ? ema(source_Short, len_Short) : ma_type_Short == "4. WMA" ? wma(source_Short, len_Short) : ma_type_Short == "5. DEMA" ? (2 * ema(source_Short,len_Short) - ema(ema(source_Short,len_Short), len_Short)) : ma_type_Short == "6. ZLEMA" ? ema(source_Short + (source_Short - source_Short[lag_Short]), len_Short) : na preS_MA_Long = ma_type_Long == "1. SMA" ? sma(source_Long, len_Long) :ma_type_Long == "2. PCMA"? (highest(high, len_Long) + lowest(low, len_Long)) / 2 : ma_type_Long == "3. EMA" ? ema(source_Long, len_Long) : ma_type_Long == "4. WMA" ? wma(source_Long, len_Long) : ma_type_Long == "5. DEMA" ? (2 * ema(source_Long,len_Long) - ema(ema(source_Long,len_Long), len_Long)) : ma_type_Long == "6. ZLEMA" ? ema(source_Long + (source_Long - source_Long[lag_Long]), len_Long) : na pre_MA_Short = timeFrame_Short == "Current." ? preS_MA_Short : security(syminfo.tickerid, tostring(TFsecurity_Short), preS_MA_Short) pre_MA_Long = timeFrame_Long == "Current." ? preS_MA_Long : security(syminfo.tickerid, tostring(TFsecurity_Long), preS_MA_Long) MA_Short = (round(pre_MA_Short * mult) / mult)[offset_Short] MA_Long = (round(pre_MA_Long * mult) / mult)[offset_Long] Level_Long1 = long1_isActive ? round((MA_Long + MA_Long* shift_Long1_percent / 100) * mult) / mult : na Level_Long2 = long2_isActive ? round((MA_Long + MA_Long* shift_Long2_percent / 100) * mult) / mult : na Level_Long3 = long3_isActive ? round((MA_Long + MA_Long* shift_Long3_percent / 100) * mult) / mult : na Level_Long4 = long4_isActive ? round((MA_Long + MA_Long* shift_Long4_percent / 100) * mult) / mult : na Level_Short1 = short1_isActive ? round((MA_Short + MA_Short*shift_Short1_percent/ 100) * mult) / mult : na Level_Short2 = short2_isActive ? round((MA_Short + MA_Short*shift_Short2_percent/ 100) * mult) / mult : na Level_Short3 = short3_isActive ? round((MA_Short + MA_Short*shift_Short3_percent/ 100) * mult) / mult : na Level_Short4 = short4_isActive ? round((MA_Short + MA_Short*shift_Short4_percent/ 100) * mult) / mult : na //MA_Close lag_Short_close = (len_Short_close - 1) / 2 //floor((len_Short_close - 1) / 2) lag_Long_close = (len_Long_close - 1) / 2 //floor((len_Long_close - 1) / 2) pre_PCMA_Short_close = (highest(high, len_Short_close) + lowest(low, len_Short_close)) / 2 pre_PCMA_Long_close = (highest(high, len_Long_close) + lowest(low, len_Long_close)) / 2 source_Short_close = Short_Data_input_close == "1.Open" ? open : Short_Data_input_close == "2.High" ? high : Short_Data_input_close == "3.Low" ? low : Short_Data_input_close == "4.Close" ? close : Short_Data_input_close == "5.HL2" ? hl2 : Short_Data_input_close == "6.HLC3" ? hlc3 : Short_Data_input_close == "7.OHLC4" ? ohlc4 : Short_Data_input_close == "8.OC2" ? oc2: close source_Long_close = Long_Data_input_close == "1.Open" ? open : Long_Data_input_close == "2.High" ? high : Long_Data_input_close == "3.Low" ? low : Long_Data_input_close == "4.Close" ? close : Long_Data_input_close == "5.HL2" ? hl2 : Long_Data_input_close == "6.HLC3" ? hlc3 : Long_Data_input_close == "7.OHLC4" ? ohlc4 : Long_Data_input_close == "8.OC2" ? oc2: close preS_MA_Short_close = ma_type_close_Short == "1. SMA" ? sma(source_Short_close, len_Short_close) : ma_type_close_Short == "2. PCMA"? (highest(high, len_Short_close) + lowest(low, len_Short_close)) / 2 : ma_type_close_Short == "3. EMA" ? ema(source_Short_close, len_Short_close) : ma_type_close_Short == "4. WMA" ? wma(source_Short_close, len_Short_close) : ma_type_close_Short == "5. DEMA" ? (2 * ema(source_Short_close,len_Short_close) - ema(ema(source_Short_close,len_Short_close), len_Short_close)) : ma_type_close_Short == "6. ZLEMA" ? ema(source_Short_close + (source_Short_close - source_Short_close[lag_Short_close]), len_Short_close) : na preS_MA_Long_close = ma_type_close_Long == "1. SMA" ? sma(source_Long_close, len_Long_close) : ma_type_close_Long == "2. PCMA"? (highest(high, len_Long_close) + lowest(low, len_Long_close)) / 2 : ma_type_close_Long == "3. EMA" ? ema(source_Long_close, len_Long_close) : ma_type_close_Long == "4. WMA" ? wma(source_Long_close, len_Long_close) : ma_type_close_Long == "5. DEMA" ? (2 * ema(source_Long_close,len_Long_close) - ema(ema(source_Long_close,len_Long_close), len_Long_close)) : ma_type_close_Long == "6. ZLEMA" ? ema(source_Long_close + (source_Long_close - source_Long_close[lag_Long_close]), len_Long_close) : na TFsecurity_close_Short=timeFrame_close_Short=="4H"?60*4:timeFrame_close_Short=="3H"?60*3:timeFrame_close_Short=="2H"?60*2:timeFrame_close_Short=="1H"?60:timeFrame_close_Short=="45m"?45:timeFrame_close_Short=="30m"?30:timeFrame_close_Short=="20m"?20:timeFrame_close_Short=="15m"?15:timeFrame_close_Short=="10m"?10:timeFrame_close_Short=="5m"?5:timeFrame_close_Short=="3m"?3:1 TFsecurity_close_Long=timeFrame_close_Long=="4H"?60*4:timeFrame_close_Long=="3H"?60*3:timeFrame_close_Long=="2H"?60*2:timeFrame_close_Long=="1H"?60:timeFrame_close_Long=="45m"?45:timeFrame_close_Long=="30m"?30:timeFrame_close_Long=="20m"?20:timeFrame_close_Long=="15m"?15:timeFrame_close_Long=="10m"?10:timeFrame_close_Long=="5m"?5:timeFrame_close_Long=="3m"?3:1 pre_MA_close_Short = isEnableShortCustomClose? security(syminfo.tickerid, timeFrame_close_Short=="Current."?timeframe.period:tostring(TFsecurity_close_Short), preS_MA_Short_close) : preS_MA_Short_close pre_MA_close_Long = isEnableLongCustomClose? security(syminfo.tickerid, timeFrame_close_Long=="Current."?timeframe.period:tostring(TFsecurity_close_Long), preS_MA_Long_close) : preS_MA_Long_close MA_Short_close = (round(pre_MA_close_Short * mult) / mult)[offset_Short_close] MA_Long_close = (round(pre_MA_close_Long * mult) / mult)[offset_Long_close] countShifts_Long = 0 countShifts_Long:=long1_isActive?countShifts_Long+1:countShifts_Long countShifts_Long:=long2_isActive?countShifts_Long+1:countShifts_Long countShifts_Long:=long3_isActive?countShifts_Long+1:countShifts_Long countShifts_Long:=long4_isActive?countShifts_Long+1:countShifts_Long avgPriceForLotShiftLong_Data_input = MA_Long+ (MA_Long*((shift_Long1_percent+shift_Long2_percent+shift_Long3_percent+shift_Long4_percent)/countShifts_Long/100)) countShifts_Short = 0 countShifts_Short:=short1_isActive?countShifts_Short+1:countShifts_Short countShifts_Short:=short2_isActive?countShifts_Short+1:countShifts_Short countShifts_Short:=short3_isActive?countShifts_Short+1:countShifts_Short countShifts_Short:=short4_isActive?countShifts_Short+1:countShifts_Short avgPriceForLotShiftShort_Data_input = MA_Short + (MA_Short*((shift_Short1_percent+shift_Short2_percent+shift_Short3_percent+shift_Short4_percent)/countShifts_Short/100)) strategy.initial_capital = 50000 balance=strategy.initial_capital + strategy.netprofit lotlong = 0.0 lotshort = 0.0 lotlong := (balance / avgPriceForLotShiftLong_Data_input) * (lotsize_Long / 100) //strategy.position_size == 0 ? (strategy.equity / close) * (lotsize_Long / 100) : lotlong[1] lotshort := (balance / avgPriceForLotShiftShort_Data_input) * (lotsize_Short / 100) //strategy.position_size == 0 ? (strategy.equity / close) * (lotsize_Short / 100) : lotshort[1] lotlong:= lotlong>1000000000?1000000000:lotlong lotshort:=lotshort>1000000000?1000000000:lotshort if isLotSizeAvgShifts==false lotlong := (strategy.equity / open) * (lotsize_Long / 100) lotshort := (strategy.equity / open) * (lotsize_Short / 100) value_deviationLong=0.0 value_deviationShort=0.0 if(isEnableLongCustomClose == false ) MA_Long_close:=MA_Long else value_deviationLong := round(MA_Long_close * longDeviation /100 * mult) / mult if(isEnableShortCustomClose == false ) MA_Short_close:=MA_Short else value_deviationShort := round(MA_Short_close * shortDeviation /100 * mult) / mult if MA_Short > 0 and lotshort > 0// and strategy.position_size<=0 lotShort_Data_input = strategy.position_size < 0 ? round(abs(strategy.position_size) / lotshort) : 0.0 strategy.entry("S1", strategy.short, lotshort, limit = Level_Short1, when = (lotShort_Data_input == 0 and short1_isActive and is_time_true )) lotShort_Data_input := strategy.position_size < 0 ? round(abs(strategy.position_size) / lotshort) : 0.0 strategy.entry("S2", strategy.short, lotshort, limit = Level_Short2, when = (lotShort_Data_input <= 1 and short2_isActive and is_time_true )) lotshort3 = isEnableDoubleLotShift3_Short? lotshort*2 :lotshort lotShort_Data_input := strategy.position_size < 0 ? round(abs(strategy.position_size) / lotshort) : 0.0 maxLotsshift3=isEnableDoubleLotShift3_Short?3:2 strategy.entry("S3", strategy.short, lotshort3, limit = Level_Short3, when = (lotShort_Data_input <= maxLotsshift3 and short3_isActive and is_time_true )) lotShort_Data_input := strategy.position_size < 0 ? round(abs(strategy.position_size) / lotshort) : 0.0 maxLotsshift4=isEnableDoubleLotShift3_Short?4:3 strategy.entry("S4", strategy.short, lotshort, limit = Level_Short4, when = (lotShort_Data_input <= maxLotsshift4 and short4_isActive and is_time_true)) strategy.exit("TPS", "S1" ,limit = MA_Short_close+value_deviationShort , when = is_time_true) strategy.exit("TPS", "S2" ,limit = MA_Short_close+value_deviationShort , when = is_time_true) strategy.exit("TPS", "S3" ,limit = MA_Short_close+value_deviationShort , when = is_time_true) strategy.exit("TPS", "S4" ,limit = MA_Short_close+value_deviationShort , when = is_time_true) if MA_Long > 0 and lotlong > 0// and strategy.position_size>=0 lotLong_Data_input = strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0 strategy.entry("L1", strategy.long, lotlong, limit = Level_Long1, when = (lotLong_Data_input ==0 and long1_isActive and is_time_true)) lotLong_Data_input := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0 strategy.entry("L2", strategy.long, lotlong, limit = Level_Long2, when = ( lotLong_Data_input <= 1 and long2_isActive and is_time_true)) lotlong3 = isEnableDoubleLotShift3_Long? lotlong*2 : lotlong lotLong_Data_input := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0 maxLotsshift3=isEnableDoubleLotShift3_Long?3:2 strategy.entry("L3", strategy.long, lotlong3, limit = Level_Long3, when = (lotLong_Data_input <= maxLotsshift3 and long3_isActive and is_time_true)) maxLotsshift4=isEnableDoubleLotShift3_Long?4:3 lotLong_Data_input := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0 strategy.entry("L4", strategy.long, lotlong, limit = Level_Long4, when = ( lotLong_Data_input<maxLotsshift4 and long4_isActive and is_time_true)) strategy.exit( "TPL", "L1",limit = MA_Long_close+value_deviationLong, when = is_time_true) strategy.exit( "TPL", "L2", limit = MA_Long_close+value_deviationLong, when = is_time_true) strategy.exit( "TPL", "L3", limit = MA_Long_close+value_deviationLong, when = is_time_true) strategy.exit( "TPL", "L4", limit = MA_Long_close+value_deviationLong, when = is_time_true) if (MA_Long_close < close) strategy.close("L1") strategy.close("L2") strategy.close("L3") strategy.close("L4") if (MA_Short_close > close) strategy.close("S1") strategy.close("S2") strategy.close("S3") strategy.close("S4") if time > timestamp(2000+year_End, month_End, day_End, 23, 59) strategy.close_all() strategy.cancel("L1") strategy.cancel("L2") strategy.cancel("L3") strategy.cancel("S1") strategy.cancel("S2") strategy.cancel("S3") //Lines colorlong = color.green colorshort = color.red value_long1 = long1_isActive ? Level_Long1 : na value_long2 = long2_isActive ? Level_Long2 : na value_long3 = long3_isActive ? Level_Long3 : na value_long4 = long4_isActive ? Level_Long4 : na value_short1 = short1_isActive ? Level_Short1 : na value_short2 = short2_isActive ? Level_Short2 : na value_short3 = short3_isActive ?Level_Short3 : na value_short4 = short4_isActive? Level_Short4 : na value_maShort_close= isEnableShortCustomClose ? MA_Short_close : na value_maLong_close= isEnableLongCustomClose ? MA_Long_close : na plot(value_maShort_close + value_deviationShort, offset = 1, color = color.orange, title = "MA line Short Close") plot(value_short4, offset = 1, color = colorshort, title = "Short Shift 4") plot(value_short3, offset = 1, color = colorshort, title = "Short Shift 3") plot(value_short2, offset = 1, color = colorshort, title = "Short Shift 2") plot(value_short1, offset = 1, color = colorshort, title = "Short Shift 1") plot(countShifts_Short>0 and lotsize_Short>0 ? MA_Short:na, offset = 1, color = color.purple, title = "MA line Short") plot(countShifts_Long>0 and lotsize_Long>0? MA_Long:na, offset = 1, color = color.lime, title = "MA line Long") plot(value_long1, offset = 1, color = colorlong, title = "Long Shift 1") plot(value_long2, offset = 1, color = colorlong, title = "Long Shift 2") plot(value_long3, offset = 1, color = colorlong, title = "Long Shift 3") plot(value_long4, offset = 1, color = colorlong, title = "Long Shift 4") plot(value_maLong_close + value_deviationLong, offset = 1, color = color.blue, title = "MA line Long Close")