اس حکمت عملی کا نام
حکمت عملی بنیادی طور پر قیمت کے رجحان اور انٹری پوائنٹس کا تعین کرنے کے لئے بولنگر بینڈ اشارے پر انحصار کرتی ہے۔ بولنگر بینڈ میں تین لائنیں شامل ہیں:
جب قیمت اوپری لائن کے ذریعے نچلی لائن سے اوپر کی طرف ٹوٹ جاتی ہے تو ، ایک بولش رجحان کی نشاندہی کی جاتی ہے۔ جب قیمت اوپری لائن سے نچلی لائن کے ذریعے نیچے کی طرف ٹوٹ جاتی ہے تو ، ایک bearish رجحان شروع ہوچکا ہے۔ یہ حکمت عملی ان دو اقسام کے بریکآؤٹس کے واقع ہونے پر طویل یا مختصر ہوجاتی ہے۔
خاص طور پر، حکمت عملی کا منطق یہ ہے:
جھوٹے بریک آؤٹس سے بچنے کے لئے ، ایک چلتی اوسط فلٹر شامل کیا جاتا ہے۔ اندراج صرف اس وقت ہوتا ہے جب چلتی اوسط کو توڑنے کے ساتھ ساتھ بند بینڈ کو توڑ دیتا ہے۔
یہاں اشارے کے طور پر ایکسپونینشل موونگ میڈین استعمال کیا جاتا ہے۔
خلاصہ میں، رجحان کے وقفے کا تعین کرنے کے لئے معیار یہ ہیں:
داخل ہونے کے بعد، سٹاپ نقصان وسط لائن کو ٹریک کرتا ہے۔ جب قیمت دوبارہ وسط لائن کو چھوتی ہے تو باہر نکل جاتا ہے۔
اس حکمت عملی کی اہم طاقتوں میں شامل ہیں:
فوائد کے باوجود، اس حکمت عملی میں مندرجہ ذیل خطرات بھی شامل ہیں:
مندرجہ بالا خطرات کو کنٹرول کرنے کے لئے، مندرجہ ذیل اصلاحات کی جا سکتی ہیں:
خطرے کے تجزیے کی بنیاد پر، مندرجہ ذیل شعبوں میں مزید اصلاحات کی جا سکتی ہیں:
پیرامیٹر کی اصلاح: زیادہ منظم طریقوں کا استعمال کریں جیسے جینیاتی الگورتھم تاکہ بینڈ اور حرکت پذیر اوسط کے لئے بہترین پیرامیٹر مجموعے تلاش کیے جائیں ، تاکہ حکمت عملی کو زیادہ مستحکم اور منافع بخش بنایا جاسکے۔
سٹاپ نقصان کی اصلاح: بہترین سٹاپ میکانزم کا تعین کرنے کے لیے مختلف سٹاپ نقصان کی تکنیک جیسے اے ٹی آر اسٹاپ، ٹریلنگ اسٹاپ وغیرہ کا تجربہ کریں۔
فلٹر کی اصلاح: غلط سگنل کے امکانات کو کم کرنے اور منافع کی شرح کو بڑھانے کے لئے، اضافی فلٹرز کے طور پر دیگر اشارے جیسے آر ایس آئی، کے ڈی وغیرہ کو شامل کرنے کی کوشش کریں.
داخلے کے معیار کی اصلاح: غیر ضروری اندراجات سے بچنے کے لئے سختی سے اندراج کا وقت منتخب کرنے کے لئے رجحان کی حالت، غیر معمولی حجم وغیرہ جیسے دیگر غور شامل کریں.
مشین لرننگ: ایل ایس ٹی ایم ، آر این این اور دیگر گہری سیکھنے کے ماڈلز کی تعمیر کے لئے مزید تاریخی ڈیٹا اکٹھا کریں ، تاکہ اے آئی سے چلنے والے بہترین اندراج اور باہر نکلنے کا وقت ممکن ہو۔
متحرک رسک انعام مینجمنٹ: مقررہ تناسب رک جاتا ہے شامل کریں، منافع کی ہدف میں اضافہ بعض منافع کی سطح تک پہنچنے کے بعد وغیرہ متحرک طور پر خطرے کی ادائیگی کو کنٹرول کرنے کے لئے.
مذکورہ بالا شعبوں میں اصلاحات کے ذریعے استحکام ، منافع بخش ، رسک ایڈجسٹمنٹ کی صلاحیتوں جیسی کلیدی پیمائش کو جامع طور پر بہتر بنایا جاسکتا ہے ، جس سے حکمت عملی کو لائیو ٹریڈنگ کے لئے موزوں پروڈکشن گریڈ الگورتھم میں تبدیل کیا جاسکتا ہے۔
آخر میں ،
/*backtest start: 2023-12-15 00:00:00 end: 2024-01-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //VERSION ================================================================================================================= //@version=5 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // This strategy is intended to study. // It can also be used to signal a bot to open a deal by providing the Bot ID, email token and trading pair in the strategy settings screen. // As currently written, this strategy uses a Bollinger Bands for trend folling, you can use a EMA as a filter. //Autor Credsonb (M4TR1X_BR) //▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //STRATEGY ================================================================================================================ strategy(title = 'BT-Bollinger Bands - Trend Following', shorttitle = 'BBTF', overlay = true ) //▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // CONFIG ================================================================================================================= // TIME INPUTS usefromDate = input.bool(defval = true, title = 'Start date', inline = '0', group = "Time Filters") initialDate = input(defval = timestamp('01 Jan 2022 00:00 UTC'), title = '', inline = "0",group = 'Time Filters',tooltip="This start date is in the time zone of the exchange ") usetoDate = input.bool(defval = true, title = 'End date', inline = '1', group = "Time Filters") finalDate = input(defval = timestamp('31 Dec 2029 23:59 UTC'), title = '', inline = "1",group = 'Time Filters',tooltip="This end date is in the time zone of the exchange") // TIME LOGIC inTradeWindow = true // ENABLE LONG SHORT OPTIONS string entrygroup ='Long/Short Options ===================================' checkboxLong = input.bool(defval=true, title="Enable Long Entrys",group=entrygroup) checkboxShort = input.bool(defval=true, title="Enable Short Entrys",group=entrygroup) // BOLLINGER BANDS INPUTS ================================================================================================== string bbgroup ='Bollinger Bands ======================================' bbLength = input.int(defval=20,title='BB Length', minval=1, step=5, group=bbgroup) bbStddev = input.float(defval=2, title='BB StdDev', minval=0.5, group=bbgroup) //BOLLINGER BANDS LOGIC [bbMiddle, bbUpper, bbLower] = ta.bb(close, bbLength, bbStddev) // MOVING AVERAGES INPUTS ================================================================================================ string magroup = 'Moving Average =======================================' useEma = input.bool(defval = true, title = 'Moving Average Filter',inline='', group= magroup,tooltip='This will enable or disable Exponential Moving Average Filter on Strategy') emaType=input.string (defval='Ema',title='Type',options=['Ema','Sma'],inline='', group= magroup) emaSource = input.source(defval=close,title=" Source",inline="", group= magroup) emaLength = input.int(defval=100,title="Length",minval=0,inline='', group= magroup) // MOVING AVERAGE LOGIC float ema = emaType=='Ema'? ta.ema(emaSource,emaLength): ta.sma(emaSource,emaLength) // BOT MESSAGES string msgroup='Alert Message For Bot ================================' messageEntry = input.string("", title="Strategy Entry Message",group=msgroup) messageExit =input.string("",title="Strategy Exit Message",group=msgroup) messageClose = input.string("", title="Strategy Close Message",group=msgroup) // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // POSITIONS ============================================================================================================= //VERIFY IF THE BUY FILTERS ARE ON OR OFF bool emaFilterBuy = useEma? (close > ema):(close >= ema) or (close <= ema) //LONG / SHORT POSITIONS LOGIC bool openLongPosition = (close[1] < bbUpper) and (close > bbUpper) and (emaFilterBuy) bool openShortPosition = (close[1] > bbLower) and (close < bbLower) and (emaFilterBuy) //bool closeLongPosition = (close > bbMiddle) //bool closeShortPosition= (close < bbLower) // CHEK OPEN POSITONS ===================================================================================================== // open signal when not already into a position bool validOpenLongPosition = openLongPosition and strategy.opentrades.size(strategy.opentrades - 1) <= 0 bool longIsActive = validOpenLongPosition or strategy.opentrades.size(strategy.opentrades - 1) > 0 bool validOpenShortPosition = openShortPosition and strategy.opentrades.size(strategy.opentrades - 1) <= 0 bool shortIsActive = validOpenShortPosition or strategy.opentrades.size(strategy.opentrades - 1) < 0 longEntryPoint = high if (openLongPosition) and (inTradeWindow) and (checkboxLong) strategy.entry(id = 'Long Entry', direction = strategy.long, stop = longEntryPoint, alert_message=messageEntry) if not (openLongPosition) strategy.cancel('Long Entry') //submit exit orders for trailing take profit price if (longIsActive) and (inTradeWindow) strategy.exit(id = 'Long Exit', stop=bbMiddle, alert_message=messageExit) //if (closeLongPosition) // strategy.close(id = 'Long Entry', alert_message=messageClose) shortEntryPoint = low if (openShortPosition) and (inTradeWindow) and (checkboxShort) strategy.entry(id = 'Short Entry', direction = strategy.short, stop = shortEntryPoint, alert_message=messageEntry) if not(openShortPosition) strategy.cancel('Short Entry') if (shortIsActive) strategy.exit(id = 'Short Exit', stop = bbMiddle, alert_message=messageExit) //if (closeShortPosition) //strategy.close(id = 'Short Close', alert_message=messageClose) // ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // PLOTS =============================================================================================================== // TRADE WINDOW ======================================================================================================== bgcolor(color = inTradeWindow ? color.new(#089981,90):na, title = 'Time Window') // EMA/SMA var emafilterColor = color.new(color.white, 0) plot(series=useEma? ema:na, title = 'EMA Filter', color = emafilterColor, linewidth = 2, style = plot.style_line) // BOLLINGER BANDS plot(series=bbUpper, title = "Upper Band", color = color.aqua)//, display = display.none) plot(series=bbMiddle, title = "MA Band", color = color.red)//, display = display.none) plot(series=bbLower, title = "Lower Band", color = color.aqua)//, display = display.none) // PAINT BARS COLORS bool bulls = (close[1] < bbUpper[1]) and (close > bbUpper) bool bears = (close[1] > bbLower [1]) and (close < bbLower) neutral_color = color.new(color.black, 100) barcolors = bulls ? color.green : bears ? color.red : neutral_color barcolor(barcolors) // ======================================================================================================================