यह बिटकॉइन के लिए एक कस्टम लंबी / छोटी ट्रेडिंग रणनीति है जो सप्ताह के विभिन्न दिनों में लालसा या शॉर्टिंग को बैकटेस्ट करने की अनुमति देती है। कीमत प्रत्येक कार्यदिवस पर एक दिशा या दूसरे में बढ़ने की प्रवृत्ति रख सकती है, और यह रणनीति इस पर लाभ उठाने के लिए तारीखों की एक श्रृंखला में परीक्षण की अनुमति देती है।
सुनिश्चित करें कि आप प्रदर्शन और व्यापार इतिहास को देखने पर दैनिक समय सीमा पर हैं ताकि यह सुनिश्चित हो सके कि स्क्रिप्ट अपेक्षित रूप से काम करे और आपके पास ट्रेडिंग व्यू से अधिकतम ऐतिहासिक डेटा हो।
रणनीति का मूल तर्क यह है कि उपयोगकर्ता सप्ताह के प्रत्येक दिन के लिए लंबी, छोटी या कोई व्यापार नहीं चुन सकता है।
सबसे पहले, यह उपयोगकर्ता को बैकटेस्टिंग के लिए तिथि सीमा निर्धारित करने की अनुमति देता है, जिसमें प्रारंभ महीना, दिन, वर्ष और अंत महीना, दिन, वर्ष शामिल हैं।
फिर, यह रविवार 0 से शनिवार 6 तक सप्ताह के प्रत्येक दिन के संख्यात्मक प्रतिनिधित्व को संग्रहीत करने के लिए एक सरणी समय सीमा का उपयोग करता है।
एक और सरणी timeframes_options का उपयोग प्रत्येक दिन के लिए लंबे, छोटे या कोई व्यापार नहीं करने के विकल्प को संग्रहीत करने के लिए किया जाता है। यह एक इनपुट विकल्प के माध्यम से सेट किया जाता है।
For लूप में, रणनीति यह जांचती है कि क्या वर्तमान ट्रेडिंग दिन टाइमफ्रेम सरणी में एक दिन से मेल खाता है। यदि ऐसा है, और विकल्प पिछले दिन से भिन्न है, तो यह पहले सभी खुली स्थिति को बंद करता है।
यदि विकल्प
इस प्रकार, रणनीति सप्ताह के प्रत्येक दिन के लिए सेटिंग्स के आधार पर निर्धारित दिनांक सीमा पर लंबी/लघु व्यापार कर सकती है।
इस रणनीति का मुख्य लाभ अत्यधिक अनुकूलन योग्य लंबी / छोटी ट्रेडिंग प्रदान करना है। सप्ताह के प्रत्येक दिन के लिए ट्रेडिंग दिशा चुनने में उपयोगकर्ता को पूर्ण स्वतंत्रता है।
फिक्स्ड साप्ताहिक ट्रेडिंग रणनीतियों के विपरीत, इसे लचीले ढंग से समायोजित किया जा सकता है। खराब प्रदर्शन करने वाले दिनों को केवल अन्य दिनों में व्यापार करने के लिए आसानी से संशोधित किया जा सकता है।
बैकटेस्ट तिथि सीमा भी अत्यधिक लचीली है, जिससे यह देखने के लिए किसी भी उपयोगकर्ता निर्दिष्ट अवधि का परीक्षण किया जा सकता है कि कौन से तिथि संयोजन सबसे अच्छा प्रदर्शन करते हैं।
व्यापारिक तर्क बहुत स्पष्ट और सरल है, समझने और संशोधित करने में आसान है। उपयोगकर्ता बिना कोडिंग के मापदंडों को समायोजित कर सकते हैं।
यह रणनीति अनावश्यक जोखिम से बचने के लिए हर दिन दिशा परिवर्तन पर पदों को स्वचालित रूप से बंद करती है।
मुख्य जोखिम यह है कि उपयोगकर्ता द्वारा चुने गए दैनिक व्यापार विकल्प सभी दिनांक सीमाओं के अनुरूप नहीं हो सकते हैं।
उदाहरण के लिए, सप्ताह के दिनों में लंबे समय तक और छोटे सप्ताहांत कुछ अवधि के लिए प्रभावी साबित हो सकते हैं लेकिन दूसरों में विफल हो सकते हैं।
इसलिए दिनांक सीमाओं का सावधानीपूर्वक परीक्षण किया जाना चाहिए, और एक बैकटेस्ट परिणाम पर भरोसा नहीं करना चाहिए। पैरामीटर tweaking को बाजार की स्थितियों पर विचार करने की आवश्यकता है।
एक और जोखिम यह है कि जब दिशा दैनिक रूप से बदलती है तो समय पर घाटे में कटौती करने में असमर्थता होती है। लेकिन रणनीति ऑटो क्लोजिंग द्वारा इसे कम करने का प्रयास करती है।
कुल मिलाकर, रणनीति अत्यधिक अनुकूलन पर निर्भर है, और विभिन्न बाजार स्थितियों के अनुरूप पैरामीटर सेट खोजने के लिए पर्याप्त परीक्षण की आवश्यकता है।
इस रणनीति में कई पहलुओं में सुधार किया जा सकता हैः
दैनिक दिशा परिवर्तन पर स्टॉप लॉस तर्क जोड़ें, ड्रॉडाउन को सीमित करने के लिए पदों को लाभदायक होने पर ट्रेलिंग स्टॉप सेट करें।
एक फ़िल्टर जोड़ें, केवल किसी दिन के उच्च/निम्न स्तर को तोड़ने पर संकेत लें, बिना रुझान के व्यापार से बचें।
उच्च अस्थिरता के समय में स्थिति आकार को कम करना और जोखिम को नियंत्रित करने के लिए अस्थिरता कम होने पर वृद्धि करना।
ट्रेडिंग दिन चयन में मशीन लर्निंग जोड़ें, ऐतिहासिक डेटा के आधार पर प्रत्येक दिन की संभावना का न्याय करें, गतिशील दैनिक दिशाओं का निर्माण करें।
अचानक होने वाली घटनाओं जैसे प्रमुख समाचारों को संभालने के लिए तर्क जोड़ें ताकि ऑफसाइड होने से बचने के लिए ट्रेडिंग को रोक दिया जा सके।
यह रणनीति दैनिक दिशा चयन के माध्यम से अत्यधिक लचीली लंबी / छोटी व्यापार क्षमता प्रदान करती है। उपयोगकर्ता इष्टतम मापदंडों के लिए परीक्षण को स्वतंत्र रूप से जोड़ सकते हैं। लेकिन इसमें उच्च अनुकूलन आवश्यकताएं हैं, विभिन्न बाजारों के अनुरूप सेटिंग्स खोजने के लिए व्यापक परीक्षण की आवश्यकता है। स्टॉप, फिल्टर, गतिशील समायोजन जैसे संवर्द्धन जोड़ने से जोखिम कम हो सकता है और मजबूती में सुधार हो सकता है। सावधानीपूर्वक पैरामीटर अनुकूलन के साथ, रणनीति एक प्रभावी दैनिक दिशात्मक व्यापार उपकरण बन सकती है।
/*backtest start: 2022-09-19 00:00:00 end: 2023-09-25 00:00: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/ //@version=4 // strategy("Day of Week Custom Buy/Sell Strategy", overlay=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity) frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month") fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day") fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year") tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month") today = input(defval = 31, minval = 01, maxval = 31, title = "To day") toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year") timeframes = array.new_int(7, 1) timeframes_options = array.new_string(7, 'None') array.set(timeframes,0,7) array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='sunday')) array.set(timeframes,1,1) array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='monday')) array.set(timeframes,2,2) array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='tuesday')) array.set(timeframes,3,3) array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='wednesday')) array.set(timeframes,4,4) array.set(timeframes_options,4, input(defval='None', options=['Long','Short','None'], title='thursday')) array.set(timeframes,5,5) array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='friday')) array.set(timeframes,6,6) array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='saturday')) for i = 0 to array.size(timeframes) - 1 if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1) strategy.close_all() if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1) if array.get(timeframes_options, i) == 'Long' strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) else if array.get(timeframes_options, i) == 'Short' strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))