यादृच्छिक घूर्णन रणनीति एक स्वचालित ट्रेडिंग रणनीति है जो यादृच्छिक संख्या जनरेशन पर आधारित है। यह रणनीति रैखिक समतुल्य जनरेटर का उपयोग करती है जो सेट के आधार पर बीज को यादृच्छिक रूप से उत्पन्न करता है। यह संख्या अधिक से अधिक है जब यह अधिक से कम हो जाता है, और कम से कम कम से कम है जब यह कम हो जाता है, और यह यादृच्छिक रूप से अधिक से अधिक करने के लिए प्रवेश करता है।
यह रणनीति मुख्य रूप से निम्नलिखित भागों के माध्यम से यादृच्छिक व्यापार को लागू करती हैः
यादृच्छिक संख्या उत्पन्न करने वाले पैरामीटर a, c और मॉड्यूल m, और प्रारंभिक बीज seed
एक यादृच्छिक संख्या उत्पन्न करने के लिए GetRandom फ़ंक्शन को परिभाषित करें, जो 0-m के बीच एक यादृच्छिक संख्या उत्पन्न करने के लिए एक रैखिक समस्थानिक एल्गोरिथ्म का उपयोग करता है।
प्रत्येक K लाइन पर, यदि वर्तमान में कोई स्थिति नहीं है, तो तुलनात्मक रूप से उत्पन्न होने वाली यादृच्छिक संख्या का आकार, m/2 से अधिक है, अन्यथा खाली है।
स्टॉप लॉस और स्टॉप एम्पलीफिकेशन को प्रतिशत के रूप में सेट करें।
समय सीमा के माध्यम से रीमेक चक्र सेट करें
उपरोक्त चरणों के माध्यम से, यह रणनीति पूरी तरह से यादृच्छिक बहु-खाली करने की कार्रवाई को लागू करती है। जब यादृच्छिक संख्या m/2 से अधिक हो, तो अधिक ऑर्डर खोलें, अन्यथा खाली ऑर्डर खोलें, और फिर स्टॉप-लॉस स्टॉप को स्थिति से बाहर निकालें। रीमेक चक्र को अनुकूलित किया जा सकता है।
रणनीति तर्क सरल और स्पष्ट है और इसे लागू करना आसान है।
यादृच्छिक व्यापार भावनात्मक प्रभाव को कम करने और व्यक्तिपरक गलतियों को कम करने में मदद करता है।
यादृच्छिकता को समायोजित करने के लिए अनुकूलित यादृच्छिक संख्या उत्पन्न करने वाले एल्गोरिथ्म पैरामीटर।
लचीलापन के साथ स्टॉप लॉस और स्टॉप बस्ट की शर्तों को सेट करें और एकमुश्त लाभ को नियंत्रित करें।
रिटर्न्स पैरामीटर को अनुकूलित करने के लिए समर्थन, ताकि समग्र आय पर विभिन्न पैरामीटर के प्रभाव का परीक्षण किया जा सके।
यादृच्छिक ट्रेडों में लंबे समय तक कोई स्पष्ट प्रवृत्ति नहीं हो सकती है, लाभ की अनिश्चितता होती है।
बाजार की स्थिति के आधार पर स्थिति को समायोजित करने में असमर्थ, प्रवृत्ति के अवसरों को याद कर सकता है।
एक बार में कम लाभ, अधिक जोखिम के साथ वापसी
अत्यधिक नुकसान से बचने के लिए उचित स्टॉप लॉस स्टॉप अनुपात की आवश्यकता होती है।
यादृच्छिकता के कारण, ट्रेडिंग शुल्क में वृद्धि हो सकती है।
सत्यापन पैरामीटर सेट तर्कसंगतता को पूरी तरह से जांचने की आवश्यकता है, इसे अंधाधुंध उपयोग नहीं किया जा सकता है।
रुझान निर्णय, यादृच्छिक स्थिति खोलने की संख्या को कम करने, स्टॉप लॉस तंत्र को अनुकूलित करने, और एकल हानि को सख्ती से नियंत्रित करने जैसे कार्यों को जोड़कर जोखिम को कम किया जा सकता है।
इस प्रकार, हम अपने व्यापार को और अधिक मजबूत बनाने के लिए एक नया तरीका ढूंढ रहे हैं।
स्थिति प्रबंधन में शामिल हों और पूंजी परिवर्तन के अनुसार स्थिति का आकार समायोजित करें।
यादृच्छिकता बढ़ाने के लिए यादृच्छिक संख्या उत्पन्न करने वाले एल्गोरिदम का अनुकूलन करना।
गतिशील समायोजन स्टॉप लॉस स्टॉप बढ़ाव
जोड़े गए पोजीशन की आवृत्ति की सीमा
बहु-पैरामीटर संयोजन प्रतिक्रिया को इष्टतम पैरामीटर खोजने के लिए
यादृच्छिक घूर्णन रणनीति यादृच्छिक संख्या नियंत्रण के माध्यम से अधिक और अधिक शून्य करने के लिए यांत्रिक व्यापार को लागू करती है। यह रणनीति यादृच्छिक है, व्यक्तिगत भावनाओं से अप्रभावित है, और व्यक्तिपरक गलत संचालन के जोखिम से बचती है। लेकिन यादृच्छिक स्थिति खोलने से प्रवृत्ति के अवसरों को भी याद किया जा सकता है, एकल रिटर्न सीमित है, जोखिम नियंत्रण तंत्र को अनुकूलित करने की आवश्यकता है। कुल मिलाकर, यह रणनीति ट्रेडिंग अवधारणाओं को सत्यापित करने और पैरामीटर सेटिंग के प्रभाव को समझने के लिए उपयुक्त है, लेकिन वास्तविक अनुप्रयोग को सावधानीपूर्वक मूल्यांकन करने की आवश्यकता है।
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//@author=Tr0sT
strategy(title = "Random strategy", shorttitle = "Random", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
a = 16
c = 10
m = 1000
GetRandom(prev) =>
GetRandom = (a * prev + c) % m
seed = input(200, minval = 2, maxval = m)
stopLoss = input(30, title = "Stop loss percentage(0.1%)")
takeProfit = input(30, title = "Take profit percentage(0.1%)")
curRandom = na
curRandom := nz(curRandom[1]) == 0 ? seed : GetRandom(curRandom[1])
if (strategy.position_size == 0)
if (curRandom >= m / 2)
strategy.entry("Enter", strategy.long)
else
strategy.entry("Enter", strategy.short)
strategy.exit("Exit", "Enter", loss = close * stopLoss / 1000 / syminfo.mintick, profit = close * takeProfit / 1000 / syminfo.mintick)
// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
strategy.cancel_all()
strategy.close_all()