وسائل لوڈ ہو رہے ہیں... لوڈنگ...

کھلی قریبی کراس پوائنٹ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-13 15:51:13
ٹیگز:

img

جائزہ

اوپن قریبی کراس پوائنٹ حکمت عملی ایک مقداری تجارتی حکمت عملی ہے جو حرکت پذیر اوسط کراس اوورز پر مبنی ہے۔ یہ تیز اور سست حرکت پذیر اوسط لائنوں کے مابین کراسوں کا حساب کتاب کرکے قیمت کے رجحانات کا تعین کرتی ہے اور کراس اوور پوائنٹس پر خرید و فروخت کے سگنل تیار کرتی ہے۔ یہ حکمت عملی ہل حرکت پذیر اوسط کو تیز لائن اور سپر ہموار فلٹر کو سست لائن کے طور پر استعمال کرتی ہے۔ اس امتزاج میں حرکت پذیر اوسط کی ہموار اور رجحان کا تعین کرنے کی صلاحیت دونوں شامل ہیں اور نسبتا reliable قابل اعتماد تجارتی سگنل تیار کرنے کے لئے قیمت کی نقل و حرکت کی مؤثر طریقے سے نشاندہی کرسکتی ہیں۔

حکمت عملی کا اصول

کھلی قریبی کراس پوائنٹ کی حکمت عملی کا حساب لگانے کے لئے فارمولے یہ ہیں: فاسٹ لائن (ہیل ایم اے): ڈبلیو ایم اے ((2 * ڈبلیو ایم اے ((قیمت ، این/2) - ڈبلیو ایم اے ((قیمت ، این) ، ایس کیو آر ٹی ((ن)) سست لائن (سپر ہموار فلٹر): قیمت ٹرپل فلٹر

جہاں ڈبلیو ایم اے وزن شدہ چلتی اوسط ہے ، ایس کیو آر ٹی مربع جڑ ہے ، اور فلٹر میں ایک پہلے آرڈر لیگ اصطلاح اور دو دوسرے آرڈر لیگ اصطلاحات شامل ہیں۔

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

فوائد کا تجزیہ

اوپن قریبی کراس پوائنٹ حکمت عملی دوہری حرکت پذیر اوسط فیصلوں اور پوائنٹ ٹریڈنگ کے فوائد کو جوڑتی ہے۔ یہ بروقت اندراجات اور باہر نکلنے کے لئے رجحان موڑ کے مقامات کو درست طریقے سے پکڑ سکتی ہے۔ سنگل حرکت پذیر اوسط حکمت عملی کے مقابلے میں اس کے درج ذیل فوائد ہیں:

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

خطرے کا تجزیہ

کھلی قریبی کراس پوائنٹ کی حکمت عملی میں بھی کچھ خطرات شامل ہیں:

  1. مختلف مارکیٹوں کے دوران زیادہ وِپسا سگنل آسکتے ہیں۔ غلط سگنل کو کم کرنے کے لئے ایم اے کے درمیان وقفہ بڑھا سکتا ہے۔
  2. ایم اے کے درمیان بہت زیادہ وقفے سے کچھ مواقع ضائع ہوسکتے ہیں۔ سگنل کی مقدار اور معیار کو متوازن کرنے کی ضرورت ہے۔
  3. یہ حکمت عملی واضح رجحانات کے ساتھ مصنوعات کے لئے زیادہ موزوں ہے، انتہائی غیر مستحکم مصنوعات کے لئے مشورہ نہیں دیا جاتا ہے.

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

کھلی قریبی کراس پوائنٹ کی حکمت عملی کو مندرجہ ذیل جہتوں میں بہتر بنایا جاسکتا ہے:

  1. ایم اے پیرامیٹرز کو مختلف ادوار اور اتار چڑھاؤ کی حدوں کی مصنوعات کے مطابق ایڈجسٹ کریں۔
  2. اضافی اشارے یا فلٹرز شامل کریں تاکہ وِپساؤ کو کم کرنے کے لئے ٹرینڈ کی کوالٹی کا تعین کیا جاسکے۔
  3. رجحان کی طاقت کے اشارے کو شامل کرکے پوزیشن سائزنگ کو بہتر بنائیں.

نتیجہ

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


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//

strategy(title='Open Close Cross Strategy ', shorttitle='sacinvesting', overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=false)

// === INPUTS ===
useRes = input(defval=true, title='Use Alternate Resolution?')
intRes = input(defval=3, title='Multiplier for Alernate Resolution')
stratRes = timeframe.ismonthly ? str.tostring(timeframe.multiplier * intRes, '###M') : timeframe.isweekly ? str.tostring(timeframe.multiplier * intRes, '###W') : timeframe.isdaily ? str.tostring(timeframe.multiplier * intRes, '###D') : timeframe.isintraday ? str.tostring(timeframe.multiplier * intRes, '####') : '60'
basisType = input.string(defval='SMMA', title='MA Type: ', options=['SMA', 'EMA', 'DEMA', 'TEMA', 'WMA', 'VWMA', 'SMMA', 'HullMA', 'LSMA', 'ALMA', 'SSMA', 'TMA'])
basisLen = input.int(defval=8, title='MA Period', minval=1)
offsetSigma = input.int(defval=6, title='Offset for LSMA / Sigma for ALMA', minval=0)
offsetALMA = input.float(defval=0.85, title='Offset for ALMA', minval=0, step=0.01)
scolor = input(false, title='Show coloured Bars to indicate Trend?')
delayOffset = input.int(defval=0, title='Delay Open/Close MA (Forces Non-Repainting)', minval=0, step=1)
tradeType = input.string('BOTH', title='What trades should be taken : ', options=['LONG', 'SHORT', 'BOTH', 'NONE'])
// === /INPUTS ===

// Constants colours that include fully non-transparent option.
green100 = #008000FF
lime100 = #00FF00FF
red100 = #FF0000FF
blue100 = #0000FFFF
aqua100 = #00FFFFFF
darkred100 = #8B0000FF
gray100 = #808080FF

// === BASE FUNCTIONS ===
// Returns MA input selection variant, default to SMA if blank or typo.
variant(type, src, len, offSig, offALMA) =>
    v1 = ta.sma(src, len)  // Simple
    v2 = ta.ema(src, len)  // Exponential
    v3 = 2 * v2 - ta.ema(v2, len)  // Double Exponential
    v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len)  // Triple Exponential
    v5 = ta.wma(src, len)  // Weighted
    v6 = ta.vwma(src, len)  // Volume Weighted
    v7 = 0.0
    sma_1 = ta.sma(src, len)  // Smoothed
    v7 := na(v7[1]) ? sma_1 : (v7[1] * (len - 1) + src) / len
    v8 = ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))  // Hull
    v9 = ta.linreg(src, len, offSig)  // Least Squares
    v10 = ta.alma(src, len, offALMA, offSig)  // Arnaud Legoux
    v11 = ta.sma(v1, len)  // Triangular (extreme smooth)
    // SuperSmoother filter
    // ©️ 2013 John F. Ehlers
    a1 = math.exp(-1.414 * 3.14159 / len)
    b1 = 2 * a1 * math.cos(1.414 * 3.14159 / len)
    c2 = b1
    c3 = -a1 * a1
    c1 = 1 - c2 - c3
    v12 = 0.0
    v12 := c1 * (src + nz(src[1])) / 2 + c2 * nz(v12[1]) + c3 * nz(v12[2])
    type == 'EMA' ? v2 : type == 'DEMA' ? v3 : type == 'TEMA' ? v4 : type == 'WMA' ? v5 : type == 'VWMA' ? v6 : type == 'SMMA' ? v7 : type == 'HullMA' ? v8 : type == 'LSMA' ? v9 : type == 'ALMA' ? v10 : type == 'TMA' ? v11 : type == 'SSMA' ? v12 : v1

// security wrapper for repeat calls
reso(exp, use, res) =>
    security_1 = request.security(syminfo.tickerid, res, exp, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
    use ? security_1 : exp

// === /BASE FUNCTIONS ===

// === SERIES SETUP ===
closeSeries = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA)
openSeries = variant(basisType, open[delayOffset], basisLen, offsetSigma, offsetALMA)
// === /SERIES ===

// === PLOTTING ===

// Get Alternate resolution Series if selected.
closeSeriesAlt = reso(closeSeries, useRes, stratRes)
openSeriesAlt = reso(openSeries, useRes, stratRes)
//
trendColour = closeSeriesAlt > openSeriesAlt ? color.green : color.red
bcolour = closeSeries > openSeriesAlt ? lime100 : red100
barcolor(scolor ? bcolour : na, title='Bar Colours')
closeP = plot(closeSeriesAlt, title='Close Series', color=trendColour, linewidth=2, style=plot.style_line, transp=20)
openP = plot(openSeriesAlt, title='Open Series', color=trendColour, linewidth=2, style=plot.style_line, transp=20)
fill(closeP, openP, color=trendColour, transp=80)

// === /PLOTTING ===
//
//
// === ALERT conditions
xlong = ta.crossover(closeSeriesAlt, openSeriesAlt)
xshort = ta.crossunder(closeSeriesAlt, openSeriesAlt)
longCond = xlong  // alternative: longCond[1]? false : (xlong or xlong[1]) and close>closeSeriesAlt and close>=open
shortCond = xshort  // alternative: shortCond[1]? false : (xshort or xshort[1]) and close<closeSeriesAlt and close<=open
// === /ALERT conditions.

// === STRATEGY ===
// stop loss
slPoints = input.int(defval=0, title='Initial Stop Loss Points (zero to disable)', minval=0)
tpPoints = input.int(defval=0, title='Initial Target Profit Points (zero for disable)', minval=0)
// Include bar limiting algorithm
ebar = input.int(defval=10000, title='Number of Bars for Back Testing', minval=0)
dummy = input(false, title='- SET to ZERO for Daily or Longer Timeframes')
//
// Calculate how many mars since last bar
tdays = (timenow - time) / 60000.0  // number of minutes since last bar
tdays := timeframe.ismonthly ? tdays / 1440.0 / 5.0 / 4.3 / timeframe.multiplier : timeframe.isweekly ? tdays / 1440.0 / 5.0 / timeframe.multiplier : timeframe.isdaily ? tdays / 1440.0 / timeframe.multiplier : tdays / timeframe.multiplier  // number of bars since last bar
//
//set up exit parameters
TP = tpPoints > 0 ? tpPoints : na
SL = slPoints > 0 ? slPoints : na

// Make sure we are within the bar range, Set up entries and exit conditions
if (ebar == 0 or tdays <= ebar) and tradeType != 'NONE'
    strategy.entry('long', strategy.long, when=longCond == true and tradeType != 'SHORT')
    strategy.entry('short', strategy.short, when=shortCond == true and tradeType != 'LONG')
    strategy.close('long', when=shortCond == true and tradeType == 'LONG')
    strategy.close('short', when=longCond == true and tradeType == 'SHORT')
    strategy.exit('XL', from_entry='long', profit=TP, loss=SL)
    strategy.exit('XS', from_entry='short', profit=TP, loss=SL)

// === /STRATEGY ===
// eof



مزید