اس حکمت عملی کا نام ہے رجحان کی پیمائش کی حکمت عملی کی بنیاد پر چلنے والی اوسط K لائن اور اوور ٹرینڈ اسٹاپ۔ یہ حکمت عملی چلنے والی اوسط لائن کا استعمال کرتی ہے جس میں رجحان کی K لائن کا نقشہ تیار کیا جاتا ہے ، اور اس کے ساتھ مل کر اوور ٹرینڈ اسٹاپ میکانیزم ٹریڈنگ سگنل پیدا کرتا ہے ، جس سے رجحان کا سراغ لگایا جاسکتا ہے۔
اس حکمت عملی کے تحت تجارت کی حکمت عملی مندرجہ ذیل ہے:
بڑھتی ہوئی اوسط کے ساتھ کھلنے اور کم فصل کی قیمتوں کا حساب لگائیں ، اور رجحان کی لائن بنائیں۔
ٹرینڈ K لائن پر سپر ٹرینڈ اسٹاپ ٹکنالوجی کا استعمال کرتے ہوئے ، آپ کو زیادہ اور کم اسٹاپ کی جگہ مل جاتی ہے۔
جب قیمت ایک سے زیادہ اسٹاپ کی حد کو توڑتی ہے تو ، خریدنے کا اشارہ پیدا ہوتا ہے۔ جب قیمت ایک سے زیادہ اسٹاپ کی حد کو توڑتی ہے تو ، فروخت کا اشارہ پیدا ہوتا ہے۔
زیادہ اعلی وقت کے دورانیے کے ساتھ سال کے اعلی ترین اور کم از کم قیمتوں کا تعین کرنے سے ، اتار چڑھاؤ کی منڈیوں میں بہت زیادہ غیر موثر سگنل سے بچنے سے بچیں۔
جب اوور ٹریڈنگ اسٹاپ نقصان کی واپسی ہوتی ہے تو ، بیعانہ اسٹاپ نقصان ہوتا ہے۔
اس حکمت عملی کا فائدہ یہ ہے کہ ایک ہی وقت میں متعدد تکنیکی اشارے کو جوڑنا ، فیصلہ کی درستگی کو بہتر بناتا ہے۔ تاہم ، متحرک اوسط اور زیادہ سے زیادہ اسٹاپ نقصان کے پیرامیٹرز کو بہتر بنانے کی ضرورت ہے۔ اسٹاپ نقصان کی حکمت عملی بھی ضروری ہے۔
مجموعی طور پر ، اشارے اور ماڈل کے مربوط استعمال سے کسی حد تک کسی ایک اشارے کی کمی کو پورا کیا جاتا ہے ، لیکن کوئی بھی حکمت عملی کامل نہیں ہوسکتی ہے۔ تاجر کو مارکیٹ میں ہونے والی تبدیلیوں کے جواب میں کافی لچکدار رہنے کی ضرورت ہے۔
/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © HeWhoMustNotBeNamed
//@version=4
strategy("MA Candles Supertrend Strategy", shorttitle="MACSTS", overlay=true, initial_capital = 20000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01)
MAType = input(title="Moving Average Type", defval="rma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
LoopbackBars = input(20, step=10)
AtrMAType = input(title="Moving Average Type", defval="rma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
AtrLength = input(30, step=10)
AtrMult = input(1)
adoptiveWicks = false // does not work
wicks = input(true)
dThreshold = input(0.2, step=0.1, maxval=1)
rThreshold = input(0.7, step=0.1, maxval=1)
tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true
strategy.risk.allow_entry_in(tradeDirection)
f_getMovingAverage(source, MAType, length)=>
ma = sma(source, length)
if(MAType == "ema")
ma := ema(source,length)
if(MAType == "hma")
ma := hma(source,length)
if(MAType == "rma")
ma := rma(source,length)
if(MAType == "vwma")
ma := vwma(source,length)
if(MAType == "wma")
ma := wma(source,length)
ma
f_secureSecurity(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on)
f_getYearlyHighLowCondition()=>
yhighrange = f_secureSecurity(syminfo.tickerid, '12M', high, 1)
ylowrange = f_secureSecurity(syminfo.tickerid, '12M', low, 1)
yearlyHighCondition = close > yhighrange*(1-dThreshold) or close > ylowrange*(1+rThreshold)
yearlyLowCondition = close < ylowrange*(1+dThreshold) or close < yhighrange*(1-rThreshold)
[yearlyHighCondition, yearlyLowCondition]
f_getSupertrend(oOpen, oClose, oHigh, oLow, AtrMAType, AtrLength, AtrMult, wicks)=>
truerange = max(oHigh, oClose[1]) - min(oLow, oClose[1])
averagetruerange = f_getMovingAverage(truerange, AtrMAType, AtrLength)
atr = averagetruerange * AtrMult
longWicks = (adoptiveWicks and (close < oClose)) or wicks
shortWicks = (adoptiveWicks and (close > oClose)) or wicks
longStop = oClose - atr
longStopPrev = nz(longStop[1], longStop)
longStop := (longWicks ? oLow[1] : oClose[1]) > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = oClose + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := (shortWicks ? oHigh[1] : oClose[1]) < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and (longWicks ? oHigh : oClose) > shortStopPrev ? 1 : dir == 1 and (shortWicks[1]? oLow : oClose) < longStopPrev ? -1 : dir
[dir, longStop, shortStop]
oOpen = f_getMovingAverage(open, MAType, LoopbackBars)
oClose = f_getMovingAverage(close, MAType, LoopbackBars)
oHigh = f_getMovingAverage(high, MAType, LoopbackBars)
oLow = f_getMovingAverage(low, MAType, LoopbackBars)
colorByPreviousClose = false
candleColor = colorByPreviousClose ?
(oClose[1] < oClose ? color.green : oClose[1] > oClose ? color.red : color.silver) :
(oOpen < oClose ? color.green : oOpen > oClose ? color.red : color.silver)
plotcandle(oOpen, oHigh, oLow, oClose, 'Oscilator Candles', color = candleColor)
[yearlyHighCondition, yearlyLowCondition] = f_getYearlyHighLowCondition()
[dir, longStop, shortStop] = f_getSupertrend(oOpen, oClose, oHigh, oLow, AtrMAType, AtrLength, AtrMult, wicks)
trailingStop = dir == 1? longStop : shortStop
trendColor = dir == 1? color.green: color.red
plot(trailingStop, title="TrailingStop", color=trendColor, linewidth=2, style=plot.style_linebr)
longCondition = close > shortStop and dir == 1 and yearlyHighCondition
shortCondition = close < longStop and dir == -1 and yearlyLowCondition
exitLongCondition = dir == -1
exitShortCondition = dir == 1
strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Long", strategy.long, when=longCondition, oca_name="oca_buy")
strategy.close("Long", when=exitLongCondition)
strategy.entry("Short", strategy.short, when=shortCondition, oca_name="oca_sell")
strategy.close("Short", when=exitShortCondition)