دوہری EMA کراس اوور ٹرینڈ ٹریکنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-29 11:45:42
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کے بنیادی اشارے ای ایم اے کے دو سیٹ ہیں ، جن میں ایک طویل سائیکل ای ایم اے 1 اور ایک مختصر سائیکل ای ایم اے 2 شامل ہیں۔ ای ایم اے 1 پیرامیٹر 21 ہے اور ای ایم اے 2 پیرامیٹر 10 ہے۔ حکمت عملی ان دونوں ای ایم اے کا حساب 4 گھنٹے کے سائیکل کی بنیاد پر کرتی ہے۔

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

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

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

  • دوہری ای ایم اے ڈھانچہ مختصر اور درمیانی مدت کے رجحانات میں ہونے والی تبدیلیوں کو مؤثر طریقے سے پکڑ سکتا ہے تاکہ رجحانات کا تعین کیا جا سکے۔

  • گولڈن کراس اور ڈیڈ کراس اشارے کے دو سیٹوں کی اضافی فلٹرنگ سے غلط سگنل کم ہوسکتے ہیں اور قیمتوں میں اتار چڑھاؤ کی وجہ سے غیر ضروری لین دین سے بچا جاسکتا ہے۔

  • اشارے کا حساب کرنے کے لئے چار گھنٹے کی سطح کا استعمال اعلی تعدد کی قیمتوں میں اتار چڑھاؤ کا مقابلہ کرسکتا ہے۔

  • حکمت عملی کی ساخت سادہ اور واضح ہے، سمجھنے اور لاگو کرنے میں آسان ہے، اور مقداری تجارتی ایپلی کیشنز کے لئے موزوں ہے.

خطرے کا تجزیہ

  • ای ایم اے کی دوہری ساخت استحکام کی منڈیوں کا اندازہ کرنے میں کم موثر ہے۔ استحکام کے طویل عرصے سے غلط سگنل پیدا ہوسکتے ہیں۔

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

  • حکمت عملی بنیادی تجزیہ کو یکجا کیے بغیر صرف تکنیکی اشارے پر انحصار کرتی ہے۔ اگر کمپنی کے بنیادی اصولوں میں بڑی تبدیلیاں آتی ہیں تو ، تکنیکی اشارے ناکام ہوسکتے ہیں۔

ان خطرات کو مندرجہ ذیل طریقوں سے کنٹرول کیا جا سکتا ہے:

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

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

  3. اقتصادی ماحول، پالیسیوں اور کمپنی کے بنیادی اصولوں میں تبدیلیوں کو متحرک طور پر پیرامیٹرز کو ایڈجسٹ کرنے کے لئے منسلک کریں.

اصلاح

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

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

  2. سٹاپ نقصان کے طریقہ کار کو شامل کریں. معقول سٹاپ نقصان کے مقامات مؤثر طریقے سے واحد نقصانات کو کنٹرول کرسکتے ہیں.

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

  4. مشین لرننگ کی تکنیکوں کو شامل کریں۔ ٹینسرفلو جیسے ماڈلز کو حقیقی وقت میں قیمت کے رجحانات کو درجہ بندی کرنے کے لئے تربیت دی جاسکتی ہے۔

نتیجہ


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

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)

مزید