ڈبل موونگ ایوریج کراس اوور حکمت عملی


تخلیق کی تاریخ: 2023-11-16 17:50:52 آخر میں ترمیم کریں: 2023-11-16 17:50:52
کاپی: 0 کلکس کی تعداد: 688
1
پر توجہ دیں
1617
پیروکار

ڈبل موونگ ایوریج کراس اوور حکمت عملی

جائزہ

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

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

یہ حکمت عملی 9، 21 اور 50 دوروں پر مبنی ایک انڈیکس منتقل اوسط (ای ایم اے) پر مبنی ہے۔ اس میں 9 دور ای ایم اے مختصر مدت کے رجحانات کی نمائندگی کرتا ہے ، 21 دور ای ایم اے درمیانی مدت کے رجحانات کی نمائندگی کرتا ہے ، اور 50 دور ای ایم اے طویل مدتی رجحانات کی نمائندگی کرتا ہے۔

جب 9 دورانیہ ای ایم اے پر 21 دورانیہ ای ایم اے سے گزرتا ہے تو ، مختصر مدت کے رجحان کو اوپر کی طرف موڑ دیتا ہے ، اور زیادہ ہوتا ہے۔ جب 9 دورانیہ ای ایم اے پر 21 دورانیہ ای ایم اے سے گزرتا ہے تو ، مختصر مدت کے رجحان کو نیچے کی طرف موڑ دیتا ہے ، اور خالی ہوجاتا ہے۔

