متحرک اوسط ڈبل کلک گولڈن کراس مسلسل اضافہ کی حکمت عملی


تخلیق کی تاریخ: 2023-11-13 10:47:48 آخر میں ترمیم کریں: 2023-11-13 10:47:48
کاپی: 0 کلکس کی تعداد: 649
1
پر توجہ دیں
1617
پیروکار

متحرک اوسط ڈبل کلک گولڈن کراس مسلسل اضافہ کی حکمت عملی

جائزہ

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

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

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

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

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

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

طاقت کا تجزیہ

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

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

خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات بھی ہیں جن کے بارے میں آگاہ ہونا ضروری ہے:

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

اصلاح کی سمت

اس حکمت عملی کو مزید بہتر بنانے کے لیے مندرجہ ذیل نکات پر غور کیا جا سکتا ہے۔

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//written by [email protected]
//@version=5
strategy(title="MJ-Dual Moving Average",initial_capital=10000,overlay=false)

// import TradingView/ZigZag/6 as ZigZagLib 

// // Create Zig Zag instance from user settings.
// var zigZag = ZigZagLib.newInstance(
//   ZigZagLib.Settings.new(
//       input.float(5.0, "Price deviation for reversals (%)", 0.00001, 100.0, 0.5, "0.00001 - 100"),
//       input.int(10, "Pivot legs", 2),
//       input(#2962FF, "Line color"),
//       input(true, "Extend to last bar"),
//       input(true, "Display reversal price"),
//       input(true, "Display cumulative volume"),
//       input(true, "Display reversal price change", inline = "priceRev"),
//       input.string("Absolute", "", ["Absolute", "Percent"], inline = "priceRev"),
//       true)
//  )

// // Update 'zigZag' object on each bar with new ​pivots, ​volume, lines, labels.
// zigZag.update()
// // plot(zigZag.pivots, "zigZag")

ma1= ta.sma(close,8)
ma2= ta.sma(close,21)

angleCriteria = input.int(title="Angle", defval=7, minval=1, maxval=13)

i_lookback   = input.int(2,     "Angle Period", minval = 1)
i_atrPeriod  = input.int(10,    "ATR Period",   minval = 1)
i_angleLevel = input.int(6,     "Angle Level",  minval = 1)
i_maSource   = input.source(close, "MA Source")
TP = input.float(1, "TP", minval = 0.1)
SL = input.float(1, "SL", minval = 0.1)

f_angle(_src, _lookback, _atrPeriod) =>
    rad2degree = 180 / 3.141592653589793238462643  //pi 
    ang = rad2degree * math.atan((_src[0] - _src[_lookback]) / ta.atr(_atrPeriod)/_lookback)
    ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)
plot(ta.atr(i_atrPeriod), "atr")
// plot(ma1,color=#FF0000)
// plot(ma2,color=#00FF00)

crosso=ta.crossover(ma1,ma2) 
crossu=ta.crossunder(ma1,ma2)

_lookback = 15

f_somethingHappened(_cond, _lookback) =>
    bool _crossed = false
    for i = 1 to _lookback
        if _cond[i]
            _crossed := true
    _crossed
    
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)

atr_factor = 1
atr = ta.atr(i_atrPeriod)
e = atr * atr_factor 

afr = close 
afr := nz(afr[1], afr)

atr_factoryHigh = close + e
atr_factoryLow = close - e 

if atr_factoryLow > afr 
    afr := atr_factoryLow
if atr_factoryHigh < afr 
    afr := atr_factoryHigh

// plot(afr, "afr", display = display.data_window)
// plot(atr_factoryHigh, "afr", color = color.yellow, display = display.all)
// plot(atr_factoryLow, "afr", color = color.green, display = display.all)


inLong() => strategy.position_size > 0
inShort() => strategy.position_size < 0
inZero() => not inLong() and not inShort()

long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)

plotshape(long, "Buy", shape.arrowup, location.belowbar, color = #FF0000)
plotshape(short, "Sell", shape.arrowdown, location.abovebar, color = #00FF00)

var longTp = 0.0
var longSl = 0.0
var shortTp = 0.0
var shortSl = 0.0
[b_middle, b_high, b_low] = ta.bb(close, 20, 2)
entry_price = strategy.opentrades.entry_price(0)

if inZero()
    if short
        longTp := close * (1 + TP/100)
        longSl := close * (1 - SL/100)
        strategy.entry("LONG",strategy.long, comment = "tp:" + str.tostring(longTp) + " sl:" + str.tostring(longSl))
    if long
        shortTp := close * (1 - TP/100)
        shortSl := close * (1 + SL/100)
        strategy.entry("SHORT",strategy.short, comment = "tp:" + str.tostring(shortTp) + " sl:" + str.tostring(shortSl))

if inLong()
    // if close - entry_price > close * 0.005
    //     longSl := entry_price + close * 0.001
    if high > longTp
        strategy.close("LONG")
        if (close - open) > close * 0.014
            shortTp := close * (1 - TP/100)
            shortSl := close * (1 + SL/100)
            strategy.entry("SHORT",strategy.short, comment = "tp:" + str.tostring(shortTp) + " sl:" + str.tostring(shortSl))

    if close < longSl
        strategy.close("LONG")
    if open >= b_high and close >= b_high
        strategy.close("LONG")
    // if high > b_high and entry_price < high
    //     strategy.close("LONG")


if inShort()
    // if entry_price - close > close * 0.005
    //     shortSl := entry_price - close * 0.001
    if low < shortTp
        strategy.close("SHORT")
        if (open - close) > close * 0.014
            longTp := close * (1 + TP/100)
            longSl := close * (1 - SL/100)
            strategy.entry("LONG",strategy.long, comment = "tp:" + str.tostring(longTp) + " sl:" + str.tostring(longSl))


    if close > shortSl
        strategy.close("SHORT")
    if open < b_low and close < b_low
        strategy.close("SHORT")
    // if low < b_low and entry_price > low
    //     strategy.close("SHORT")