کھلی بند کراس حرکت پذیر اوسط رجحان کی پیروی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-15 14:24:27
ٹیگز:

img

جائزہ

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

اصول

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

یہ حکمت عملی موجودہ رجحان کی سمت کا فیصلہ کرنے کے لئے کھلی اور بند قیمتوں کے چلتے ہوئے اوسط کا حساب کتاب کرکے اس منطق کا استعمال کرتی ہے۔ خاص طور پر اس کے تجارتی قوانین یہ ہیں:

  1. جب اختتامی قیمت کی حرکت پذیر اوسط کھلی قیمت کی حرکت پذیر اوسط سے تجاوز کرتی ہے۔ اس سے یہ اشارہ ملتا ہے کہ تیزی کا جذبہ مضبوط ہورہا ہے اور ایک طویل پوزیشن شروع کی جاسکتی ہے۔

  2. جب اختتامی قیمت کی حرکت پذیر اوسط کھلنے والی قیمت کی حرکت پذیر اوسط سے نیچے گزر جاتی ہے۔ اس سے یہ ظاہر ہوتا ہے کہ bearish جذبات بڑھ رہے ہیں اور ایک مختصر پوزیشن شروع کی جاسکتی ہے۔

  3. موجودہ پوزیشنوں کو سٹاپ نقصان کے ساتھ بند کریں جب ریورس سگنل ہوتے ہیں۔

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

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

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

اس حکمت عملی کے مندرجہ ذیل اہم فوائد ہیں:

  1. سادہ اور واضح قوانین. کھلی قریبی تعلقات کی بنیاد پر رجحان کا فیصلہ کرنے کے لئے سمجھنے اور پیرامیٹرز کو بہتر بنانے کے لئے آسان ہے.

  2. لچکدار ایم اے انتخاب. منتخب کرنے اور بہتر بنانے کے لئے ایم اے کی درجنوں اقسام ہیں.

  3. ایڈجسٹ ریزولوشنریزولوشن چارٹ کے 3-4x پر مقرر کیا جا سکتا ہے زیادہ حساسیت اور سگنلز کی بروقت کے لئے.

  4. نقصان کو روکنے کا طریقہ کارٹریلنگ اسٹاپ مؤثر طریقے سے ہر تجارت کے نقصان اور ڈراؤونگ کو کنٹرول کرتا ہے۔

  5. اپنی مرضی کے مطابق رکھنے کی مدتبرقرار رکھنے کی مدت اور اتار چڑھاؤ کو ایم اے پیرامیٹرز کو ایڈجسٹ کرکے کنٹرول کیا جاسکتا ہے۔

  6. لچکدار طریقے سے ایڈجسٹ کرنے والا رسک ریٹرن. سٹاپ نقصان پوائنٹس اور آفسیٹ ٹھیک میٹونز خطرہ انعام ترجیح.

خطرے کا تجزیہ

اس حکمت عملی کے اہم خطرات مندرجہ ذیل شعبوں میں ہیں:

  1. غائب رجحان کی تبدیلیاںاخراج کے سگنل قیمتوں میں ردوبدل میں تاخیر کا سبب بن سکتے ہیں جس کے نتیجے میں نقصانات کا سامنا کرنا پڑتا ہے۔ ایم اے کی مدت کو کم کرنے سے اس میں تخفیف ہوسکتی ہے۔

  2. اعلی اتار چڑھاؤ کے حالات کے لئے مناسب نہیںغیر مستحکم حالات کے تحت بار بار وِپساؤ اعلی کمیشن لاگت پیدا کرتا ہے۔ سٹاپ نقصان پوائنٹس کو بڑھانا یا ایم اے کی مدت میں توسیع یہاں مدد کر سکتی ہے۔

  3. واحد اشارے پر انحصارصرف ایک اشارے کے سیٹ پر فیصلے کی بنیاد پر اسے ناکامی کے خطرے سے دوچار کرتا ہے۔ MACD جیسے دوسرے اشارے شامل کرنا منطق کو مکمل کرسکتا ہے۔

  4. زیادہ سے زیادہ اصلاح کا خطرہ. ایم اے پیرامیٹرز اور اسٹاپ نقصان کی ترتیبات آسانی سے زیادہ ہوسکتی ہیں۔ نمونہ سے باہر کی کارکردگی خراب ہوسکتی ہے۔ پیرامیٹرز کے انتخاب میں محتاط رہنا چاہئے۔

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

حکمت عملی کو مندرجہ ذیل شعبوں سے بہتر اور بہتر بنایا جاسکتا ہے:

  1. اضافی اشارےعدم استحکام اور رفتار کے اشارے استحکام اور استحکام میں اضافہ کرسکتے ہیں۔

  2. مشروط متحرک پیرامیٹرزایم اے کی مدت کو بہتر موافقت کے لئے رجحانات یا ضمنی مارکیٹ کے نظام کے پتہ لگانے کی بنیاد پر ایڈجسٹ کیا جاسکتا ہے۔

  3. متحرک رسک کنٹرولسٹاپ نقصان پوائنٹس اور آفسیٹس حالیہ احساس اتار چڑھاؤ کی سطح پر calibrated کیا جا سکتا ہے.

  4. سٹاپ نقصان کی بہتر منطقزیادہ اعلی درجے کی سٹاپ نقصان کے طریقہ کار جیسے اے ٹی آر سٹاپ سادہ ٹریلنگ سٹاپ کی جگہ لے سکتے ہیں.

