یہ حکمت عملی ٹی ایس آئی ، سی سی آئی اشارے اور ہل چلتی اوسط کو یکجا کرتی ہے تاکہ رجحانات کا تعین اور تجارت کی جاسکے۔ ٹی ایس آئی اور سی سی آئی قیمت کی لہروں کی نشاندہی کرتے ہیں جبکہ ہل ایم اے رجحان کی سمت کی تصدیق کرتا ہے۔ منافع کے اہداف اس وقت طے کیے جاتے ہیں جب منافع بخش باہر نکلنے کے لئے طویل / مختصر سگنل آتے ہیں۔
ٹی ایس آئی وکر اور سگنل لائن کا حساب لگایا جاتا ہے۔ جب وکر لائن سے اوپر عبور کرتا ہے تو طویل سگنل ، نیچے کی طرف کراس اوور پر مختصر ہوتا ہے۔ سی سی آئی زیادہ خرید / زیادہ فروخت کی سطح کی نشاندہی کرتا ہے۔ ہل ایم اے سے اوپر قیمت عبور کرنے سے بیل مارکیٹ کا اشارہ ہوتا ہے ، اور نیچے ریچھ مارکیٹ کے لئے۔ جب ٹی ایس آئی ، سی سی آئی اور ہل ایم اے کے بریک آؤٹ کے حالات سیدھ میں آتے ہیں تو طویل / مختصر تجارت کی جاتی ہے۔ منافع کے اہداف تک پہنچنے پر پوزیشنوں سے باہر نکلنے کے لئے مقرر کیے جاتے ہیں۔
انڈیکیٹرز کو ٹوننگ کرکے، منافع کے الگورتھم کو بہتر بنا کر وغیرہ خطرات کو کم کیا جاسکتا ہے۔
منافع کو نشانہ بنانے کے ساتھ یہ کثیر اشارے کی حکمت عملی اچھے بیک ٹیسٹ کے نتائج دکھاتی ہے۔ پیرامیٹر کی اصلاح جیسے مزید اصلاحات اسے ایک مستحکم کوانٹم ٹریڈنگ سسٹم بناسکتی ہیں۔
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="TSI CCI Hull", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= false, calc_on_every_tick=true, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.018) long = input(title="Long Length", type=input.integer, defval=50) short = input(title="Short Length", type=input.integer, defval=50) signal = input(title="Signal Length", type=input.integer, defval=25) price=input(title="Source",type=input.source,defval=close) Period=input(26, minval=1) lineupper = input(title="Upper Line", type=input.integer, defval=100) linelower = input(title="Lower Line", type=input.integer, defval=-100) p=price length= Period double_smooth(src, long, short) => fist_smooth = ema(src, long) ema(fist_smooth, short) pc = change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) keh = tsi_value*5 > linelower ? color.red : color.lime teh = ema(tsi_value*5, signal*5) > lineupper ? color.red : color.lime meh = ema(tsi_value*5, signal*5) > tsi_value*5 ? color.red : color.lime i1=plot(tsi_value*5, title="TSI Value", color=color.black, linewidth=1,transp=100) i2=plot(ema(tsi_value*5, signal*5), title="TSI Signal", color=color.black, linewidth=1,transp=100) fill(i1,i2,color=meh,transp=85) plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.black, linewidth=10) plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=color.white, linewidth=8,transp=0) plot(cross(tsi_value*5, ema(tsi_value*5, signal*5)) ? tsi_value*5 : na, style=plot.style_circles, color=meh, linewidth=5) n2ma = 2 * wma(p, round(length / 2)) nma = wma(p, length) diff = n2ma - nma sqn = round(sqrt(length)) n1 = wma(diff, sqn) cci = (p - n1) / (0.015 * dev(p, length)) c = cci > 0 ? color.lime : color.red c1 = cci > 20 ? color.lime : color.silver c2 = cci < -20 ? color.red : color.silver cc=plot(cci, color=c, title="CCI Line", linewidth=2) cc2=plot(cci[1], color=color.gray, linewidth=1,transp=100) fill(cc,cc2,color=c,transp=85) plot(cross(20, cci) ? 20 : na, style=plot.style_cross,title="CCI cross UP", color=c1, linewidth=2,transp=100,offset=-2) plot(cross(-20, cci) ? -20 : na, style=plot.style_cross,title="CCI cross down", color=c2, linewidth=2,transp=100,offset=-2) TSI1=ema(tsi_value*5, signal*5) TSI2=ema(tsi_value*5, signal*5)[2] hullma_smoothed = wma(2*wma(n1, Period/2)-wma(n1, Period), round(sqrt(Period))) //plot(hullma_smoothed*200) // Make input options that configure backtest date range startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31) startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12) startYear = input(title="Start Year", type=input.integer, defval=2018, minval=1800, maxval=2100) endDate = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=31) endMonth = input(title="End Month", type=input.integer, defval=7, minval=1, maxval=12) endYear = input(title="End Year", type=input.integer, defval=9999, minval=1800, maxval=2100) // Look if the close time of the current bar // falls inside the date range inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0)) LongProfitPercent=input(0.5) ShortProfitPercent=input(0.5) LP=(LongProfitPercent/100)+1 SP=(ShortProfitPercent/100)+1 LongProfitSource=input(title="profit long source",type=input.source,defval=close) ShortProfitSource=input(title="profit short source",type=input.source,defval=close) longCondition = TSI1>TSI2 and hullma_smoothed<price and cci>0 shortCondition = TSI1<TSI2 and hullma_smoothed>price and cci<0 if (longCondition and cci>cci[1] and cci > 0 and n1>n1[1] and inDateRange) strategy.entry("buy", strategy.long) strategy.close("buy", when = shortCondition and cci<cci[1] and cci < 0 and n1<n1[1] or LongProfitSource>strategy.position_avg_price*LP and inDateRange) if (shortCondition and cci<cci[1] and cci < 0 and n1<n1[1] and inDateRange) strategy.entry("sell", strategy.short) strategy.close("sell", when = longCondition and cci>cci[1] and cci > 0 and n1>n1[1] or ShortProfitSource<strategy.position_avg_price/SP and inDateRange)