اوپن-کلوز کراس اوور موونگ اوسط رجحان کی پیروی کرنے والی حکمت عملی


تخلیق کی تاریخ: 2024-01-15 14:24:27 آخر میں ترمیم کریں: 2024-01-15 14:24:27
کاپی: 0 کلکس کی تعداد: 857
1
پر توجہ دیں
1617
پیروکار

اوپن-کلوز کراس اوور موونگ اوسط رجحان کی پیروی کرنے والی حکمت عملی

جائزہ

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

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

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

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

  1. جب اختتامی قیمتوں کی متحرک اوسط پر کھلنے والی قیمتوں کی متحرک اوسط کا احاطہ کیا جاتا ہے تو ، زیادہ کام کریں۔ اس سے ظاہر ہوتا ہے کہ موجودہ کثیر سر ماحول میں اضافہ ہورہا ہے ، کثیر اختیارات میں داخل ہوسکتا ہے۔

  2. جب اختتامی قیمت کی متحرک اوسط کے نیچے کھلنے والی قیمت کی متحرک اوسط کو عبور کریں تو ، خالی کریں۔ اس کا مطلب یہ ہے کہ اس وقت خالی فضا میں اضافہ ہورہا ہے ، اور خالی ٹکٹوں میں داخل ہوسکتا ہے۔

  3. جب ریورس سگنل ہوتا ہے تو ، پوزیشن کا نقصان ختم ہوجاتا ہے۔

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

مجموعی طور پر ، اس حکمت عملی میں رجحانات کا اندازہ لگانے کے لئے وقت کی مدت کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی کی لمبائی۔

طاقت کا تجزیہ

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

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

  2. لچکدار منتخب کردہ حرکت پذیری اوسط اقسام。 ایک درجن سے زائد قسم کے متحرک اوسط دستیاب ہیں، ان میں سے بہترین پیرامیٹرز کو تلاش کرنے کے لئے لچکدار مجموعہ 。

  3. لچکدار استعمال کی قرارداد کو ایڈجسٹ│ سگنل کو زیادہ حساس اور بروقت بنانے کے لئے حکمت عملی کی قرارداد چارٹ کے مقابلے میں 3-4 گنا مقرر کی جاسکتی ہے۔│

  4. نقصان کی روک تھام│ حکمت عملی میں ٹریکنگ اسٹاپ نقصانات کو ترتیب دیا گیا ہے ، جو انفرادی نقصانات اور واپسیوں کو مؤثر طریقے سے کنٹرول کرسکتا ہے۔│

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

  6. لچکدار ایڈجسٹ رسک ریٹرن。 سٹاپ نقصان پوائنٹس اور انحراف کو ایڈجسٹ کرکے خطرے کی سطح کو کنٹرول کیا جاسکتا ہے۔。

خطرے کا تجزیہ

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

  1. ٹرینڈ ٹرن آؤٹاس حکمت عملی کا آؤٹ پٹ سگنل قیمت کے الٹ جانے سے تھوڑا دیر سے ہوسکتا ہے ، جس کی وجہ سے پونچھ کا احاطہ کیا جاسکتا ہے۔ اس کو مناسب طریقے سے منتقل اوسط کی مدت کو کم کرکے کم کیا جاسکتا ہے۔

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

  3. واحد پیمائش کا فیصلہیہ حکمت عملی صرف اشارے کے ایک سیٹ پر مبنی ہے اور اس کی ناکامی کا شکار ہے۔ اس حکمت عملی کی منطق کو فروغ دینے کے لئے دیگر اشارے جیسے ایم اے سی ڈی کو متعارف کرانے پر غور کیا جاسکتا ہے۔

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

اصلاح کی سمت

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

  1. مجموعہ دیگر اشارے│ حکمت عملی کی منطق کو بہتر بنانے اور استحکام کو بہتر بنانے کے لئے اضافہ کے اشارے ، اتار چڑھاؤ کے اشارے وغیرہ کو متعارف کرانے کی کوشش کی جاسکتی ہے۔│

  2. پیرامیٹرز کو ایڈجسٹ کریں。 مارکیٹ کی قسم کے ساتھ مل کر ، متحرک طور پر منتقل اوسط پیرامیٹرز کو ایڈجسٹ کریں ، رجحانات کے دوران طویل دورانیہ ، اتار چڑھاؤ کے دوران مختصر دورانیہ 。

  3. خطرے کی پیمائش میں تبدیلیاسٹاپ پوائنٹس اور ڈائیورج کو حالیہ وقت کی حقیقی اتار چڑھاؤ کی بنیاد پر متحرک طور پر ایڈجسٹ کیا جاسکتا ہے۔

  4. اضافی سٹاپ نقصان منطقموجودہ اسٹاپ نقصان صرف قیمتوں اور پوائنٹس پر مبنی ہے ، اے ٹی آر جیسے مزید بھرپور اسٹاپ نقصان کے طریقوں کو متعارف کرانے پر غور کیا جاسکتا ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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 ===