
لمحہ توڑنے والی تجارتی حکمت عملی ایک رجحان کی پیروی کرنے والی حکمت عملی ہے جو اہم معاون مزاحمت کی سطح کو توڑنے کی قیمت کا پتہ لگانے کے ذریعہ تجارتی سگنل تیار کرتی ہے۔ اس حکمت عملی میں اہم معاون مزاحمت کی سطح کا تعین کرنے کے لئے ڈونچیئن چینل اشارے کی متحرکات کا استعمال کیا جاتا ہے ، اور حرکت پذیر اوسط اشارے کے ساتھ مل کر سگنل کو مزید فلٹر کرنے سے بچنے کے لئے غلط تجارت سے بچنے کے لئے استعمال کیا جاتا ہے۔
اس حکمت عملی کا بنیادی اشارے ڈونچیئن چینل ہے۔ ڈونچیئن چینل اعلی ، کم اور درمیانی قیمتوں پر مشتمل ہے۔ چینل کے اوپر اور نیچے کی لکیریں بالترتیب ایک خاص دورانیے میں اعلی ترین اور کم ترین قیمتوں کو جوڑتی ہیں۔ جب قیمت چینل کے اوپر سے ٹکرا جاتی ہے تو خریدنے کا اشارہ ہوتا ہے۔ جب قیمت چینل کے نیچے سے ٹکرا جاتی ہے تو فروخت کا اشارہ ہوتا ہے۔ یہ مارکیٹ کی حرکیات کی تبدیلیوں کی عکاسی کرتا ہے۔
حرکت پذیر اوسط قیمتوں کے رجحان کی سمت کا تعین کرنے کے لئے استعمال کیا جاتا ہے۔ جب قیمتیں حرکت پذیر اوسط سے اوپر ہوتی ہیں تو ، صرف اس صورت میں خریداری کے سگنل کو اپنایا جاتا ہے جب ٹرانزٹ کو توڑنے کے لئے ، اس طرح اسٹیلنگ زون میں خریدنے سے گریز کیا جاسکتا ہے۔
خاص طور پر ، اس حکمت عملی کی شرائط یہ ہیں کہ: قیمت ڈونچیئن چینل کو ٹریک کرنے سے تجاوز کر جائے ، اور بند ہونے والی قیمت حرکت پذیر اوسط سے زیادہ ہو۔ مارکیٹ سے باہر جانے کی شرط یہ ہے کہ: قیمت ڈونچیئن چینل کو ٹریک کرے۔
اسٹاپ نقصان کا طریقہ ڈونچین چینل کو نیچے کی طرف سے ٹریک کرنے کے لئے ہے۔ اس سے یہ یقینی بنایا جاتا ہے کہ اسٹاپ نقصان کا نقطہ رجحان کے ساتھ ساتھ اوپر کی طرف بڑھتا ہے۔
اس حکمت عملی میں دو اشارے شامل ہیں جو رجحان کی سمت اور طاقت کا فیصلہ کرتے ہیں۔ اس سے بریک سگنل کو مؤثر طریقے سے پہچانا جاسکتا ہے اور غلط تجارت سے بچا جاسکتا ہے۔ اس کے علاوہ ، اسٹاپ نقصان کا طریقہ معقول ہے ، جس سے حکمت عملی کو رجحانات کی پوری طرح سے پیروی کی جاسکتی ہے۔
اس حکمت عملی کے کچھ فوائد یہ ہیں:
ڈونچین چینل اشارے متحرک طور پر اہم معاون مزاحمت کی سطح کا تعین کرسکتے ہیں ، رجحان کے اہم موڑ کی نشاندہی کرسکتے ہیں۔
متحرک اوسط اشارے فلٹرز کے طور پر کام کرتے ہیں تاکہ غیر فعال تجارت کو کم کرنے کے لئے کھدائی کے علاقے میں خریدنے سے بچنے کے لۓ.
اسٹاپ نقصان کا طریقہ ڈونچیان چینل کے نیچے کی ٹریک پر عمل کرنا ہے ، جس سے زیادہ سے زیادہ رجحانات کی پیروی کی جاسکتی ہے۔
حکمت عملی کے پیرامیٹرز کو مناسب لچکدار ترتیب دیا گیا ہے ، جس میں مختلف مارکیٹ کے حالات کے لئے موافقت اور اصلاح کی جاسکتی ہے۔
اس حکمت عملی میں مندرجہ ذیل خطرات شامل ہیں:
بریک آؤٹ ناکامی کا خطرہ قیمتوں میں توڑنے کے بعد چینل کو ریل کرنے کے بعد تیزی سے ریورس ہوسکتا ہے ، جس سے مؤثر طریقے سے ذخیرہ نہیں کیا جاسکتا
ٹرینڈ ریورس کا خطرہ۔ اسٹاپ نقصان سے پہلے مارکیٹ میں ردوبدل ہوسکتا ہے ، جس کی وجہ سے اسٹاپ نقصان ہوتا ہے۔
پیرامیٹرز کو بہتر بنانے کا خطرہ۔ غلط پیرامیٹرز کی ترتیب سے تجارت کی کثرت یا سگنل کی کمی ہوسکتی ہے۔
ان خطرات کے لئے ، متحرک اوسط کے دورانیے کو ایڈجسٹ کرکے ، ٹرانزیکشن حجم فلٹرنگ کو بڑھا کر اور اس طرح کے طریقوں سے اصلاح کی جاسکتی ہے ، تاکہ یہ یقینی بنایا جاسکے کہ پیدا ہونے والا سگنل زیادہ قابل اعتماد ہے۔ مختصر مدت میں ایڈجسٹمنٹ کے خطرے سے نمٹنے کے لئے ، مناسب طریقے سے لوز اور کچھ اسٹاپ لاسس کی ترتیبات کو ایڈجسٹ کریں۔
اس حکمت عملی کو مزید بہتر بنانے کے لیے مندرجہ ذیل نکات پر غور کیا جا سکتا ہے۔
ٹرانزٹ کی مقدار کے اشارے کے ذریعے سگنل کو فلٹر کریں تاکہ اس بات کا یقین ہو سکے کہ یہ مضبوط ہے۔
متحرک اوسط کی مدت کے پیرامیٹرز کو بہتر بنائیں تاکہ یہ مختلف اقسام کی خصوصیات کے مطابق ہو۔
اسٹاپ نقصان کے طریقہ کار کو ایڈجسٹ کریں تاکہ اسٹاپ نقصان کا فاصلہ مارکیٹ میں اتار چڑھاؤ کے مطابق ہو۔
دوبارہ داخل ہونے کا طریقہ کار شامل کیا گیا ہے ، جس سے نقصان سے باہر نکلنے کے بعد رجحانات کے مواقع کو دوبارہ حاصل کیا جاسکتا ہے۔
کثیر نسل کی بازیافت ، پیرامیٹرز کی مضبوطی کی جانچ پڑتال کریں۔ پیرامیٹرز کو مختلف نسلوں کی خصوصیات کے مطابق ٹھیک کریں۔
متحرک بریک ٹریڈنگ حکمت عملی رجحان کی سمت اور طاقت کا فیصلہ کرنے کے لئے متعدد اشارے کو مربوط کرتی ہے ، جو عام رجحان نظام کے اندھے پوزیشننگ کے مسئلے کو حل کرتی ہے۔ اس حکمت عملی کے پیرامیٹرز کو لچکدار ترتیب دیا گیا ہے ، جو مختلف حالات کے حالات اور تجارت کی اقسام کے لئے بہتر طور پر ایڈجسٹ کیا جاسکتا ہے۔ یہ ایک عام اور عملی بریک سسٹم ہے۔
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Revision: 1
// Author: @millerrh
// Strategy:
// Entry: Buy when Donchian Channel breaks out
// Exit: Trail a stop with the lower Donchian Channel band
// Conditions/Variables:
// 1. Can add a filter to only take setups that are above a user-defined moving average (helps avoid trading counter trend)
// 2. Manually configure which dates to back test
// 3. User-Configurable DC Channel length
// === 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("Donchian Breakout", 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("Donchian Breakout", overlay=true)
// === BACKTEST RANGE ===
From_Year = input(defval = 2019, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year = input(defval = 9999, title = "To Year")
To_Month = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start = timestamp(From_Year, From_Month, From_Day, 00, 00) // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59) // backtest finish window
// == INPUTS ==
trigInput = input(title = "Execute Trades On...", defval = "Wick", options=["Wick","Close"]) // Useful for comparing standing stop orders vs. waiting for candle closes prior to action
stopTrail = input(title = "Trail Stops On...", defval = "ATR", options = ["ATR","Bottom of DC Channel","Midline of DC Channel","Tightest of ATR/Bot DC Channel"])
dcPeriod = input(title="DC period", type=input.integer, defval=20)
// === PLOT THE DONCHIAN CHANNEL ===
// Logic
dcUpper = highest(high, dcPeriod)
dcLower = lowest(low, dcPeriod)
dcMid = avg(dcUpper, dcLower)
// Plotting
dcUplot = plot(dcUpper, color=color.blue, linewidth=1, title="Upper Channel Line")
dcLplot = plot(dcLower, color=color.blue, linewidth=1, title="Lower Channel Line")
dcMidPlot = plot(dcMid, color=color.gray, linewidth=1, title="Mid-Line Average")
fill(dcUplot, dcLplot, color=color.gray, transp=90)
// == FILTERING ==
// Inputs
useMaFilter = input(title = "Use MA for Filtering?", type = input.bool, defval = true)
maType = input(defval="SMA", options=["EMA", "SMA"], title = "MA Type For Filtering")
maLength = input(defval = 100, title = "MA Period for Filtering", minval = 1)
// Declare function to be able to swap out EMA/SMA
ma(maType, src, length) =>
maType == "EMA" ? ema(src, length) : sma(src, length) //Ternary Operator (if maType equals EMA, then do ema calc, else do sma calc)
maFilter = ma(maType, close, maLength)
plot(maFilter, title = "Trend Filter MA", color = color.green, linewidth = 3, style = plot.style_line, transp = 50)
// Check to see if the useMaFilter check box is checked, this then inputs this conditional "maFilterCheck" variable into the strategy entry
maFilterCheck = if useMaFilter == true
maFilter
else
0
// == ENTRY AND EXIT CRITERIA ==
// Trigger stop based on candle close or High/Low (i.e. Wick) - If doing daily timeframe, can do candle close. Intraday should use wick.
trigResistance = trigInput == "Close" ? close : trigInput == "Wick" ? high : na
trigSupport = trigInput == "Close" ? close : trigInput == "Wick" ? low : na
buySignal = trigResistance >= dcUpper[1] // The [1] looks at the previous bar's value as it didn't seem to be triggering correctly without it (likely) DC moves with each bar
sellSignal = trigSupport <= dcLower[1]
buy = buySignal and dcUpper[1] > maFilterCheck // All these conditions need to be met to buy
// (STRATEGY ONLY) Comment out for Study
// This string of code enters and exits at the close
if (trigInput == "Close")
strategy.entry("Long", strategy.long, when = buy)
strategy.close("Long", when = sellSignal)
// This string of code enters and exits at the wick (i.e. with pre-set stops)
if (trigInput == "Wick")
strategy.entry("Long", strategy.long, stop = dcUpper[1], when = time > Start and time < Finish and dcUpper[1] > maFilterCheck)
strategy.exit("Exit Long", from_entry = "Long", stop = dcLower[1])