ट्रेंड फिल्टर मूविंग एवरेज क्रॉसओवर मात्रात्मक रणनीति एक मध्यम से दीर्घकालिक मात्रात्मक ट्रेडिंग रणनीति है। यह तेजी से और धीमी गति से चलती औसत के क्रॉसओवर के माध्यम से बाजार की प्रवृत्ति दिशा निर्धारित करती है, और एक प्रभावी प्रवृत्ति की पहचान करने की शर्त के तहत बाजार में प्रवेश करती है। साथ ही, यह रणनीति एक लंबी चक्र चलती औसत को ट्रेंड फिल्टर के रूप में भी निर्धारित करती है, ताकि वैध ट्रेडिंग सिग्नल केवल तभी उत्पन्न हो सकें जब कीमतें उस चलती औसत को तोड़ दें।
यह रणनीति मुख्य रूप से चलती औसत क्रॉसओवर के सिद्धांत पर आधारित है। विशेष रूप से, दो अलग-अलग अवधि के साथ चलती औसत की गणना की जाती है, आमतौर पर 20-दिवसीय और 50-दिवसीय लाइनों पर सेट की जाती है। एक खरीद संकेत तब उत्पन्न होता है जब 20-दिवसीय रेखा नीचे से ऊपर की ओर से 50-दिवसीय रेखा से ऊपर टूट जाती है, और एक बिक्री संकेत तब उत्पन्न होता है जब 20-दिवसीय रेखा ऊपर से नीचे की ओर 50-दिवसीय रेखा को तोड़ती है। इन सरल क्रॉसओवर संकेतों को मध्यम से दीर्घकालिक में ब्रेकआउट को पकड़ने के लिए माना जाता है।
इसके अतिरिक्त, रणनीति में 200-दिवसीय चलती औसत को समग्र प्रवृत्ति बेंचमार्क के रूप में भी निर्धारित किया गया है। केवल जब कीमत 200-दिवसीय रेखा को तोड़ती है, तो उपरोक्त सरल क्रॉसओवर संकेतों को मान्य माना जाता है। यह एक श्रेणीबद्ध बाजार में बहुत सारे अमान्य संकेत उत्पन्न करने से बचने के लिए एक प्रवृत्ति फ़िल्टरिंग तंत्र का गठन करता है।
मध्यम से दीर्घकालिक व्यापारिक आवृत्ति अत्यधिक व्यापार से बचती है, व्यापारिक लागतों और फिसलने के जोखिमों को कम करती है।
चलती औसत क्रॉसओवर निर्धारण स्पष्ट और समझने और लागू करने में आसान है।
प्रवृत्ति फ़िल्टरिंग तंत्र अधिकांश अमान्य संकेतों को फ़िल्टर कर सकता है और जीत दर में सुधार कर सकता है।
चलती औसत मापदंडों का लचीला समायोजन विभिन्न किस्मों और समय चक्रों पर लागू होता है।
स्टॉप लॉस और टेक प्रॉफिट को एकल लाभ और हानि को नियंत्रित करने के लिए सेट किया जा सकता है।
जब कीमत चलती औसत के आसपास घूमती है, तो कई अमान्य संकेत उत्पन्न हो सकते हैं जिसके परिणामस्वरूप अधिक व्यापार हो सकता है।
लंबी अवधि के चलती औसत बाजार से पीछे रह सकते हैं और इस प्रकार रुझान उलटने के बिंदुओं को याद कर सकते हैं।
चलती औसत बेंचमार्क स्थापित करने के लिए अपेक्षाकृत लंबे ऐतिहासिक आंकड़ों की आवश्यकता होती है, जिससे नई किस्में या छोटे चक्र लागू नहीं होते हैं।
रणनीति मापदंडों को बार-बार परीक्षण और अनुकूलन की आवश्यकता होती है, अनुचित सेटिंग्स रणनीति विफलता का कारण बन सकती हैं।
जोखिम को कम करना:
लंबी चक्र चलती औसत को अपनाएं, या प्रवृत्ति फ़िल्टरिंग स्थितियों को बढ़ाएं।
मुख्य प्रवृत्ति को निर्धारित करने के लिए अन्य संकेतकों को शामिल करें, जैसे ऊर्जा संकेतकों, अस्थिरता संकेतकों आदि।
चलती औसत चक्र मापदंडों की अनुकूलन क्षमता में सुधार।
रणनीतिक मापदंडों को गतिशील रूप से समायोजित करने के लिए पैरामीटर अनुकूलन और प्रतिक्रिया तंत्र को बढ़ाएं।
विभिन्न प्रकार के चलती औसत का प्रयास करें, जैसे कि रैखिक भारित चलती औसत।
अनुकूलनशील चलती औसत चक्र कार्यक्षमता में वृद्धि।
प्रवृत्ति चरणों को निर्धारित करने के लिए अस्थिरता संकेतकों को शामिल करना, चलती औसत क्रॉसओवर की वैधता में सुधार करना।
स्वचालित रूप से रणनीति मापदंडों का अनुकूलन करने के लिए मशीन लर्निंग एल्गोरिदम पेश करें।
लाभ के लिए परिसंपत्तियों के बीच सहसंबंधों का उपयोग करके बहु-संपत्ति संयोजन रणनीतियों का अन्वेषण करें।
ट्रेंड फिल्टर मूविंग एवरेज क्रॉसओवर रणनीति एक सरल और व्यावहारिक मध्यम से दीर्घकालिक मात्रात्मक रणनीति है। यह मूविंग एवरेज क्रॉसओवर के माध्यम से मध्यम से दीर्घकालिक प्रवृत्ति निर्धारित करती है, और फिर अमान्य संकेतों को कम करने के लिए प्रवृत्ति फ़िल्टरिंग का उपयोग करती है। इस रणनीति का लाभ यह है कि इसे समझना और लागू करना आसान है, मात्रात्मक व्यापार के शुरुआती लोगों के लिए उपयुक्त है। सुधार के संभावित क्षेत्र मूविंग एवरेज के अनुकूलन में निहित हैं, साथ ही अन्य संकेतकों और मशीन लर्निंग एल्गोरिदम के साथ एकीकरण। एक बुनियादी रणनीति के रूप में, यह अधिक उन्नत मात्रात्मक मध्यस्थता एल्गोरिदम के लिए व्यापार संकेत प्रदान कर सकती है।
/*backtest start: 2023-11-23 00:00:00 end: 2023-11-30 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //////////////////////////////////////////////////////////////////////////////// // Booz Strategy // Developed for Godstime // Version 1.1 // 11/28/2021 //////////////////////////////////////////////////////////////////////////////// //@version=4 strategy("Booz Strategy", "", true) // ----------------------------- Inputs ------------------------------------- // source_ma_type = input("EMA", "Source MA Type", options=["SMA", "EMA"]) source_ma_length = input(50, "Source MA Length") fast_ma_length = input(20, "Fast MA Length") slow_ma_length = input(50, "Slow MA Length") use_trend_filter = input(true, "Trend Filter") trend_filter_ma_type = input("EMA", "Trend Filter MA Type", options=["SMA", "EMA"]) trend_filter_ma_length = input(200, "Trend Filter MA Period") show_mas = input(true, "Show MAs") swing_trading_mode = input(false, "Swing Trading") // -------------------------- Calculations ---------------------------------- // fast_ma = ema(close, fast_ma_length) slow_ma = ema(close, slow_ma_length) source_ma = source_ma_type == "EMA"? ema(close, source_ma_length): sma(close, source_ma_length) trend_filter_ma = trend_filter_ma_type == "EMA"? ema(close, trend_filter_ma_length): sma(close, trend_filter_ma_length) // --------------------------- Conditions ----------------------------------- // uptrend = not use_trend_filter or close > trend_filter_ma buy_cond = crossover(fast_ma, slow_ma) and uptrend downtrend = not use_trend_filter or close < trend_filter_ma sell_cond = crossunder(fast_ma, slow_ma) and downtrend // ---------------------------- Plotting ------------------------------------ // bgcolor(use_trend_filter and downtrend? color.red: use_trend_filter? color.green: na) plot(show_mas? fast_ma: na, "Fast MA", color.green) plot(show_mas? slow_ma: na, "Slow MA", color.red) plot(show_mas? source_ma: na, "Source MA", color.purple) plot(show_mas? trend_filter_ma: na, "Trend Filter MA", color.blue) // ---------------------------- Trading ------------------------------------ // // Inputs sl_perc = input(1.0, "Stop Loss (in %)", group="Backtest Control")/100 tp_perc = input(1.0, "Take Profit (in %)", group="Backtest Control")/100 leverage = input(10, "Leverage", maxval=100, group="Backtest Control") bt_start_time = input(timestamp("2021 01 01"), "Backtest Start Time", input.time, group="Backtest Control") bt_end_time = input(timestamp("2021 12 31"), "Backtest End Time", input.time, group="Backtest Control") // Trading Window in_trading_window = true trade_qty = 1 // Long Side strategy.entry("Long Entry", strategy.long, trade_qty, when=buy_cond and in_trading_window) long_tp = strategy.position_avg_price * (1 + tp_perc) long_sl = strategy.position_avg_price * (1 - sl_perc) if not swing_trading_mode strategy.exit("Long Exit", "Long Entry", limit=long_tp, stop=long_sl) // Short Side strategy.entry("Short Entry", strategy.short, trade_qty, when=sell_cond and in_trading_window) short_tp = strategy.position_avg_price * (1 - tp_perc) short_sl = strategy.position_avg_price * (1 + sl_perc) if not swing_trading_mode strategy.exit("Short Exit", "Short Entry", limit=short_tp, stop=short_sl) // End of trading window close strategy.close_all(when=not in_trading_window)