دوہری ای ایم اے کراس اوور آسکیلشن ٹریکنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-03 11:38:51
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

یہ حکمت عملی رجحانات کا اندازہ کرنے کے لئے ایک اشارے کے طور پر 20 پیریڈ ای ایم اے کا استعمال کرتی ہے۔ جب قیمت ای ایم اے سے اوپر کی طرف بڑھتی ہے تو ، اس سے بڑھتی ہوئی رجحان کا اشارہ ہوتا ہے ، اور جب قیمت اس سے نیچے کی طرف بڑھتی ہے تو ، یہ نیچے کی طرف بڑھتی ہوئی رجحان کا اشارہ کرتی ہے۔

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

اس کے ساتھ ہی ، حکمت عملی یہ بھی چیک کرتی ہے کہ آیا ADX 30 سے زیادہ ہے۔ تجارت صرف اس وقت کی جاتی ہے جب رجحان کافی مضبوط ہوتا ہے ، یعنی جب ADX 30 سے زیادہ ہوتا ہے۔ اس سے مارکیٹ کے اتار چڑھاؤ کے دوران اسٹاپ آؤٹ سے بچتا ہے۔

کھلی تجارت کے دوران، ٹریلنگ سٹاپ زیادہ منافع میں مقفل کرنے کے لئے مارکیٹ کے حالات کی بنیاد پر ایڈجسٹ کرنے کے لئے جاری ہے.

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

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

ای ایم اے کا استعمال پیرامیٹرز کو بھی آسان رکھتا ہے ، زیادہ سے زیادہ اصلاح کے خطرات کو کم کرتا ہے اور استحکام کو یقینی بناتا ہے۔

خطرے کا تجزیہ

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

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

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

اس حکمت عملی کے لئے ممکنہ اصلاحات میں شامل ہیں:

  1. زیادہ سے زیادہ EMA ادوار کا تجربہ کرنے کے لئے بہترین مجموعہ تلاش کرنے کے لئے.

  2. ADX پیرامیٹرز کو بہتر بنانا بشمول ADX مدت اور حد کے اقدار۔

  3. منافع لینے اور سٹاپ نقصان کے الگورتھم کو بہتر بنانا، مثال کے طور پر متحرک اسٹاپ متعارف کرانے کے ذریعے۔

  4. کثیر اشارے کی تصدیق کا نظام بنانے کے لئے اضافی اشارے جیسے KDJ اور MACD کو یکجا کرنا۔

خلاصہ

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


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Linda Raschke's Holy Grail", shorttitle="RHG", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true)
adxlen = input(14, title="ADX period")
adxMin = input(30)
dilen = adxlen
f_highest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] >= _value ? _src[_i] : _value
    _return = _value

f_lowest(_src, _length)=>
    _adjusted_length = _length < 1 ? 1 : _length
    _value = _src
    for _i = 0 to (_adjusted_length-1)
        _value := _src[_i] <= _value ? _src[_i] : _value
    _return = _value

dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

emaLength = input(20)
curEma = ema(close, emaLength)
highPeriod = input(20)
d = na

takeProfitLong = highest(high, highPeriod) 
stopLossLong = f_lowest(low, barssince(low >= curEma))

if strategy.position_size == 0
    if adx(dilen, adxlen) <= adxMin or high < curEma 
        strategy.cancel("Long")
    if adx(dilen, adxlen) > adxMin and low < curEma and high > curEma and curEma > curEma[highPeriod / 2] and curEma > curEma[highPeriod] and takeProfitLong > high
        strategy.order("Long", strategy.long, stop = high)
        strategy.exit("Exit", "Long", limit = takeProfitLong, stop = stopLossLong)
        d := high

takeProfitShort = lowest(low, highPeriod) 
stopLossShort = f_highest(high, barssince(high <= curEma))

if strategy.position_size == 0
    if adx(dilen, adxlen) <= adxMin or low > curEma 
        strategy.cancel("Short")
    if adx(dilen, adxlen) > adxMin and high > curEma and low < curEma and curEma < curEma[highPeriod / 2] and curEma < curEma[highPeriod] and takeProfitShort < low
        strategy.order("Short", strategy.short, stop = low)
        strategy.exit("Exit", "Short", limit = takeProfitShort, stop = stopLossShort)
        d := low


strategy.close("Exit")

plot(d == high ? stopLossLong : d == low ? stopLossShort : na, style = circles, linewidth = 4, color = red)
plot(d == high ? takeProfitLong : d == low ? takeProfitShort : na, style = circles, linewidth = 4, color = green)
plot(d, style = circles, linewidth = 4, color = yellow)
plot(curEma, color = black, linewidth = 2)  

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()


مزید