مومنٹم سکیز بریک آؤٹ ٹرینڈ ٹریکنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-13 17:46:01
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

  2. کلٹنر چینلز کی درمیانی لائن ، اوپری لائن اور نچلی لائن کا حساب لگائیں۔ درمیانی لائن قریبی قیمت کی n دن کی سادہ چلتی اوسط ہے ، اوپری اور نچلی لائنیں درمیانی لائن پلس / مائنس ایم گنا حقیقی رینج کی n دن کی سادہ چلتی اوسط ہیں۔

  3. اس بات کا تعین کریں کہ کیا قیمت بولنگر بینڈ اور کیلنر چینلز کے اوپری یا نچلے بینڈ سے ٹوٹ کر کمپریشن اور توسیع کے نمونوں کی تشکیل کرتی ہے۔ کمپریشن اس وقت ہوتا ہے جب قیمت نچلے بینڈ سے ٹوٹ جاتی ہے ، جبکہ قیمت اوپری بینڈ سے ٹوٹنے پر توسیع ہوتی ہے۔

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

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

حکمت عملی کے فوائد

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

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

  3. منافع کے مواقع بڑھانے کے لیے ابتدائی داخلے کی اجازت دیں۔

  4. Adopt multiple condition judgment to avoid over-trading during ranging markets. مختلف مارکیٹوں کے دوران زیادہ سے زیادہ تجارت سے بچنے کے لئے متعدد شرائط کا فیصلہ کریں۔

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

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

اسٹریٹجی کے خطرات

  1. رجحان کی پیروی کرنے والی حکمت عملیاں رجحان کے الٹ جانے پر نقصان کا شکار ہوتی ہیں۔

  2. پیرامیٹر کی غلط ترتیبات سے زیادہ تجارت یا سگنل کی خراب کیفیت پیدا ہوسکتی ہے۔

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

  4. بلیک سوان واقعات کی وجہ سے مارکیٹ میں ہلچل اور شدید قیمتوں میں اتار چڑھاؤ سے نمٹنے کے قابل نہیں.

  5. غلط backtest وقت ونڈو کی ترتیبات overfitting کی قیادت کر سکتے ہیں.

اصلاح کی ہدایات

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

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

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

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

  5. مختلف انٹری ترتیب اور پوزیشن سائزنگ کی حکمت عملی کی جانچ کریں.

  6. تحقیق کریں کہ کس طرح رجحان کی تبدیلی کے اشاروں کی نشاندہی کریں اور وقت پر باہر نکلیں۔

خلاصہ

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


/*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()
        



مزید