
ڈبل ای ایم اے گولڈ کراس شاک ٹریکنگ حکمت عملی ایک ایسی حکمت عملی ہے جو ای ایم اے اشارے کی شناخت کے رجحان کا استعمال کرتی ہے اور شاک ٹریکنگ کے دوران اس کی پیروی کرتی ہے۔ اس حکمت عملی میں رجحان کی پیروی اور شاک کیپنگ کے نظریات کو مربوط کیا گیا ہے ، جس میں مضبوط رجحانات کے دوران لمبی لائن کی پیروی کی جاتی ہے ، اور شاک ٹریکنگ کے دوران مختصر لائن کی تجارت کی جاتی ہے تاکہ بہتر منافع حاصل کیا جاسکے۔
اس حکمت عملی میں 20 سائیکل ای ایم اے کا استعمال کیا گیا ہے۔ جب قیمت ای ایم اے سے اوپر جاتی ہے تو ، یہ سمجھا جاتا ہے کہ قیمت بڑھنے لگی ہے۔ جب قیمت ای ایم اے سے نیچے جاتی ہے تو ، یہ سمجھا جاتا ہے کہ قیمت گرنے لگی ہے۔
جب قیمت پر ای ایم اے پہننے کے لئے ، 20 دور highest کی اعلی ترین قیمت کو روکنے کے لئے ، قیمت پر ای ایم اے پہننے کے بعد کم سے کم قیمت کو روکنے کے لئے ، زیادہ داخلے پر عمل کریں۔ جب قیمت پر ای ایم اے پہننے کے لئے ، 20 دور lowest کی کم سے کم قیمت کو روکنے کے لئے ، قیمت پر ای ایم اے پہننے کے بعد اعلی ترین قیمت کو روکنے کے لئے ، خالی داخلے پر عمل کریں۔
اس کے علاوہ ، حکمت عملی یہ بھی فیصلہ کرتی ہے کہ آیا ADX 30 سے زیادہ ہے۔ صرف اس وقت تجارت کی جائے گی جب رجحان کافی واضح ہو ، یعنی ADX 30 سے زیادہ ہو۔ اس سے زلزلے کی صورتحال میں اسٹاپ نقصان سے بچا جاسکتا ہے۔
ٹریل اسٹاپ مارکیٹ کے حقیقی وقت کے حالات کے مطابق ایڈجسٹ ہوتا ہے تاکہ زیادہ منافع کو لاک کیا جاسکے۔
اس حکمت عملی میں رجحانات کی پیروی اور جھٹکے کی تجارت کے فوائد شامل ہیں ، جس سے رجحانات کے حالات میں زیادہ منافع حاصل کیا جاسکتا ہے ، اور اس سے زیادہ مستحکم منافع حاصل کیا جاسکتا ہے ، جس میں زیادہ لچکدار ہے۔
ای ایم اے کا اطلاق حکمت عملی کے پیرامیٹرز کو بھی کم کرتا ہے ، جس سے زیادہ سے زیادہ اصلاح کا خطرہ کم ہوجاتا ہے ، اور اس طرح حکمت عملی کی استحکام کو یقینی بنایا جاتا ہے۔
اس حکمت عملی کا بنیادی خطرہ یہ ہے کہ زلزلے کے بڑھنے پر زیادہ نقصان کا سامنا ہوسکتا ہے۔ اس وقت ADX کا کردار نمایاں ہوتا ہے۔ جب ADX کی قدر کم ہوتی ہے تو ، تجارت کو بند کردیا جاتا ہے ، تاکہ واضح رجحان نہ ہونے پر نقصان سے بچا جاسکے۔
اس کے علاوہ ، معقول حد تک اسٹاپ نقصان کا تعین کرنا بھی ضروری ہے۔ اسٹاپ نقصان کی حد بہت بڑی ہے ، جس سے انفرادی نقصان میں اضافہ ہوسکتا ہے۔ اسٹاپ نقصان کی حد بہت چھوٹی ہے ، جو زیادہ حساس ہوسکتی ہے ، جس سے اسٹاپ نقصان کا امکان بڑھ جاتا ہے۔ یہاں منافع کے اہداف اور اسٹاپ نقصان کے خطرے کے مابین توازن تلاش کرنے کی ضرورت ہے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
ای ایم اے کی مدت کا انتخاب۔ آپ ای ایم اے کی مدت کے زیادہ پیرامیٹرز کی جانچ کر سکتے ہیں تاکہ پیرامیٹرز کا بہترین مجموعہ تلاش کیا جاسکے۔
ADX کے پیرامیٹرز کو بہتر بنایا جاسکتا ہے۔ ADX کے دورانیے اور ADX کی thresholds مختلف ترتیبات کی کوشش کر سکتے ہیں۔
اسٹاپ اسٹاپ نقصان کے الگورتھم کو بہتر بنایا جاسکتا ہے ، جیسے متحرک اسٹاپ اسٹاپ نقصان متعارف کرانا۔
دیگر اشارے کے ساتھ مجموعہ پر غور کیا جاسکتا ہے ، جیسے 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()