द्वि-MACD परिमाणात्मक व्यापार रणनीति एक परिमाणात्मक व्यापार रणनीति है जो द्वि-समय फ्रेम MACD का उपयोग करके लागू की जाती है। यह रणनीति अधिक ट्रेडों का उद्घाटन करती है जब परिधीय MACD सूचकांक एक सुनहरा कांटा बनाता है, और दिन के MACD सूचकांक के एक मृत कांटा के रूप में समतल होता है। जब स्थिति खाली होती है, तो यदि दिन के MACD सूचकांक फिर से एक सुनहरा कांटा बनाता है, तो आप फिर से अधिक ट्रेडों का उद्घाटन कर सकते हैं।
द्विआधारी MACD क्वांटिफाइड ट्रेडिंग रणनीति प्रवेश और निकास संकेतों का निर्धारण करने के लिए साप्ताहिक MACD और दैनिक MACD संकेतकों के संयोजन का उपयोग करती है।
सबसे पहले, जब साप्ताहिक मैकडी के मैकडी लाइन पर सिग्नल लाइन गुजरती है, तो एक खरीद संकेत उत्पन्न होता है, जब अधिक व्यापार होता है; और फिर उस दिन के मैकडी सूचक के मैकडी लाइन के नीचे सिग्नल लाइन गुजरती है, तो एक बिक्री संकेत उत्पन्न होता है, जब यह समतल होता है।
जब स्थिति खाली होती है, तो यदि दैनिक MACD सूचकांक की MACD रेखा फिर से संकेत रेखा को पार करती है, तो यह फिर से अधिक हो जाता है; यानी, दैनिक MACD सूचकांक का गोल्डन फोर्क फिर से व्यापार करने की शर्त बन जाता है।
यह ध्यान रखना महत्वपूर्ण है कि दैनिक MACD के लिए एक मृत फोर्क को समतल किया जाता है, लेकिन एक बार फिर से व्यापार करने की अनुमति दी जानी चाहिए जब सप्ताह के MACD के लिए MACD लाइन सिग्नल लाइन से अधिक है।
द्वि-MACD क्वांटिफाइड ट्रेडिंग रणनीति दोहरे समय-सीमा विश्लेषण को जोड़ती है, जो प्रभावी रूप से झूठे संकेतों को फ़िल्टर कर सकती है और संकेतों की गुणवत्ता में सुधार कर सकती है। विशेष रूप से, इसके मुख्य फायदे हैंः
साप्ताहिक समय फ्रेम प्रमुख रुझानों की दिशा को निर्धारित करता है और प्रतिकूल व्यापार से बचने में मदद करता है।
दिन के समय के फ्रेम में प्रवेश और निकास का समय निर्धारित किया जाता है, जिससे अल्पकालिक ट्रेडिंग अवसरों को समय पर पकड़ा जा सकता है।
पेंच ट्रेडिंग विंडो पेंच तंत्र से कम समय के समायोजन के कारण बहुत अधिक बार पेंच खोलने से बचा जा सकता है।
एमएसीडी संकेतकों के पैरामीटर समायोज्य हैं और विभिन्न किस्मों और बाजार वातावरण के अनुसार अनुकूलित किए जा सकते हैं।
एक एकीकृत रोकथाम, रोकथाम और मोबाइल रोकथाम सुविधा जोखिम को प्रभावी ढंग से नियंत्रित कर सकती है।
द्वि-MACD परिमाणात्मक व्यापार रणनीति में कुछ जोखिम भी हैं, जिनमें मुख्य रूप से शामिल हैंः
एमएसीडी संकेतकों में झूठे संकेत और अक्सर क्रॉसिंग होने की संभावना होती है और पुष्टि के लिए अन्य संकेतकों के संयोजन की आवश्यकता होती है।
साप्ताहिक समय फ्रेम में निर्णय लेने की मुख्य प्रवृत्ति में बदलाव हो सकता है और समय पर नुकसान को रोकने की आवश्यकता है।
पैरामीटर को विभिन्न किस्मों और उद्योग परिवेशों के अनुसार लगातार अनुकूलित और समायोजित करने की आवश्यकता होती है।
पुनः परीक्षण के परिणामों पर अत्यधिक निर्भर नहीं होना चाहिए, वास्तविक डिस्क पुनः परीक्षण से भिन्न हो सकती है।
समाधान के लिएः
अन्य संकेतकों के साथ संयोजन में उपयोग किया जाता है, तर्कसंगत अनुकूलित रणनीतिक प्रणाली का निर्माण करता है।
एक उचित स्टॉप-लॉस स्केल सेट करें ताकि अधिकतम बर्दाश्त किए जाने वाले नुकसान से अधिक नुकसान से बचा जा सके।
लगातार पैरामीटर का अनुकूलन करें, सर्वोत्तम पैरामीटर संयोजन की तलाश करें।
इस तरह के एक छोटे से धन के साथ शुरू करने के लिए, रणनीति की स्थिरता को सत्यापित करें।
द्वि-MACD क्वांटिफाइड ट्रेडिंग रणनीति में और अधिक अनुकूलन के लिए जगह हैः
ब्रिनलाइन, केडीजे आदि अन्य संकेतकों को पेश किया जा सकता है, जो संकेत की गुणवत्ता में सुधार के लिए बहु-संकेतक संयोजन रणनीति का निर्माण कर सकते हैं।
यह व्यापारिक मात्रा के संकेतकों के साथ जोड़ा जा सकता है, जिससे कीमतों में वृद्धि के साथ-साथ अपर्याप्त मात्रा में व्यापार के साथ झूठे ब्रेकडाउन से बचा जा सकता है।
मशीन सीखने के तरीकों का उपयोग करके स्वचालित रूप से पैरामीटर अनुकूलन किया जा सकता है, जो पैरामीटर के गतिशील समायोजन को सक्षम करता है।
रणनीतियों के लिए आगे जोखिम समायोजन किए जा सकते हैं, जैसे कि लाभ-हानि अनुपात जैसे उन्नत स्टॉप-लॉस तरीकों को शामिल करना।
रणनीतिक अनुकूलन परीक्षण और अनुकूलन समायोजन, अनुकूलन समस्याओं से बचने के लिए।
द्वि-MACD क्वांटिफाइड ट्रेडिंग रणनीतियाँ दो समय-सीमा विश्लेषण को एकीकृत करती हैं ताकि प्रत्येक सूचक के लाभों का उपयोग करने के लिए मुख्य उप-प्रवृत्ति का विश्लेषण किया जा सके। रणनीतिक अनुकूलन के लिए बहुत अधिक जगह है और अन्य सूचकों को पेश करके, मशीन सीखने का उपयोग करके पैरामीटर अनुकूलन जैसे तरीकों का उपयोग करके रणनीतिक प्रभाव को और अधिक बढ़ाने की उम्मीद है। वास्तविक सत्यापन एक आवश्यक कदम है और रणनीतियों को और अधिक परिष्कृत करने के लिए एक महत्वपूर्ण आधार है।
/*backtest start: 2023-01-29 00:00:00 end: 2024-01-11 05:20:00 period: 1d basePeriod: 1h 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/ // © maxits // Long Position: Weekly Macd line crosses above Signal line // [Trading Window Macd Line > Signal Line] (Weekly) // Close Position: Daily Macd Line crosses above Daily Signal line. // Re Entry Condition: Macd line crosses above Signal line only if [Trading Window MacdLine > Sgnal Line] (Weekly) //@version=4 strategy("Dual MACD Strategy", shorttitle="Dual Macd Tester", overlay=false, initial_capital=1000, default_qty_value=20, default_qty_type=strategy.percent_of_equity, commission_value=0.1, pyramiding=0) // Define user inputs i_time = input(defval = timestamp("01 May 2018 13:30 +0000"), title = "Start Time", type = input.time) // Starting time for Backtesting f_time = input(defval = timestamp("9 Sep 2021 13:30 +0000"), title = "Finish Time", type = input.time) // Finishing time for Backtesting sep1 = input(false, title="------ Profit & Loss ------") enable_TP = input(true, title="Enable Just a Profit Level?") enable_SL = input(false, title="Enable Just a S.Loss Level?") enable_TS = input(true, title=" Enable Only Trailing Stop") long_TP_Input = input(30.0, title='Take Profit %', type=input.float, minval=0)/100 long_SL_Input = input(1.0, title='Stop Loss %', type=input.float, minval=0)/100 long_TS_Input = input(5.0, title='Trailing Stop %', type=input.float, minval=0)/100 cl_low_Input = input(low, title="Trailing Stop Source") long_TP = strategy.position_avg_price * (1 + long_TP_Input) long_SL = strategy.position_avg_price * (1 - long_SL_Input) long_TS = cl_low_Input * (1 - long_TS_Input) sep2 = input(false, title="------ Macd Properties ------") d_res = input(title="Short Term TimeFrame", type=input.resolution, defval="D") // Daily Time Frame w_res = input(title="Long Term TimeFrame", type=input.resolution, defval="W") // Weekly Time Frame src = input(close, title="Source") // Indicator Price Source fast_len = input(title="Fast Length", type=input.integer, defval=12) // Fast MA Length slow_len = input(title="Slow Length", type=input.integer, defval=26) // Slow MA Length sign_len = input(title="Sign Length", type=input.integer, defval=9) // Sign MA Length d_w = input(title="Daily or Weekly?", type=input.bool, defval=true) // Plot Daily or Weekly MACD // Color Plot for Macd col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 // BG Color bg_color = color.rgb(127, 232, 34, 75) // Daily Macd [d_macdLine, d_singleLine, d_histLine] = security(syminfo.tickerid, d_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución plot(d_w ? d_macdLine : na, color=color.blue) plot(d_w ? d_singleLine : na, color=color.orange) plot(d_w ? d_histLine : na, style=plot.style_columns, color=(d_histLine>=0 ? (d_histLine[1] < d_histLine ? col_grow_above : col_fall_above) : (d_histLine[1] < d_histLine ? col_grow_below : col_fall_below))) // Weekly Macd [w_macdLine, w_singleLine, w_histLine] = security(syminfo.tickerid, w_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución plot(d_w ? na : w_macdLine, color=color.blue) plot(d_w ? na : w_singleLine, color=color.orange) plot(d_w ? na : w_histLine, style=plot.style_columns, color=(w_histLine>=0 ? (w_histLine[1] < w_histLine ? col_grow_above : col_fall_above) : (w_histLine[1] < w_histLine ? col_grow_below : col_fall_below))) ///////////////////////////////// Entry Conditions inTrade = strategy.position_size != 0 // Posición abierta notInTrade = strategy.position_size == 0 // Posición Cerrada start_time = true trading_window = w_macdLine > w_singleLine // Weekly Macd Signal enables a trading window bgcolor(trading_window ? bg_color : na) buy_cond = crossover (w_macdLine, w_singleLine) sell_cond = crossunder(d_macdLine, d_singleLine) re_entry_cond = crossover (d_macdLine, d_singleLine) and trading_window // Entry Exit Conditions trailing_stop = 0.0 // Code for calculating Long Positions Trailing Stop Loss trailing_stop := if (strategy.position_size != 0) stopValue = long_TS max(trailing_stop[1], stopValue) else 0 if (buy_cond and notInTrade and start_time) strategy.entry(id="First Entry", long=strategy.long, comment="First Long") if (sell_cond and inTrade) strategy.close(id="First Entry", comment="Close First Long") if (re_entry_cond and notInTrade and start_time) strategy.entry(id="Further Entry", long=strategy.long, comment="Further Entry") if (sell_cond and inTrade) strategy.close(id="Further Entry", comment="Close First Long") if enable_TP if (enable_TS and not enable_SL) strategy.exit("Long TP & TS FiEn", "First Entry", limit = long_TP, stop = trailing_stop) strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = trailing_stop) else if (enable_SL and not enable_TS) strategy.exit("Long TP & TS FiEn", "First Entry", limit = long_TP, stop = long_SL) strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = long_SL) else strategy.exit("Long TP & TS FiEn", "First Entry", limit = long_TP) strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP) else if not enable_TP if (enable_TS and not enable_SL) strategy.exit("Long TP & TS FiEn", "First Entry", stop = trailing_stop) strategy.exit("Long TP & TS FuEn", "Further Entry", stop = trailing_stop) else if (enable_SL and not enable_TS) strategy.exit("Long TP & TS FiEn", "First Entry", stop = long_SL) strategy.exit("Long TP & TS FuEn", "Further Entry", stop = long_SL) plot(enable_TP ? long_TP : na, title="TP Level", color=color.green, style=plot.style_linebr, linewidth=2) plot(enable_SL ? long_SL : na, title="SL Level", color=color.red, style=plot.style_linebr, linewidth=2) plot(enable_TS and trailing_stop ? trailing_stop : na, title="TS Level", color=color.red, style=plot.style_linebr, linewidth=2)