ڈبل موونگ ایوریج کراس اوور حکمت عملی مختلف ادوار کے موونگ ایوریجز کا حساب لگاتے ہوئے قیمت کے رجحان کی سمت کا فیصلہ کرتی ہے ، اور رجحان کی پیروی کرتی ہے۔ جب مختصر مدت ایم اے طویل مدت ایم اے سے عبور کرتا ہے تو یہ لمبا ہوجاتا ہے ، اور جب مختصر مدت ایم اے طویل مدت ایم اے سے نیچے عبور کرتا ہے تو مختصر ہوجاتا ہے۔ یہ ایک عام رجحان کی پیروی کرنے والی حکمت عملی ہے۔
یہ حکمت عملی 9، 21 اور 50 مدت کے ایکسپونینشل موونگ اوسط (ای ایم اے) پر مبنی ہے۔ 9 مدت ای ایم اے مختصر مدت کے رجحان کی نمائندگی کرتا ہے، 21 مدت ای ایم اے درمیانی مدت کے رجحان کی نمائندگی کرتا ہے، اور 50 مدت ای ایم اے طویل مدتی رجحان کی نمائندگی کرتا ہے.
جب 9 پیریڈ ای ایم اے 21 پیریڈ ای ایم اے سے تجاوز کرتا ہے تو ، اس سے قلیل مدتی میں بڑھتی ہوئی رجحان کا اشارہ ہوتا ہے ، اس طرح طویل عرصے تک جاتا ہے۔ جب 9 پیریڈ ای ایم اے 21 پیریڈ ای ایم اے سے نیچے عبور کرتا ہے تو ، اس سے قلیل مدتی میں کمی کا اشارہ ہوتا ہے ، اس طرح مختصر ہوجاتا ہے۔ کراس اوور ((() فنکشن کا استعمال یہاں ایم اے کے مابین کراس اوور کا تعین کرنے کے لئے کیا جاتا ہے۔
لانگ / شارٹ انٹری ، لیو منافع اور اسٹاپ نقصان کے لئے منطق تشکیل دی گئی ہے۔ انٹری کی شرط ایم اے کا کراس اوور ہے۔ لانگ لیو منافع انٹری قیمت ہے * (1 + ان پٹ لیو منافع تناسب) ، شارٹ لیو منافع انٹری قیمت ہے * (1 - ان پٹ لیو منافع تناسب) ۔ لانگ اسٹاپ نقصان انٹری قیمت ہے * (1 - ان پٹ اسٹاپ نقصان تناسب) ، شارٹ اسٹاپ نقصان انٹری قیمت ہے * (1 + ان پٹ اسٹاپ نقصان تناسب) ۔
کچھ فلٹرز بھی شامل کیے جاتے ہیں ، جیسے رجحان فلٹر تاکہ سائیڈ ویز سے گریز کیا جاسکے ، اور ایکویٹی فلٹر تاکہ اسٹریٹجک ایکویٹی بہت کم ہونے پر تجارت سے گریز کیا جاسکے۔ یہ فلٹرز کچھ غلط اشاروں سے بچنے میں مدد کرسکتے ہیں۔
خلاصہ یہ ہے کہ ، یہ حکمت عملی قیمت کی رجحان کی سمت کا تعین کرنے کے لئے ڈبل ای ایم اے کراس اوورز کا استعمال کرتی ہے ، جس میں مناسب منافع اور اسٹاپ نقصان کا منطق ہوتا ہے ، جو درمیانی سے طویل مدتی رجحانات کو پکڑ سکتا ہے۔ لیکن ایک عنصر کی حکمت عملی کے طور پر ، سگنل کافی مستحکم نہیں ہوسکتے ہیں اور مزید بہتر بنایا جاسکتا ہے۔
رجحان کی سمت کا تعین کرنے کے لئے دوہری ایم اے کراسورس کا استعمال کرتے ہوئے، منطق سادہ اور سمجھنے میں آسان ہے.
مختلف ادوار کے EMAs کو اپنانے سے قلیل مدتی اور طویل مدتی رجحانات کا اندازہ لگایا جاسکتا ہے۔
منافع اور سٹاپ نقصان منطق منافع میں تالے اور کنٹرول خطرے.
فلٹرز کچھ غلط اشاروں سے کچھ حد تک بچنے میں مدد کرتے ہیں۔
پیرامیٹرز کو آزادانہ طور پر تشکیل دیا جاسکتا ہے ، مختلف مارکیٹ کے ماحول کے لئے ادوار کو بہتر بنایا جاسکتا ہے۔
ایک واحد عنصر کی حکمت عملی کے طور پر ، تجارتی سگنل کافی مستحکم نہیں ہوسکتے ہیں۔ قیمتوں میں استحکام کے دوران وِپساؤس ہوسکتے ہیں۔
جب کراس اوور ہوتا ہے تو ، قیمت پہلے ہی بڑھتی / کم ہوتی ہے ، جس میں اعلی خریدنے اور کم فروخت کرنے کا خطرہ ہوتا ہے۔
تجارتی اخراجات پر غور نہیں کیا جاتا، اصل منافع کم ہو سکتا ہے.
کوئی سٹاپ نقصان کی جگہ، انتہائی مارکیٹ کے حالات میں لامحدود نقصان کا خطرہ.
حل:
زیادہ مستحکم سگنل کے لئے ایم اے کے ادوار کو بہتر بنائیں.
سگنل فلٹر کرنے کے لئے دیگر اشارے شامل کریں.
لاگت کے اثرات کو کم کرنے کے لئے تجارت کا سائز بڑھانا۔
زیادہ سے زیادہ نقصان کو محدود کرنے کے لئے مناسب سٹاپ نقصان مقرر کریں.
حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:
بہترین مجموعے تلاش کرنے کے لئے ایم اے ادوار کو بہتر بنائیں، یا متحرک طور پر بہترین ادوار کو منتخب کرنے کے لئے انکولی اصلاح کا استعمال کریں.
سگنلز کو فلٹر کرنے اور معیار کو بہتر بنانے کے لئے دیگر تکنیکی اشارے جیسے ایم اے سی ڈی ، کے ڈی وغیرہ شامل کریں ، یا سگنلز کو اسکور کرنے اور غلطوں کو فلٹر کرنے کے لئے مشین لرننگ کا استعمال کریں۔
حجم کا تجزیہ شامل کریں۔ اگر ایم اے کراس اوور پر حجم ناکافی ہے تو سگنل نہ لیں.
کراس اوور ہونے سے پہلے قیمتوں میں اتار چڑھاؤ کی جانچ پڑتال کریں۔ رینجنگ مارکیٹ میں کراس اوور غلط سگنل ہوسکتا ہے۔
متحرک سٹاپ نقصان کے طریقہ کار کی تعمیر کریں جیسے ٹریلنگ سٹاپ نقصان، چنڈلیئر باہر نکلیں وغیرہ، سٹاپ نقصان کی دوری کو کم کرنے کے لئے لیکن اسے مؤثر رکھیں.
زیادہ معقول منافع/نقصان کے تناسب کے حصول کے لیے پوزیشن سائزنگ جیسے فکسڈ/ڈینامک/لیوریجڈ کو بہتر بنائیں۔
تجارتی اخراجات ، سلائپج پر جامع طور پر غور کریں۔ براہ راست تجارت میں منافع بخش کو یقینی بنانے کے لئے منافع / اسٹاپ نقصان کے تناسب کو بہتر بنائیں۔
اس حکمت عملی کا مجموعی ڈھانچہ صحت مند ہے ، جس میں رجحان کی سمت کا تعین کرنے کے لئے ڈبل ای ایم اے کراس اوور کی سادہ منطق ہے ، جس میں رجحانات کو پکڑنے کے لئے منافع اور اسٹاپ نقصان کی منطق بھی شامل ہے۔ ایک واحد عنصر کی حکمت عملی کے طور پر ، اسے پیرامیٹرز ، سگنل فلٹرز وغیرہ پر مزید بہتر بنایا جاسکتا ہے تاکہ اسے زیادہ مضبوط بنایا جاسکے۔ اسٹاپ نقصان اور پوزیشن سائزنگ کے ساتھ ، خطرات کو مزید کم کیا جاسکتا ہے۔ مجموعی طور پر ، یہ حکمت عملی کے فریم ورک کے بعد ایک ٹھوس رجحان فراہم کرتا ہے ، جو اصلاحات اور ایڈجسٹمنٹ کے بعد مستقل منافع حاصل کرسکتا ہے۔
/*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 = " ")