کمپریسڈ مومینٹم انڈیکیٹر پر مبنی حکمت عملی کے بعد رجحان


تخلیق کی تاریخ: 2023-11-13 17:46:01 آخر میں ترمیم کریں: 2023-11-13 17:46:01
کاپی: 0 کلکس کی تعداد: 883
1
پر توجہ دیں
1617
پیروکار

کمپریسڈ مومینٹم انڈیکیٹر پر مبنی حکمت عملی کے بعد رجحان

جائزہ

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

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

  1. برین بینڈ میں درمیانی سٹریل ، اوپری سٹریل اور نچلی سٹریل کا حساب لگائیں۔ درمیانی سٹریل n دن کے اختتامی قیمت کا ایک سادہ منتقل اوسط ہے ، اور اوپر اور نیچے سٹریل کے لئے درمیانی سٹریل کے علاوہ m گنا اختتامی قیمت کا معیاری فرق ہے۔

  2. Keltner چینل میں درمیانی لائن، اوپری لائن اور نیچے لائن کا حساب لگائیں۔ درمیانی لائن n دن کی بندش کی قیمتوں کا سادہ منتقل اوسط ہے ، اور اوپری لائن n دن کی اصل طول و عرض کا سادہ منتقل اوسط ہے جس میں میڈل لائن کو کم کرنے کے لئے m گنا اضافہ کیا گیا ہے۔

  3. یہ فیصلہ کرنے کے لئے کہ آیا قیمت نے برن بینڈ اور کیلٹنر چینل کے اوپر اور نیچے کی ٹریک کو توڑ دیا ہے ، اس میں کمپریشن اور توسیع کی شکل ہے۔ جب قیمت اوپر سے نیچے کی ٹریک کو توڑتی ہے تو یہ کمپریشن کی شکل ہے ، اور جب قیمت نیچے سے ٹریک کو توڑتی ہے تو یہ توسیع کی شکل ہے۔

  4. لکیری رجعت وکر کی عددی قدر کا حساب لگائیں ، جو حرکیات کے اشارے کے طور پر ہے۔ جب حرکیات کی لکیر پر 0 کا نشان لگایا جاتا ہے تو خریدنے کا اشارہ ہوتا ہے ، اور جب نیچے 0 کا نشان لگایا جاتا ہے تو فروخت کا اشارہ ہوتا ہے۔

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

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

  1. برن بینڈ اور کیلتنر چینل کی دوہری فلٹرنگ کا استعمال کرتے ہوئے ، اعلی معیار کی کمپریشن اور توسیع کی شکلوں کی شناخت کریں۔

  2. متحرک اشارے قیمتوں کے رجحانات کو بروقت پکڑنے کے قابل ہیں ، جو چینل اشارے کے ساتھ باہمی تعاون کرتے ہیں۔

  3. اس سے آپ کو زیادہ منافع کمانے کا موقع ملتا ہے۔

  4. متعدد شرائط پر مبنی فیصلے کا استعمال کریں اور زلزلے کے حالات میں بار بار پوزیشن کھولنے سے گریز کریں۔

  5. ہر تکنیکی اشارے کے پیرامیٹرز کو مختلف اقسام اور پیرامیٹرز کے مجموعے کے مطابق اپنی مرضی کے مطابق کیا جاسکتا ہے۔

  6. ایک مخصوص وقت کے دورانیے کے لئے اصلاحی ٹیسٹ کے لئے ایک ریٹرننگ ٹائم فریم مقرر کیا جا سکتا ہے.