نتیجہ

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


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title = "Open Close Cross Strategy (PineScript=v4)", shorttitle = "OCC Strategy", overlay = true )

// Revision:        1
// Author:          @JayRogers
//
// Description:
//  - Strategy based around Open-Close Crossovers.
// Setup:
//  - I have generally found that setting the strategy resolution to 3-4x that of the chart you are viewing
//    tends to yield the best results, regardless of which MA option you may choose (if any)
//  - Don't aim for perfection. Just aim to get a reasonably snug fit with the O-C band, with good runs of
//    green and red.
//  - Option to either use basic open and close series data, or pick your poison with a wide array of MA types.
//  - Optional trailing stop for damage mitigation if desired (can be toggled on/off)
//  - Positions get taken automagically following a crossover - which is why it's better to set the resolution
//    of the script greater than that of your chart, so that the trades get taken sooner rather than later.
//  - If you make use of the trailing stops, be sure to take your time tweaking the values. Cutting it too fine
//    will cost you profits but keep you safer, while letting them loose could lead to more drawdown than you
//    can handle.

// === INPUTS ===
useRes = input(defval=true, title="Use Alternate Resolution? ( recommended )")
stratRes = input(defval="120", title="Set Resolution ( should not be lower than chart )", type=input.resolution)
useMA = input(defval=true, title="Use MA? ( otherwise use simple Open/Close data )")
basisType = input(defval="DEMA", title="MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA, SMMA, HullMA, LSMA, ALMA ( case sensitive )", type=input.string)
basisLen = input(defval=14, title="MA Period", minval=1)
offsetSigma = input(defval=6, title="Offset for LSMA / Sigma for ALMA", minval=0)
offsetALMA = input(defval=0.85, title="Offset for ALMA", minval=0, step=0.01)
useStop = input(defval=true, title="Use Trailing Stop?")
slPoints = input(defval=200, title="Stop Loss Trail Points", minval=1)
slOffset = input(defval=400, title="Stop Loss Trail Offset", minval=1)
// === /INPUTS ===

// === BASE FUNCTIONS ===
// Returns MA input selection variant, default to SMA if blank or typo.
variant(type, src, len, offSig, offALMA) =>
    v1 = sma(src, len)  // Simple
    v2 = ema(src, len)  // Exponential
    v3 = 2 * v2 - ema(v2, len)  // Double Exponential
    v4 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)  // Triple Exponential
    v5 = wma(src, len)  // Weighted
    v6 = vwma(src, len)  // Volume Weighted
    sma_1 = sma(src, len)  // Smoothed
    v7 = na(v5[1]) ? sma_1 : (v5[1] * (len - 1) + src) / len
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))  // Hull
    v9 = linreg(src, len, offSig)  // Least Squares
    v10 = alma(src, len, offALMA, offSig)  // Arnaud Legoux
    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 : v1
// security wrapper for repeat calls
reso(exp, use, res) =>
    security_1 = security(syminfo.tickerid, res, exp)
    use ? security_1 : exp
// === /BASE FUNCTIONS ===

// === SERIES SETUP ===
// open/close
variant__1 = variant(basisType, close, basisLen, offsetSigma, offsetALMA)
reso__1 = reso(variant__1, useRes, stratRes)
reso__2 = reso(close, useRes, stratRes)
closeSeries = useMA ? reso__1 : reso__2
variant__2 = variant(basisType, open, basisLen, offsetSigma, offsetALMA)
reso__3 = reso(variant__2, useRes, stratRes)
reso__4 = reso(open, useRes, stratRes)
openSeries = useMA ? reso__3 : reso__4
trendState = bool(na)
trendState := closeSeries > openSeries ? true : 
   closeSeries < openSeries ? false : trendState[1]
// === /SERIES ===

// === PLOTTING ===
barcolor(color=closeSeries > openSeries ? #006600 : #990000, title="Bar Colours")
// channel outline
closePlot = plot(closeSeries, title="Close Line", color=#009900, linewidth=2, style=plot.style_line, transp=90)
openPlot = plot(openSeries, title="Open Line", color=#CC0000, linewidth=2, style=plot.style_line, transp=90)
// channel fill
closePlotU = plot(trendState ? closeSeries : na, transp=100, editable=false)
openPlotU = plot(trendState ? openSeries : na, transp=100, editable=false)
closePlotD = plot(trendState ? na : closeSeries, transp=100, editable=false)
openPlotD = plot(trendState ? na : openSeries, transp=100, editable=false)
fill(openPlotU, closePlotU, title="Up Trend Fill", color=#009900, transp=40)
fill(openPlotD, closePlotD, title="Down Trend Fill", color=#CC0000, transp=40)
// === /PLOTTING ===

// === STRATEGY ===
// conditions
longCond = crossover(closeSeries, openSeries)
shortCond = crossunder(closeSeries, openSeries)
// entries and base exit
strategy.entry("long", strategy.long, when=longCond)
strategy.entry("short", strategy.short, when=shortCond)
// if we're using the trailing stop
if useStop
    strategy.exit("XL", from_entry="long", trail_points=slPoints, trail_offset=slOffset)
    strategy.exit("XS", from_entry="short", trail_points=slPoints, trail_offset=slOffset)
// not sure needed, but just incase..
strategy.exit("XL", from_entry="long", when=shortCond)
strategy.exit("XS", from_entry="short", when=longCond)
// === /STRATEGY ===


مزید