
یہ حکمت عملی میری دوسری بریکنگ ٹرینڈ ٹریکر حکمت عملی کی ایک مختلف قسم ہے۔ ایک اور حکمت عملی میں آپ ٹریڈنگ کے فلٹر کے طور پر منتقل اوسط کا استعمال کرسکتے ہیں (یعنی ، اگر قیمت اوسط سے کم ہے تو ، یہ زیادہ کام نہیں کرے گی) ۔ اعلی ٹائم فریم کے رجحانات کا پتہ لگانے کے لئے ایک ٹول تیار کرنے کے بعد ، میں یہ دیکھنا چاہتا ہوں کہ آیا یہ ایک بہتر فلٹر ہوسکتا ہے یا نہیں۔
لہذا ، یہ حکمت عملی آپ کو اعلی ٹائم فریم کے رجحانات کو دیکھنے کی اجازت دیتی ہے (یعنی کیا اس میں اعلی اونچائی اور کم کم ہے؟ اگر ایسا ہے تو ، یہ ایک بڑھتی ہوئی رجحان ہے) ۔ آپ صرف رجحان کی سمت میں پوزیشن لگاتے ہیں۔ آپ فلٹر کے طور پر زیادہ سے زیادہ دو رجحانات کا انتخاب کرسکتے ہیں۔ ہر ایک رجحان کی سمت آسانی سے حوالہ کے لئے چارٹ پر ایک ٹیبل میں دکھائی جاتی ہے۔ موجودہ سپورٹ اور مزاحمت کی پوزیشنیں چارٹ پر تیار کی گئیں ہیں تاکہ آپ دیکھ سکیں کہ موجودہ ٹائم فریم کے رجحانات اور اعلی سطح کے رجحانات کب ٹوٹ سکتے ہیں۔
میں نے محسوس کیا کہ یہ حکمت عملی عام طور پر دیگر حکمت عملیوں کے مقابلے میں اچھی کارکردگی کا مظاہرہ نہیں کرتی ہے ، لیکن ایسا لگتا ہے کہ یہ تجارت کو زیادہ چنتا ہے۔ یہ زیادہ جیت کی شرح اور بہتر منافع بخش عنصر دکھاتا ہے۔ یہ صرف تھوڑی سی تجارت لیتا ہے ، اور خالص منافع بھی اچھا نہیں ہے۔
اس حکمت عملی کا بنیادی منطق یہ ہے کہ اعلی ٹائم فریموں کو توڑنے کے لئے سپورٹ اور مزاحمت کی پوزیشنوں کا استعمال کرکے رجحانات کی نشاندہی کی جائے اور رجحانات کی سمت کے مطابق تجارت کی جائے۔
اس کے بعد ، آپ کو ایک نیا اکاؤنٹ بنانا ہوگا ، جس میں آپ کو ایک نیا اکاؤنٹ بنانا ہوگا۔
موجودہ ٹائم فریم (جیسے 1 گھنٹہ لائن) میں سپورٹ اور مزاحمت کی سطح کا حساب لگائیں۔ یہ ایک خاص دورانیے میں اعلی ترین اور کم ترین قیمتوں کی تلاش کے ذریعہ کیا جاتا ہے۔
ایک یا ایک سے زیادہ اعلی ٹائم فریموں (جیسے 4 گھنٹے کی لائن اور دن کی لائن) کے لئے سپورٹ اور مزاحمت کی پوزیشنوں کا حساب لگائیں۔ یہ موجودہ ٹائم فریم کے ساتھ اسی منطق کا استعمال کرتے ہوئے لاگو کیا گیا ہے۔
ان سپورٹ اور مزاحمت کی سطحوں کی افقی لائنوں کو چارٹ پر ڈرائنگ کریں۔ جب قیمت ان سطحوں کو توڑ دیتی ہے تو ، اعلی ٹائم فریموں میں رجحانات تبدیل ہوجاتے ہیں۔
رجحان کی سمت کا تعین اس بات سے کیا جاتا ہے کہ آیا قیمت ان اہم سطحوں کو توڑتی ہے۔ اگر قیمت ایک اعلی مقام کو توڑتی ہے تو ، اسے اوپر کا رجحان سمجھا جاتا ہے۔ اگر یہ پچھلے نچلے مقام کو توڑتی ہے تو ، اسے نیچے کا رجحان سمجھا جاتا ہے۔
صارف کو فلٹرنگ کی شرط کے طور پر ایک یا ایک سے زیادہ اعلی ٹائم فریموں کے رجحانات کو منتخب کرنے کی اجازت دینا۔ یعنی ، تجارت کو صرف اس وقت غور کیا جائے گا جب موجودہ ٹائم فریم کی رجحانات کی سمت اعلی ٹائم فریموں کی رجحانات کی سمت سے مماثل ہو۔
جب ٹرینڈ فلٹرنگ کی شرائط پوری ہوجائیں اور موجودہ قیمت کلیدی سطح کو توڑ دے تو خریدیں یا بیچیں۔ سٹاپ نقصان کی سطح کو پہلے کی اہم حمایت یا مزاحمت کی سطح کے طور پر مقرر کیا گیا ہے۔
جب قیمت چلتی ہے تو ، جب نئی اونچائی یا نچلی سطح پیدا ہوتی ہے تو ، منافع کو روکنے اور رجحانات کی پیروی کرنے کے لئے اسٹاپ نقصان کو نئی نچلی سطح پر منتقل کردیا جاتا ہے۔
جب اسٹاپ نقصان کا سبب بنتا ہے یا اہم معاونت / مزاحمت کی سطح کو توڑ دیا جاتا ہے تو ، خالی پوزیشن سے باہر نکلیں۔
اس طرح کے کثیر وقتی فریم کے رجحانات کے تجزیے کے ذریعہ ، حکمت عملی جیتنے کے امکانات کو بڑھانے کے لئے صرف مضبوط ترین رجحانات کی سمت میں تجارت کرنے کی کوشش کرتی ہے۔ اس کے ساتھ ہی ، اہم سطح واضح اندراج اور اسٹاپ نقصان سگنل فراہم کرتی ہے۔
ایک سے زیادہ ٹائم فریموں کا استعمال کرتے ہوئے رجحانات کا تعین کرنے کے لئے، آپ کو مارکیٹ کے شور سے گمراہ ہونے سے بچنے کے لئے مضبوط رجحانات کی سمتوں کو زیادہ درست طریقے سے شناخت کر سکتے ہیں.
صرف اہم رجحانات کی سمت میں کام کرنے سے جیت کی شرح میں نمایاں اضافہ ہوسکتا ہے۔ ٹیسٹ کے نتائج کے مطابق ، یہ حکمت عملی سادہ منتقل اوسط فلٹرنگ کے مقابلے میں زیادہ جیت اور بہتر منافع رسک تناسب ظاہر کرتی ہے۔
سپورٹ اور مزاحمت کی پوزیشنوں میں واضح انٹری اور سٹاپ نقصان کی سطح فراہم کرتی ہے۔ آپ کو مخصوص انٹری پوائنٹس کے انتخاب کو پیچیدہ کرنے کی ضرورت نہیں ہے۔
جب ٹریڈ چلتا ہے تو اسٹاپ نقصان کی پوزیشن کو ایڈجسٹ کریں تاکہ زیادہ سے زیادہ منافع کو لاک کیا جاسکے۔
حکمت عملی کی منطق سادہ اور واضح ہے، سمجھنے اور ایڈجسٹ کرنے میں آسان ہے۔
طویل لکیری حصوں پر انحصار کرنے والے رجحان کا فیصلہ ، جب رجحان الٹ جاتا ہے تو اس کا احاطہ کرنا آسان ہوتا ہے۔ رجحان کا فیصلہ کرنے کے لئے وقت کی مدت کو مناسب طریقے سے کم کیا جانا چاہئے ، یا دوسرے اشارے کا معاون فیصلہ استعمال کیا جانا چاہئے۔
بنیادی اثرات کو مدنظر نہ رکھتے ہوئے ، اہم واقعات کے وقت اسٹاک کی قیمتوں میں انحراف ہوسکتا ہے۔ اے ٹی ایم واقعات یا آمدنی کی تاریخ جیسے فلٹر شرائط شامل کی جاسکتی ہیں۔
کوئی پوزیشن اسکیل کنٹرول نہیں ہے۔ آپ اپنے اکاؤنٹ کی رقم کی مقدار ، اتار چڑھاؤ کی شرح اور دیگر عوامل کے مطابق پوزیشن کا سائز مقرر کرسکتے ہیں۔
ریٹرننگ وقت کی حد محدود ہے۔ مختلف مارکیٹ کے حالات میں استحکام کی جانچ کے لئے ریٹرننگ کی مدت کو بڑھایا جانا چاہئے۔
ٹرانزیکشن لاگت کے اثرات کو مدنظر نہیں رکھا گیا ہے۔ حکمت عملی کے پیرامیٹرز کو اصل میں ٹرانزیکشن لاگت کے مطابق ایڈجسٹ کیا جانا چاہئے۔
صرف لانگ لائن ٹریڈنگ پر غور کریں۔ دیگر حکمت عملیوں کے ساتھ مل کر شارٹ لائن ٹریڈنگ سگنل تیار کیا جاسکتا ہے ، جس سے کثیر دورانیہ کی سودے بازی ہوسکتی ہے۔
فلٹر کی شرائط شامل کریں:
بنیادی اعداد و شمار جیسے مالیاتی رپورٹیں، خبریں اور واقعات
اشارے، جیسے ٹرانزیکشن حجم، اے ٹی آر سٹاپ نقصان، وغیرہ
اصلاح کے پیرامیٹرز:
ایڈجسٹمنٹ سپورٹ / مزاحمت بٹ حساب کتاب کی مدت
ٹرینڈ کے فیصلے کو ایڈجسٹ کرنے کا ٹائم فریم
حکمت عملی کو وسعت دیں:
شارٹ لائن ٹریڈنگ کی حکمت عملی تیار کرنا
فروخت پر غور کریں
کثیر اقسام کا سود
خطرے کے انتظام میں بہتری:
اتار چڑھاو اور فنڈز کے سائز کے مطابق پوزیشنوں کا سائز بہتر بنائیں
آپٹمائزڈ سٹاپ اسٹریٹجیز جیسے کہ موبائل سٹاپ، لنگوٹ سٹاپ وغیرہ
خطرے کے انعامات اور سزا کا نظام متعارف کرانا
لاگو کرنے کے منطق کو بہتر بنائیں:
ٹائم لائن میں تبدیلی
کچھ پوزیشنوں پر غور کریں
آپٹمائزڈ سٹاپ نقصان کی حکمت عملی
اس حکمت عملی نے ایک سے زیادہ ٹائم فریم کے رجحانات کا تجزیہ کرکے ایک زیادہ مضبوط بریک سسٹم ڈیزائن کیا ہے۔ اس میں سادہ حرکت پذیر اوسط جیسے اشارے فلٹر کیے گئے ہیں۔ اس میں جیت اور منافع کے خطرے کا تناسب زیادہ دکھایا گیا ہے۔ لیکن کچھ ایسے پہلو بھی ہیں جن کو بہتر بنایا جاسکتا ہے ، جیسے خطرے کے انتظام کا طریقہ کار نامکمل ہے ، بنیادی عوامل کو مدنظر نہیں رکھا گیا ہے۔ اگر مزید اصلاح کی جائے تو ، یہ ایک بہت ہی عملی رجحانات سے باخبر رہنے کی حکمت عملی بن سکتی ہے۔ مجموعی طور پر ، اس حکمت عملی کو مناسب طریقے سے ڈیزائن کیا گیا ہے ، جس میں کثیر وقتی فریم تجزیہ کے ذریعہ فیصلہ کی درستگی کو بہتر بنایا گیا ہے ، اور مزید تحقیق اور اطلاق کے قابل ہے۔
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-26 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Revision: 1
// Author: @millerrh
// Strategy: Enter long when recent swing high breaks out, using recent swing low as stop level. Move stops up as higher lows print to act
// as trailing stops. Ride trend as long as it is there and the higher lows aren't breached.
// The difference between this one and the previous Breakout Trend Follower is that this one uses higher timeframe higher highs/higher lows as a filter instead
// of an arbitrary Moving Average. I wanted to test out whether waiting for longer term actual trend changes produced better stats than just the moving average.
// Conditions/Variables
// 1. Manually configure which dates to back test
// 2. Can add a filter to only take setups that are above (or below for shorts) user-defined larger timeframe trends (helps avoid trading counter trend)
// === CALL STRATEGY/STUDY, PROGRAMATICALLY ENTER STRATEGY PARAMETERS HERE SO YOU DON'T HAVE TO CHANGE THEM EVERY TIME YOU RUN A TEST ===
// (STRATEGY ONLY) - Comment out srategy() when in a study()
strategy("Breakout Trend Follower V2", overlay=true, initial_capital=10000, currency='USD',
default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
// (STUDY ONLY) - Comment out study() when in a strategy()
//study("Breakout Trend Follower V2", overlay=true)
// === BACKTEST RANGE ===
Start = input(defval = timestamp("01 Jan 2019 06:00 +0000"), title = "Backtest Start Date", type = input.time, group = "Backtest Range")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", type = input.time, group = "Backtest Range")
// == USER INPUTS ==
tableLocation = input(defval="Top", options=["Top", "Bottom"], title = "Info Table Location", group = "Display",
tooltip = "Place information table on the top of the pane or the bottom of the pane.")
lookback = input(defval = 3, title = "Pivot Lookback Period", group = "Pivot Points",
tooltip = "Looks for pivot points within this number of bars both left and right.")
showPivotPoints = input(title = "Show Historical Pivot Points?", type = input.bool, defval = false, group = "Pivot Points",
tooltip = "Toggle this on to see the historical pivot points that were used. Change the Lookback Period to adjust the frequency of these points.
The pivot points are only shown for the current chart timeframe - to see the Daily pivot pionts, use the Daily timeframe, etc.")
trendFilter = input(defval="1st Timeframe", options=["1st Timeframe", "Both Timeframes", "None"], title = "Use HTF Trend for Filtering?", group = "Higher Timeframe Levels",
tooltip = "Signals will be ignored when price is not aligned with the higher timeframe trend(s). The intent is to keep you out of bear periods and only buying when
price is showing strength and you are trading with the trend.")
twoSet = input(defval="D", title="1st High Timeframe", type=input.resolution, group = "Higher Timeframe Levels",
tooltip = "Allows you to set two different time frames for looking at the trend.")
threeSet = input(defval="W", title="2nd High Timeframe", type=input.resolution, group = "Higher Timeframe Levels")
showMTFLevels = input(title = "Show Multiple Timeframe S/R Levels?", type = input.bool, defval = true, group = "Higher Timeframe Levels",
tooltip = "Displays the pivot highs and lows of higher timeframes to use as support/resistance levels. When these levels break, the trend
will change on these higher timeframes.")
currentColorS = input(color.new(color.orange,50), title = "Current Timeframe Support", type = input.color, group = "Higher Timeframe Levels", inline = "MTF1")
currentColorR = input(color.new(color.blue,50), title = " Resistance", type = input.color, group = "Higher Timeframe Levels", inline = "MTF1")
oneColorS = input(color.new(color.yellow,50), title = "1st High Timeframe Support", type = input.color, group = "Higher Timeframe Levels", inline = "MTF2")
oneColorR = input(color.new(color.yellow,50), title = " Resistance", type = input.color, group = "Higher Timeframe Levels", inline = "MTF2")
twoColorS = input(color.new(color.white,50), title = "2nd High Timeframe Support", type = input.color, group = "Higher Timeframe Levels", inline = "MTF3")
twoColorR = input(color.new(color.white,50), title = " Resistance", type = input.color, group = "Higher Timeframe Levels", inline = "MTF3")
// == DEFINE FUNCTIONS FOR USE IN MULTIPLE TIMEFRAMES (USING A TUPLE TO AVOID SO MANY SECURITY CALLS) ==
f_getHTF() =>
ph = pivothigh(high, lookback, lookback)
pl = pivotlow(low, lookback, lookback)
highLevel = valuewhen(ph, high[lookback], 0)
lowLevel = valuewhen(pl, low[lookback], 0)
barsSinceHigh = barssince(ph) + lookback
barsSinceLow = barssince(pl) + lookback
timeSinceHigh = time[barsSinceHigh]
timeSinceLow = time[barsSinceLow]
[ph, pl, highLevel, lowLevel, barsSinceHigh, barsSinceLow, timeSinceHigh, timeSinceLow]
[ph_01, pl_01, hL_01, lL_01, bsSH_01, bsSL_01, tSH_01, tSL_01] = security(syminfo.tickerid, "", f_getHTF())
[ph_02, pl_02, hL_02, lL_02, bsSH_02, bsSL_02, tSH_02, tSL_02] = security(syminfo.tickerid, twoSet, f_getHTF())
[ph_03, pl_03, hL_03, lL_03, bsSH_03, bsSL_03, tSH_03, tSL_03] = security(syminfo.tickerid, threeSet, f_getHTF())
// Plot historical pivot points for debugging and configuring the lookback period.
plot(showPivotPoints ? ph_01 : na, style=plot.style_cross, linewidth=3, color=color.new(color.yellow,50), offset=-lookback)
plot(showPivotPoints ? pl_01 : na, style=plot.style_cross, linewidth=3, color=color.new(color.yellow,50), offset=-lookback)
// == PLOT SUPPORT/RESISTANCE LINES ON THE HIGHER TIMEFRAMES ==
// Use a function to define the lines
f_line(x1, y1, y2, _color) =>
var line id = na
// line.delete(id)
// id := line.new(x1, y1, time, y2, xloc.bar_time, extend.right, _color)
// 1st Timeframe
highLine1 = showMTFLevels ? f_line(tSH_01, hL_01, hL_01, currentColorR) : na
lowLine1 = showMTFLevels ? f_line(tSL_01, lL_01, lL_01, currentColorS) : na
// 2nd Timeframe
highLine2 = showMTFLevels ? f_line(tSH_02, hL_02, hL_02, oneColorR) : na
lowLine2 = showMTFLevels ? f_line(tSL_02, lL_02, lL_02, oneColorS) : na
// 3rd Timeframe
highLine3 = showMTFLevels ? f_line(tSH_03, hL_03, hL_03, twoColorR) : na
lowLine3 = showMTFLevels ? f_line(tSL_03, lL_03, lL_03, twoColorS) : na
// == TREND CALCULATIONS (USING A TUPLE TO CONSOLIDATE REPETATIVE CODE AND GENERATE MULTIPE VARIABLES WITH ONE FUNCTION ==
f_signal(highLevel, lowLevel) =>
uptrendSignal = high > highLevel
downtrendSignal = low < lowLevel
inUptrend = bool(na)
inDowntrend = bool(na)
inUptrend := uptrendSignal[1] ? true : downtrendSignal[1] ? false : inUptrend[1]
inDowntrend := not inUptrend
[uptrendSignal, downtrendSignal, inUptrend, inDowntrend]
[uptrendSignal1, downtrendSignal1, inUptrend1, inDowntrend1] = f_signal(hL_01, lL_01) // 1st Timeframe
[uptrendSignal2, downtrendSignal2, inUptrend2, inDowntrend2] = f_signal(hL_02, lL_02) // 2nd Timeframe
[uptrendSignal3, downtrendSignal3, inUptrend3, inDowntrend3] = f_signal(hL_03, lL_03) // 3rd Timeframe
// == TREND TABLE PLOTTING ==
tablePos = tableLocation == "Top" ? position.top_right : position.bottom_right
var table trendTable = table.new(tablePos, 3, 1, border_width = 3)
upColor = color.rgb(38, 166, 154)
downColor = color.rgb(240, 83, 80)
f_fillCell(_column, _row, _cellText, _c_color) =>
table.cell(trendTable, _column, _row, _cellText, bgcolor = color.new(_c_color, 70), text_color = _c_color, width = 6)
if barstate.islast or barstate.islastconfirmedhistory
f_fillCell(0, 0, inUptrend1 ? "▲" : "▼", inUptrend1 ? upColor : downColor)
f_fillCell(1, 0, inUptrend2 ? "▲ " + twoSet : "▼ " + twoSet, inUptrend2 ? upColor : downColor)
f_fillCell(2, 0, inUptrend3 ? "▲ " + threeSet : "▼ " + threeSet, inUptrend3 ? upColor : downColor)
// Conditions for entry and exit
buyConditions = true
buySignal = high > hL_01 and buyConditions // Code to act like a stop-buy for the Study
sellSignal = low < lL_01 // Code to act like a stop-loss for the Study
// (STRATEGY ONLY) Comment out for Study
strategy.entry("Long", strategy.long, stop = hL_01, when = buyConditions)
// strategy.entry("Long", strategy.long, stop = buyLevel2, when = time > Start and time < Finish and high > maFilterCheck)
strategy.exit("Exit Long", from_entry = "Long", stop=lL_01)