اس حکمت عملی کا نام
خاص طور پر، ٹریڈنگ منطق یہ ہے:
ٹرینڈ موم بتیوں کو گراف کرنے کے لئے حرکت پذیر اوسط کے ساتھ کھلی ، اعلی ، کم اور بند قیمتوں کا حساب لگائیں۔
طویل اور مختصر رکاوٹوں کو حاصل کرنے کے لئے رجحان موم بتیوں پر سپر رجحان کی تکنیک کا اطلاق کریں.
جب قیمتیں لانگ اسٹاپ سے اوپر ہوتی ہیں تو خریدنے کے سگنل پیدا ہوتے ہیں۔ جب قیمتیں شارٹ اسٹاپ سے نیچے ہوتی ہیں تو فروخت کے سگنل پیدا ہوتے ہیں۔
زیادہ سے زیادہ وقت کے فریموں کی سالانہ اعلی / کم قیمتوں کو شامل کریں تاکہ رینج سے منسلک مارکیٹوں کے دوران بہت زیادہ غلط سگنل سے بچنے کے لئے.
جب سپر ٹرینڈ الٹ جاتا ہے، تو پوزیشن سٹاپ نقصان کے ساتھ بند کردی جاتی ہے۔
اس حکمت عملی کا فائدہ یہ ہے کہ متعدد تکنیکی اشارے کو مربوط کرنا درستگی کو بہتر بناتا ہے۔ لیکن حرکت پذیر اوسط اور سپر ٹرینڈ کی ضرورت کے پیرامیٹرز کو بہتر بنانا۔ اسٹاپ نقصان بھی ناگزیر ہے۔
عام طور پر ، اشارے اور ماڈلز کو ضم کرنے سے انفرادی اشارے کی حدود کو جزوی طور پر معاوضہ ملتا ہے۔ لیکن کوئی حکمت عملی کامل نہیں ہوسکتی ہے۔ تاجروں کو مارکیٹ میں ہونے والی تبدیلیوں کو اپنانے کے لئے ابھی بھی کافی لچک کی ضرورت ہے۔
/*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)