
یہ حکمت عملی موجودہ رجحان کی سمت کا تعین کرنے کے لئے تین تکنیکی اشارے کا استعمال کرتی ہے ، جس میں برن بینڈ ، کینٹینر چینل اور خود سے متعلق نسبتا strong مضبوط اشارے شامل ہیں ، اور پیرالائٹ لائن ایس اے آر اشارے کے ساتھ مل کر داخل ہوتا ہے۔ جب تینوں اشارے کے فیصلے کے نتائج متفق ہوتے ہیں تو تجارتی سگنل پیدا ہوتا ہے۔ حکمت عملی بنیادی طور پر رجحان کی سمت کا تعین کرتی ہے ، جب رجحان بدل جاتا ہے تو بروقت داخل ہوتا ہے ، اور منافع کمانے کا ہدف ہوتا ہے۔
اس حکمت عملی میں تین تکنیکی اشارے کا مجموعہ استعمال کیا گیا ہے جو موجودہ رجحانات کا اندازہ کرنے کے لئے استعمال کیا جاتا ہے:
اسکوائز مومینٹم انڈیکیٹر (SQUEEZE MOMENTUM INDICATOR): برین بینڈ اور کینٹنا چینل کا حساب لگاتا ہے ، جب دونوں ایک دوسرے پر ڈھل جاتے ہیں تو کمپریشن پیدا ہوتا ہے ، جس سے یہ اشارہ ہوتا ہے کہ رجحان میں تبدیلی آرہی ہے۔ یہ اشارے کمپریشن کی حالت اور لکیری واپسی کی منحنی خطوط کی جھلک کو واپس کرتا ہے۔
نسبتاً مضبوط کمزور انڈیکس ((RSI VOLUME WEIGHTED): RSI کا حساب لگایا جاتا ہے جس میں حجم وزن ہوتا ہے ، اور اس کا اندازہ لگانے کے لئے درمیانی لائن کا استعمال کیا جاتا ہے۔ یہ اشارے حجم میں تبدیلی پر زور دیتا ہے۔
پیرال لائن اسٹاپ نقصان ((SAR): موجودہ قیمت اور پیرال لائن SAR کے مقام کے مابین تعلقات کا اندازہ لگائیں ، SAR قیمت کے اوپر نیچے ہے ، SAR قیمت کے نیچے اوپر ہے۔
حکمت عملی کا استعمال کرتے ہوئے برن بینڈ کی طرف سے رجحان کی سمت کا تعین کرنے کے لئے، کینٹنا کوریج ریفائن، آر ایس آئی کا تعین کرنے کے لئے overbought اور oversold واپسی کے مواقع تلاش کرنے کے لئے، SAR اشارہ کرنے کے لئے وقت میں داخل ہونے کے لئے.
برین بینڈ ، کینٹنا چینل ، اور سکویز اشارے کا حساب لگائیں۔ سکویز کمپریشن کے وقت تیاری کے مرحلے میں داخل ہوتا ہے۔
RSI کا حساب لگائیں۔ RSI وسط لائن بیئر سے اوپر اور وسط لائن بیئر سے نیچے ہے۔
پیرا لائن SAR کی حساب لگائیں۔ SAR قیمت کے نیچے بڑھتا ہے اور قیمت کے اوپر گرتا ہے۔
مذکورہ بالا تینوں اشارے کو یکجا کریں: جب سکویز کمپریسڈ ہوتا ہے تو ، آر ایس آئی وسط لائن سے اوپر ہوتا ہے اور ایس اے آر قیمت کے نیچے ہوتا ہے تو ایک کثیر سگنل پیدا ہوتا ہے۔ جب سکویز کمپریسڈ ہوتا ہے تو ، آر ایس آئی وسط لائن سے نیچے ہوتا ہے اور ایس اے آر قیمت کے اوپر ہوتا ہے تو ایک خالی سگنل پیدا ہوتا ہے۔
جب سگنل پیدا ہوتا ہے تو ، پچھلے K لائن کے تین اشارے کے فیصلے کے نتائج کا فیصلہ کریں ، اگر موجودہ سگنل کے فیصلے کے برعکس ہو تو ، داخلہ سگنل پیدا کریں۔
داخلہ کے بعد اسٹاپ نقصان کا تعین کریں ، اسٹاپ نقصان کو ٹریک کریں۔
یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:
ایک سے زیادہ اشارے کے جوڑے میں بیعانہ اور بیعانہ ، درست فیصلے۔ سکویز اشارے رجحان کی تبدیلی کو درست طریقے سے پہچانتے ہیں ، آر ایس آئی کے فیصلے میں اوور بیئر اور اوور سیل واضح ہے ، ایس اے آر اشارے میں داخل ہونے کا وقت درست ہے۔
انڈیکیٹر کی منطق سادہ اور واضح ہے اور اسے آسانی سے سمجھا جا سکتا ہے۔
ملٹی اشارے کی توثیق کا استعمال کرتے ہوئے ، جعلی توڑنے کو فلٹر کریں۔
اس کے علاوہ ، اس میں اسٹاپ لاسٹ اسٹاپ میکانیزم ہے ، جو منافع کو لاک کرنے اور خطرے کو کنٹرول کرنے کے لئے استعمال ہوتا ہے۔
اس کے علاوہ ، یہ بھی کہا گیا ہے کہ اس نے بہت زیادہ ڈیٹا اکٹھا کیا ہے۔
اس حکمت عملی کے کچھ خطرات بھی ہیں:
کثیر سر اور خالی سر داخلہ منطق کی طرح، ایک ہی وقت میں ریورس سگنل بھیج سکتا ہے، فلٹرنگ کی ضرورت ہوتی ہے۔
تینوں اشارے پیرامیٹرز کی اصلاح کا استعمال کرتے ہیں اور ممکنہ طور پر زیادہ فٹ بیٹھتے ہیں۔
تجارت کی کثرت سے ، پوزیشنوں کی تعداد کو مناسب طریقے سے کنٹرول کرنا چاہئے۔
نقصان کی روک تھام کی ترتیبات بہت قریب ہوسکتی ہیں اور ان کو توڑنے کے لئے آسان ہے.
اس کا حل یہ ہے:
اشارے کے نتائج کو مستقل طور پر طے کرنے میں اضافہ کریں ، سگنل کے اتار چڑھاؤ سے بچیں۔
واک فارورڈ تجزیہ کا استعمال کرتے ہوئے ، پیرامیٹرز کو ایڈجسٹ کریں ، اور اوور فٹ ہونے سے بچیں۔
پیراڈائم سائز کو ترتیب دیں اور ایک طرفہ ہولڈنگ کی تعداد کو کنٹرول کریں۔
مختلف سٹاپ نقصان کی حدود کی جانچ اور سٹاپ نقصان کی پوزیشن کو بہتر بنانے کے لئے۔
اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
انڈیکس پیرامیٹرز کو بہتر بنائیں ، پیرامیٹرز کی استحکام کو بہتر بنائیں۔ متحرک اصلاحی پیرامیٹرز پر غور کیا جاسکتا ہے۔
پوزیشن کنٹرول منطق کو شامل کریں ، جیسے بڑے اور چھوٹے پوزیشن ، اوسط پوزیشن وغیرہ۔
مختلف نقصانات کی جانچ کریں ، جیسے اتار چڑھاؤ کی روک تھام ، لکیری نقصانات ، صفر پوزیشن وغیرہ۔
اضافی رقم کے انتظام کی خصوصیات جیسے فکسڈ پوزیشن ، فکسڈ فنڈز کے استعمال کی شرح ، وغیرہ۔
مشین لرننگ الگورتھم کے ساتھ مل کر متحرک انٹری اور آؤٹ پٹ۔
ہیجنگ کے نظام کو بڑھانا ، زیادہ سے زیادہ ڈیفالٹ ہیجنگ کرنا ، اور منسلک مارکیٹوں میں سسٹم کے خطرے کو کم کرنا۔
اس کے علاوہ ، اس میں مزید اشارے شامل کرنے ، ووٹنگ کا طریقہ کار بنانے اور فیصلے کی درستگی کو بہتر بنانے کے بارے میں بھی غور کیا گیا ہے۔
اس حکمت عملی کا مجموعی نظریہ واضح ہے ، جس میں متعدد اشارے ہیں جو رجحان کی سمت کا تعین کرنے کے لئے استعمال کیے جاتے ہیں ، بروئنگ بینڈ چینل کمپریشن کے وقت فوری طور پر داخل ہوتا ہے ، اور روک تھام کے طریقہ کار کو روکنے کے خطرے کو روکتا ہے۔ یہ ایک نسبتا stable مستحکم رجحان کی پیروی کرنے والی حکمت عملی ہے۔ پیرامیٹرز کو بہتر بنانے ، خطرے کے کنٹرول کے طریقہ کار کو بہتر بنانے کے ذریعے ، بہتر پیمائش کے اشارے اور ٹھوس اثر حاصل کیا جاسکتا ہے۔ یہ حکمت عملی رجحانات کے زیادہ واضح قسم کے لئے موزوں ہے ، اور یہ بھی غور کیا جاسکتا ہے کہ نسبتا stable مستحکم بڑے دورانیے جیسے سورج کی روشنی میں کام کیا جائے۔ مجموعی طور پر ، اس حکمت عملی کی عملی قدر زیادہ ہے۔
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © XaviZ
//#####©ÉÉÉɶN###############################################
//####*..´´´´´´,,,»ëN########################################
//###ë..´´´´´´,,,,,,''%©#####################################
//###'´´´´´´,,,,,,,'''''?¶###################################
//##o´´´´´´,,,,,,,''''''''*©#################################
//##'´´´´´,,,,,,,'''''''^^^~±################################
//#±´´´´´,,,,,,,''''''''^í/;~*©####æ%;í»~~~~;==I±N###########
//#»´´´´,,,,,,'''''''''^;////;»¶X/í~~/~~~;=~~~~~~~~*¶########
//#'´´´,,,,,,''''''''^^;////;%I^~/~~/~~~=~~~;=?;~~~~;?ë######
//©´´,,,,,,,''''''''^^~/////X~/~~/~~/~~»í~~=~~~~~~~~~~^;É####
//¶´,,,,,,,''''''''^^^;///;%;~/~~;í~~»~í?~?~~~?I/~~~~?*=íÑ###
//N,,,,,,,'''''''^^^^^///;;o/~~;;~~;£=»í»;IX/=~~~~~~^^^^'*æ##
//#í,,,,,''''''''^^^^^;;;;;o~»~~~~íX//~/»~;í?IíI»~~^/*?'''=N#
//#%,,,'''''''''^^^^^^í;;;;£;~~~//»I»/£X/X/»í*&~~~^^^^'^*~'É#
//#©,,''''''''^^^^^^^^~;;;;&/~/////*X;í;o*í»~=*?*===^'''''*£#
//##&''''''''^^^^^^^^^^~;;;;X=í~~~»;;;/~;í»~»±;^^^^^';=''''É#
//##N^''''''^^^^^^^^^^~~~;;;;/£;~~/»~~»~~///o~~^^^^''''?^',æ#
//###Ñ''''^^^^^^^^^^^~~~~~;;;;;í*X*í»;~~IX?~~^^^^/?'''''=,=##
//####X'''^^^^^^^^^^~~~~~~~~;;íííííí~~í*=~~~~Ií^'''=''''^»©##
//#####£^^^^^^^^^^^~~~~~~~~~~~íííííí~~~~~*~^^^;/''''='',,N###
//######æ~^^^^^^^^~~~~~~~~~~~~~~íííí~~~~~^*^^^'=''''?',,§####
//########&^^^^^^~~~~~~~~~~~~~~~~~~~~~~~^^=^^''=''''?,íN#####
//#########N?^^~~~~~~~~~~~~~~~~~~~~~~~~^^^=^''^?''';í@#######
//###########N*~~~~~~~~~~~~~~~~~~~~~~~^^^*'''^='''/É#########
//##############@;~~~~~~~~~~~~~~~~~~~^^~='''~?'';É###########
//#################É=~~~~~~~~~~~~~~^^^*~'''*~?§##############
//#####################N§£I/~~~~~~»*?~»o§æN##################
//@version=4
strategy(title="M-SQUEEZE", overlay = true)
//study(title="M-SQUEEZE", overlay = true)
src = input(close, "SOURCE", type = input.source)
// ███▓▒░░ VARIABLES ░░▒▓███
var bool longCond = na, var bool shortCond = na
var int CondIni_long0 = 0, var int CondIni_short0 = 0
var int CondIni_long = 0, var int CondIni_short = 0
var float last_open_longCondition = na, var float last_open_shortCondition = na
var int last_longCondition0 = na, var int last_shortCondition0 = na
var int last_longCondition = na, var int last_shortCondition = na
var bool long_tp = na, var bool short_tp = na
var int last_long_tp = na, var int last_short_tp = na
var bool Final_Long_tp = na, var bool Final_Short_tp = na
var bool SMI_longCond = na, var bool SMI_shortCond = na
var bool RSI_longCond = na, var bool RSI_shortCond = na
var bool ADX_longCond = na, var bool ADX_shortCond = na
var bool SAR_longCond = na, var bool SAR_shortCond = na
var bool Final_longCondition0 = na, var bool Final_shortCondition0 = na
var bool Final_longCondition = na, var bool Final_shortCondition = na
// ███▓▒░░ SQUEEZE MOMENTUM INDICATOR ░░▒▓███
Act_SMI = input(true, "SQUEEZE MOMENTUM INDICATOR")
BB_length = input(85, title="BOLLINGER BANDS LENGTH", minval = 1)
BB_mult = input(2.1, title="BOLLINGER BANDS MULTI-FACTOR", minval = 0.1, step = 0.1)
KC_length = input(38, title="KELTNER CHANNEL LENGTH", minval = 1)
KC_mult = input(2.0, title="KELTNER CHANNEL MULTI-FACTOR", minval = 0.1, step = 0.1)
SQUEEZE_M(_src,_BB_length,_BB_mult,_KC_length,_KC_mult)=>
// Calculate BB
basis = sma(_src, _BB_length)
dev = _BB_mult * stdev(_src, _BB_length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(src, _KC_length)
rangema = sma(tr, _KC_length)
upperKC = ma + rangema * _KC_mult
lowerKC = ma - rangema * _KC_mult
// Squeeze
sqzOn = lowerBB > lowerKC and upperBB < upperKC
sqzOff = lowerBB < lowerKC and upperBB > upperKC
nosqz = sqzOn == false and sqzOff == false
// Linear Regression curve
val = linreg(_src - avg(avg(highest(high, _KC_length), lowest(low, _KC_length)), sma(close, _KC_length)), _KC_length, 0)
[nosqz,val]
[NOSQZ,VAL] = SQUEEZE_M(src,BB_length,BB_mult,KC_length,KC_mult)
barcolor(iff(VAL > 0, iff(VAL > nz(VAL[1]), color.lime, color.green), iff(VAL < nz(VAL[1]), color.red, color.maroon)))
// ███▓▒░░ SAR ░░▒▓███
Act_SAR = input(true, "PARABOLIC SAR")
Sst = input (0.73, "SAR STAR", step=0.01, minval = 0.01)
Sinc = input (0.5, "SAR INC", step=0.01, minval = 0.01)
Smax = input (0.06, "SAR MAX", step=0.01, minval = 0.01)
SAR = sar(Sst, Sinc, Smax)
plot(SAR, style = plot.style_cross, title = "SAR")
// ███▓▒░░ RSI VOLUME WEIGHTED ░░▒▓███
Act_RSI = input(true, "RSI VOLUME WEIGHTED")
RSI_len = input(22, "RSI LENGHT", minval = 1)
RSI_obos = input(45,title="RSI CENTER LINE", type=input.integer, minval = 1)
WiMA(_src, _length)=>
var float MA_s=0.0
MA_s:=(_src + nz(MA_s[1] * (_length-1)))/_length
MA_s
RSI_Volume(fv, length)=>
up=iff(fv>fv[1],abs(fv-fv[1])*volume,0)
dn=iff(fv<fv[1],abs(fv-fv[1])*volume,0)
upt=WiMA(up,length)
dnt=WiMA(dn,length)
100*(upt/(upt+dnt))
RSI_V = RSI_Volume(src, RSI_len)
// ███▓▒░░ STRATEGY ░░▒▓███
SMI_longCond := (Act_SMI ? (VAL > 0 and (VAL > nz(VAL[1])) and not NOSQZ) : RSI_longCond)
RSI_longCond := (Act_RSI ? (RSI_V > RSI_obos) : SAR_longCond)
SAR_longCond := (Act_SAR ? (SAR < close) : SMI_longCond)
SMI_shortCond := (Act_SMI ? (VAL < 0 and (VAL < nz(VAL[1])) and not NOSQZ) : RSI_shortCond)
RSI_shortCond := (Act_RSI ? (RSI_V < RSI_obos) : SAR_shortCond)
SAR_shortCond := (Act_SAR ? (SAR > close) : SMI_shortCond)
longCond := SMI_longCond and RSI_longCond and SAR_longCond
shortCond := SMI_shortCond and RSI_shortCond and SAR_shortCond
CondIni_long0 := longCond ? 1 : shortCond ? -1 : CondIni_long0[1]
CondIni_short0 := longCond ? 1 : shortCond ? -1 : CondIni_short0[1]
longCondition0 = (longCond and CondIni_long0[1] == -1)
shortCondition0 = (shortCond and CondIni_short0[1] == 1)
CondIni_long := longCond[1] ? 1 : shortCond[1] ? -1 : CondIni_long[1]
CondIni_short := longCond[1] ? 1 : shortCond[1] ? -1 : CondIni_short[1]
longCondition = (longCond[1] and CondIni_long[1] == -1)
shortCondition = (shortCond[1] and CondIni_short[1] == 1)
// ███▓▒░░ ALERTS & SIGNALS ░░▒▓███
plotshape(longCondition, title = "Long Signal", style = shape.triangleup, location = location.belowbar, color = color.blue, transp = 0, size = size.tiny)
plotshape(shortCondition, title = "Short Signal", style = shape.triangledown, location = location.abovebar, color = #FF0000, transp = 0, size = size.tiny)
//alertcondition(longCondition, title="Long Alert", message = "LONG")
//alertcondition(shortCondition, title="Short Alert", message = "SHORT")
// ███▓▒░░ BACKTESTING ░░▒▓███
testStartYear = input(2018, "BACKTEST START YEAR", minval = 1980, maxval = 2222)
testStartMonth = input(01, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2222, "BACKTEST STOP YEAR", minval=1980, maxval = 2222)
testStopMonth = input(12, "BACKTEST STOP MONTH", minval=1, maxval=12)
testStopDay = input(31, "BACKTEST STOP DAY", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod = time >= testPeriodStart and time <= testPeriodStop ? true : false
strategy.entry("Long", strategy.long, when = longCondition0 and testPeriod)
strategy.entry("Short", strategy.short, when = shortCondition0 and testPeriod)