کوڈ میں لانگ پوزیشن اور خالی پوزیشن کے لئے کھولنے ، روکنے ، نقصان کو روکنے کا منطق ترتیب دیا گیا ہے۔ پوزیشن کھولنے کی شرائط یکساں لائن پر پہننے یا نیچے پہننے کے لئے ہیں۔ کثیر سر اسٹاپ داخلہ قیمت × ((1+ ان پٹ اسٹاپ کا تناسب) ، خالی سر اسٹاپ داخلہ قیمت × ((1- ان پٹ اسٹاپ کا تناسب) ۔ کثیر سر اسٹاپ داخلہ قیمت × 1- ((( ان پٹ اسٹاپ کا تناسب) ، خالی سر اسٹاپ داخلہ قیمت × ((1+ ان پٹ اسٹاپ کا تناسب) ۔

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

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

کیا کرنا ہے:

  1. سگنل کو زیادہ مستحکم بنانے کے لئے ایم اے سائیکل پیرامیٹرز کو بہتر بنائیں۔
  2. دوسرے اشارے کے ساتھ مل کر فلٹر سگنل
  3. ٹرانزیکشن کی تعداد میں اضافہ اور لاگت کے اثرات کو کم کرنا
  4. سٹاپ نقصان کی حد مقرر کریں، زیادہ سے زیادہ نقصان کو محدود کریں.

اصلاح کی سمت

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

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

  2. دیگر تکنیکی اشارے فلٹر سگنل شامل کریں ، جیسے MACD ، KD ، وغیرہ ، سگنل کے معیار کو بہتر بنائیں۔ یا مشین لرننگ متعارف کروائیں تاکہ سگنل کو درجہ دیا جاسکے ، جو خود بخود جعلی سگنل کو فلٹر کرے۔

  3. حجم تجزیہ کے ساتھ مل کر: اوسط لائن کو توڑنے کے باوجود ، جب حجم کم ہوتا ہے تو ، سگنل نہیں ملتا ہے۔

  4. جب ایک بریک اپ ہوتا ہے تو ، پہلے سے موجود اتار چڑھاؤ کی جانچ پڑتال کی جاتی ہے ، جیسے کہ زلزلے کے علاقے میں ایک بریک اپ ، جو جھوٹا بریک اپ ہوسکتا ہے۔

  5. متحرک اسٹاپ میکانیزم قائم کریں ، جیسے ٹریک ٹائپ اسٹاپ ، چانڈیلیئر ایگزٹ وغیرہ ، تاکہ اسٹاپ کا فاصلہ کم کیا جاسکے ، لیکن اس بات کو یقینی بنائیں کہ اسٹاپ موثر ہو۔

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

  7. ٹریڈنگ کے اخراجات اور سلائڈ پوائنٹ کے اثرات کو مکمل طور پر مدنظر رکھنا۔ سٹاپ اسٹاپ نقصان کی شرح کو بہتر بنانا ، اس بات کو یقینی بنانا کہ حکمت عملی حقیقی وقت میں منافع بخش رہے۔

خلاصہ کریں۔

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TradingMentalist

//@version=4
strategy("Initial template",initial_capital=1000, overlay=true, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////inputs
//turn on/off longs/shorts / extraneous conditions
longinc=input(true, title="include longs?")
lConSw2=input(true, title="condition two?")
lConSw3=input(true, title="condition three?")
shotinc=input(true, title="include shorts?")
sConSw2=input(true, title="condition two?")
sConSw3=input(true, title="condition three?")

//turn on/off / adjust trade filters (average range/average equity)
sidein2     = input(200, step=10, title='lookback for average range (bars)')
sidein      = input(1, title='filter trades if range is less than (%)')/100
equityIn    = input(40, title='filter trades if equity is below ema()')
sidewayssw  = input(true, title='sideways filter?')
equitysw    = input(true, title='equity filter?')
longtpin    = input(1,step=0.1, title='long TP %')/100
longslin    = input(0.4,step=0.1, title='long SL %')/100
shorttpin   = input(1,step=0.1, title='short TP %')/100
shortslin   = input(0.4,step=0.1, title='short SL %')/100

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////filters
//(leave as is)
side1       = (close[1] + close[sidein2]) / 2
side2       = close[1] - close[sidein2] 
side3       = side2 / side1
notsideways = side3 > sidein
equityMa    = equitysw ? ema(strategy.equity, equityIn) : 0
equityCon   = strategy.equity >= equityMa

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////indicators
ma1 = ema(close, 9)
ma2 = ema(close, 21)
ma3 = ema(close, 50)

plot(ma1, color=color.new(#E8B6B0,50))
plot(ma2, color=color.new(#B0E8BE,50))
plot(ma3, color=color.new(#00EEFF,50))

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////conditions
//adjust conditions
//-------------------------------------------
longCondition1  = crossover(ma2,ma3)
longCondition2  = close[5] > close[10]
longCondition3  = close[1] > close[2]

shortCondition1 = crossover(ma3,ma2)
shortCondition2 = close[5] < close[10]
shortCondition3 = close[1] < close[2]

closelong       = shortCondition1
closeshort      = longCondition1
//-------------------------------------------

//(leave as is)
longCondition1in  = longCondition1
longCondition2in  = lConSw2 ? longCondition2 : true
longCondition3in  = lConSw3 ? longCondition3 : true
shortCondition1in = shortCondition1
shortCondition2in = sConSw2 ? shortCondition2: true
shortCondition3in = sConSw3 ? shortCondition3: true
longConditions    = longCondition1in and longCondition2in and longCondition3in
shortConditions   = shortCondition1in and shortCondition2in and shortCondition3in

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////execution
//(leave as is)
long            = sidewayssw ? notsideways and equityCon and longConditions : equityCon and longConditions
short           = sidewayssw ? notsideways and equityCon and shortConditions : equityCon and shortConditions

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////risk
//(leave as is)
longtplevel     = strategy.position_avg_price * (1 + longtpin)
longsllevel     = strategy.position_avg_price * (1 - longslin)
shorttplevel    = strategy.position_avg_price * (1 - shorttpin)
shortsllevel    = strategy.position_avg_price * (1 + shortslin)

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////timeframe
//adjust timeframe
//-------------------------------------------
startyear   = 2000
startmonth  = 1
startday    = 1

stopyear    = 9999
stopmonth   = 12
stopday     = 31
//-------------------------------------------

//(leave as is)
startperiod = timestamp(startyear,startmonth,startday,0,0)
periodstop  = timestamp(stopyear,stopmonth,stopday,0,0)
timeframe()    =>
    time >= startperiod and time <= periodstop ? true : false

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////orders
//comments are empty characters for clear chart
if timeframe()
    if longinc
        if strategy.position_size == 0 or strategy.position_size > 0 
            strategy.entry(id="long", long=true, when=long, comment=" ")
            strategy.exit("stop","long", limit=longtplevel, stop=longsllevel,comment=" ")
            strategy.close(id="long", when=closelong, comment = " ")
    if shotinc
        if strategy.position_size == 0 or strategy.position_size < 0 
            strategy.entry(id="short", long=false, when=short, comment = " ")
            strategy.exit("stop","short", limit=shorttplevel, stop=shortsllevel,comment = " ")
            strategy.close(id="short", when=closeshort, comment = " ")