यह रणनीति ट्रेडों को ट्रैक करने के लिए बाजार की प्रवृत्ति की दिशा निर्धारित करने के लिए चलती औसत SMA और EMA के दो समूहों के बीच क्रॉसओवर की गणना करती है।
विशेष रूप से, यह एक तेज़ और एक धीमी गति से चलने वाली औसत जोड़ी का उपयोग करता है। जब तेज़ रेखा धीमी रेखा के ऊपर पार करती है, तो यह लंबी जाती है, और नीचे की ओर क्रॉसओवर पर छोटी हो जाती है। जब कीमत धीमी रेखा से नीचे गिरती है या तेज़ रेखा से ऊपर उठती है तो बाहर निकलती है। एमए लंबाई, बार्डेड क्लोजिंग आदि का अनुकूलन पैरामीटर अनुकूलन की अनुमति देता है।
इस दोहरी एमए रणनीति का लाभ दो गतिशील एमए के आधार पर सरल और स्पष्ट नियम हैं। ईएमए का उपयोग करने से उलटफेर को पकड़ने में अधिक संवेदनशीलता मिलती है। लेकिन रेंज-बाउंड बाजारों के दौरान भी आसानी से व्हिपसाव होते हैं।
सामान्य तौर पर, डबल एमए क्रॉसओवर ट्रैकिंग रणनीति गति की दिशा में व्यापार करने के लिए ट्रेंडिंग बाजारों के लिए उपयुक्त है। लेकिन उचित पैरामीटर ट्यूनिंग, सख्त स्टॉप लॉस और स्थिति आकार इस रणनीति की दीर्घकालिक स्थिरता के लिए महत्वपूर्ण है।
/*backtest start: 2023-08-11 00:00:00 end: 2023-09-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // strategy("Moving Average Strategy of BiznesFilosof", shorttitle="MAS of BiznesFilosof", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0) //Period startY = input(title="Start Year", defval = 2011) startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12) startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31) finishY = input(title="Finish Year", defval = 2050) finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12) finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31) //finish = input(2019, 02, 28, 00, 00) timestart = timestamp(startY, startM, startD, 00, 00) timefinish = timestamp(finishY, finishM, finishD, 23, 59) window = time >= timestart and time <= timefinish ? true : false // Lenghth strategy lma1 = input(title="Length MA1", defval = 21, minval=1) exponential1 = input(false, title="exponential") lma2 = input(title="Length MA2", defval = 1, minval=1) exponential2 = input(false, title="exponential") lbars = input(title="Length bars close", defval = 0, minval=0) ma1 = exponential1 ? ema(close, lma1) : sma(close, lma1) ma2 = exponential2 ? ema(close, lma2) : sma(close, lma2) //source = close source = ma2 //open strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(ma2, ma1) and window) strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(ma2, ma1) and window) if crossunder(source, ma1) and strategy.position_size > 0 strategy.close_all() if crossunder(ma2[lbars], ma1[lbars]) and strategy.position_size > 0 and lbars != 0 strategy.close_all() if crossover(source, ma1) and strategy.position_size < 0 strategy.close_all() if crossover(ma2[lbars], ma1[lbars]) and strategy.position_size < 0 and lbars != 0 strategy.close_all() src = close src1 = high src2 = low maH = exponential1 ? ema(src1, lma1) : sma(src1, lma1) maL = exponential1 ? ema(src2, lma1) : sma(src2, lma1) maColor = src>maH ? green : src<maL ? red : blue plot(ma1, title="MA1", color=maColor, linewidth=2, style=line) plot(ma2, title="MA2", color=gray, linewidth=1, style=line)