اسٹریٹجک رسک

  1. رجحانات کی پیروی کی حکمت عملی ، جب رجحانات میں ردوبدل ہوتا ہے تو نقصان کا خطرہ ہوتا ہے۔

  2. پیرامیٹرز کی غلط ترتیب سے ٹرانزیکشن کی اعلی تعدد یا سگنل کی ناقص معیار کا سبب بن سکتا ہے۔

  3. اس کے علاوہ ، یہ بھی کہا گیا ہے کہ اس کے بعد سے ، اس کی واپسی کی ضمانت نہیں دی جاسکتی ہے ، کیونکہ یہ تاریخی اعداد و شمار پر منحصر ہے۔

  4. مارکیٹ میں ہنگامہ آرائی اور قیمتوں میں شدید اتار چڑھاو کا سامنا کرنا پڑتا ہے۔

  5. ریٹرننگ ٹائم ونڈو کی غلط ترتیب ، جو ممکنہ طور پر زیادہ مماثلت کا سبب بن سکتی ہے۔

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

  1. برن بیلٹ اور Keltner چینل کے پیرامیٹرز کو بہتر بنانے کے لئے بہترین مجموعہ تلاش کریں.

  2. ایک ہی تجارت میں زیادہ سے زیادہ نقصان کو کنٹرول کرنے کے لئے موبائل روکنے کا اضافہ کرنے کی جانچ پڑتال.

  3. ایک مخصوص نسل اور مدت کے پیرامیٹرز کے مجموعے کے تحت مزید اصلاح کرنے کی کوشش کریں.

  4. مشین لرننگ ماڈل کے ساتھ رجحانات کو تبدیل کرنے کے لئے تلاش کریں.

  5. مختلف داخلے کے حکم اور پوزیشن مینجمنٹ حکمت عملی کی جانچ پڑتال کریں.

  6. اس کے علاوہ ، اس نے یہ بھی سیکھا ہے کہ کس طرح رجحان کی تبدیلی کے اشارے کو پہچاننے اور وقت پر نقصان کو روکنے کے لئے.

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Strategy based on LazyBear Squeeze Momentum Indicator
//I added some custom feature and filters
//
// @author LazyBear
// List of all my indicators:
// https://docs.google.com/document/d/15AGCufJZ8CIUvwFJ9W-IKns88gkWOKBCvByMEvm5MLo/edit?usp=sharing
// v2 - fixed a typo, where BB multipler was always stuck at 1.5. [Thanks @ucsgears]
//
strategy(shorttitle = "SQZMOM_LB", title="Strategy for Squeeze Momentum Indicator [LazyBear]", overlay=false, calc_on_every_tick=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)

length = input(14, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(16, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
 
useTrueRange = input(true, title="Use TrueRange (KC)", type=bool)

//FILTERS
useExtremeOrders  = input(false, title="Early entry on momentum change", type=bool)
useMomAverage = input(false, title="Filter for Momenutum value", type=bool)
MomentumMin = input(20, title="Min for momentum")

// Calculate BB
src = close
basis = sma(src, length)
dev = mult * stdev(src, length)
upperBB = basis + dev
lowerBB = basis - dev
 
// Calculate KC
ma = sma(src, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
 
sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)
 
val = linreg(src  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)
 
bcolor = iff( val > 0,            iff( val > nz(val[1]), lime, green),            iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : aqua
plot(val, color=bcolor, style=histogram, linewidth=4)
plot(0, color=scolor, style=cross, linewidth=2)

//LOGIC
//momentum filter
filterMom=useMomAverage?abs(val)>(MomentumMin/100000)?true:false:true

//standard condition
longCondition = scolor[1]!=aqua and scolor==aqua and bcolor==lime and filterMom
exitLongCondition = bcolor==green and not useExtremeOrders
shortCondition = scolor[1]!=aqua and scolor==aqua and bcolor==red and filterMom
exitShortCondition = bcolor==maroon and not useExtremeOrders

//early entry
extremeLong= useExtremeOrders and scolor==aqua and bcolor==maroon and bcolor[1]!=bcolor[0] and filterMom
exitExtLong = scolor==black or bcolor==red
extremeShort = useExtremeOrders and scolor==aqua and bcolor==green and bcolor[1]!=bcolor[0] and filterMom
exitExtShort = scolor==black or bcolor==lime

//STRATEGY

strategy.entry("SQ_Long", strategy.long, when = longCondition)
strategy.close("SQ_Long",when = exitLongCondition )

strategy.entry("SQ_Long_Ext", strategy.long, when = extremeLong)
strategy.close("SQ_Long_Ext",when = exitExtLong)
//strategy.exit("exit Long", "SQ_Long", when = exitLongCondition)

strategy.entry("SQ_Short", strategy.short, when = shortCondition)
strategy.close("SQ_Short",when = exitShortCondition)

strategy.entry("SQ_Short_Ext", strategy.short, when = extremeShort)
strategy.close("SQ_Short_Ext",when = exitExtShort)
//strategy.exit("exit Short", "SQ_Short", when = exitShortCondition)



// // === Backtesting Dates === thanks to Trost

// testPeriodSwitch = input(true, "Custom Backtesting Dates")
// testStartYear = input(2018, "Backtest Start Year")
// testStartMonth = input(1, "Backtest Start Month")
// testStartDay = input(1, "Backtest Start Day")
// testStartHour = input(0, "Backtest Start Hour")
// testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
// testStopYear = input(2018, "Backtest Stop Year")
// testStopMonth = input(12, "Backtest Stop Month")
// testStopDay = input(14, "Backtest Stop Day")
// testStopHour = input(23, "Backtest Stop Hour")
// testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
// testPeriod() =>
//     time >= testPeriodStart and time <= testPeriodStop ? true : false
// isPeriod = testPeriodSwitch == true ? testPeriod() : true
// // === /END

// if not isPeriod
//     strategy.cancel_all()
//     strategy.close_all()