
यह रणनीति एक मल्टी-फ्रेम ट्रेडिंग प्रणाली है जिसमें सरल चलती औसत (SMA) क्रॉस सिग्नल और पीक रिट्रीट कंट्रोल शामिल हैं। यह 14- और 28-पीक SMA के क्रॉस का उपयोग करके मल्टी-फ्रेम ट्रेडिंग सिग्नल उत्पन्न करता है, जबकि वास्तविक समय में रणनीति के पीक रिट्रीट की निगरानी करता है। जब रिट्रीट पूर्वनिर्धारित थ्रेशोल्ड से अधिक हो जाता है, तो रणनीति स्वचालित रूप से ट्रेडिंग बंद कर देती है। इसके अलावा, रणनीति में एक विस्तृत पीक-डेल चक्र विश्लेषण सुविधा शामिल है जो व्यापारियों को रणनीति की जोखिम विशेषताओं को बेहतर ढंग से समझने में मदद कर सकती है।
ट्रेडिंग सिग्नल उत्पन्नः
पीक रिडक्शन कंट्रोलः
पीक-डेल्ट चक्र विश्लेषण:
ट्रेंड ट्रैकिंग और रिस्क कंट्रोल के संयोजन मेंः एसएमए क्रॉसिंग एक क्लासिक ट्रेंड ट्रैकिंग विधि है, जबकि पीक रिट्रीट कंट्रोल एक अतिरिक्त स्तर का जोखिम प्रबंधन प्रदान करता है। यह संयोजन बाजार की प्रवृत्ति को पकड़ने के साथ-साथ नीचे जाने के जोखिम को प्रभावी ढंग से नियंत्रित कर सकता है।
अनुकूलन क्षमता: अधिकतम निकासी और न्यूनतम निकासी थ्रेशोल्ड को पैरामीटर के रूप में सेट करके, रणनीति को विभिन्न बाजार स्थितियों और व्यक्तिगत जोखिम वरीयताओं के अनुसार लचीले ढंग से समायोजित किया जा सकता है।
पारदर्शी जोखिम संकेतक: पीक-डेल्टेम चक्र विश्लेषण विस्तृत ऐतिहासिक वापसी की जानकारी प्रदान करता है, जिससे व्यापारियों को रणनीति के जोखिम के लक्षणों को समझने में मदद मिलती है, जिससे अधिक सूचित व्यापारिक निर्णय लेने में मदद मिलती है।
स्वचालित जोखिम नियंत्रण: जब निकासी पूर्वनिर्धारित थ्रेसहोल्ड से अधिक हो जाती है, तो रणनीति स्वचालित रूप से ट्रेडिंग को रोक देती है, यह तंत्र प्रतिकूल बाजार की स्थिति में लगातार नुकसान से बचने के लिए प्रभावी है।
पूर्ण प्रदर्शन विश्लेषण: सामान्य रीट्रेसमेंट संकेतकों के अलावा, रणनीतियों में विस्तृत पीक-बंदल चक्र डेटा प्रदान किया जाता है, जिसमें वृद्धि, वापसी और समय की जानकारी शामिल होती है, जो रणनीति के प्रदर्शन का गहराई से विश्लेषण करने में मदद करती है।
ऐतिहासिक आंकड़ों पर अत्यधिक निर्भरता: एसएमए क्रॉस रणनीति ऐतिहासिक मूल्य डेटा पर आधारित है और तेजी से बदलते बाजारों में प्रतिक्रिया में देरी हो सकती है, जिससे गलत संकेत मिलते हैं।
बार-बार लेन-देनः अस्थिर बाजारों में, एसएमए अक्सर पार हो सकते हैं, जिसके परिणामस्वरूप अत्यधिक लेनदेन और उच्च लेनदेन लागत होती है।
संभावित बड़े पैमाने पर वापसीः हालांकि अधिकतम निकासी नियंत्रण के साथ, एक बड़ी गिरावट से बाजार में भारी उतार-चढ़ाव के दौरान बड़े नुकसान हो सकते हैं।
पैरामीटर संवेदनशीलता: रणनीति का प्रदर्शन अत्यधिक SMA चक्र और वापसी थ्रेशोल्ड के चयन पर निर्भर करता है, अनुचित पैरामीटर सेटिंग्स उप-उत्कृष्ट परिणामों का कारण बन सकती हैं।
इस तस्वीर को शेयर करते हुए उन्होंने लिखा, ट्रेडिंग को रोकने के लिए अधिकतम निकासी थ्रेशोल्ड के बाद, रणनीति बाजार में बदलाव के अवसरों को याद कर सकती है।
गतिशील पैरामीटर समायोजन का परिचय: बाजार में उतार-चढ़ाव की गतिशीलता के आधार पर SMA चक्रों को समायोजित करने और अलग-अलग बाजार स्थितियों के अनुकूल मूल्य को वापस लेने पर विचार किया जा सकता है।
अतिरिक्त बाज़ार फ़िल्टर जोड़ेंः अन्य तकनीकी संकेतकों या मौलिक कारकों के साथ संयोजन में, जैसे कि आरएसआई या लेनदेन की मात्रा, संभावित झूठे संकेतों को फ़िल्टर करने के लिए।
इस तरह के खेलों में प्रवेश और बाहर निकलने की व्यवस्था की गई है। पूरे गोदाम के संचालन के बजाय, एकल निर्णय लेने के जोखिम को कम करने के लिए, गोदामों और गोदामों के निर्माण को कम किया जा सकता है।
इस तरह की घटनाओं को रोकने के लिए क्या करना चाहिए? वापसी नियंत्रण के आधार पर, लाभ को लॉक करने और समग्र रिटर्न दर को बढ़ाने के लिए गतिशील स्टॉप फ़ंक्शन जोड़ें।
धन प्रबंधन का अनुकूलन करेंः खाता आकार और बाजार की अस्थिरता के आधार पर गतिशील स्थिति प्रबंधन को लागू करना ताकि जोखिम को बेहतर तरीके से नियंत्रित किया जा सके।
मशीन लर्निंग एल्गोरिदम का परिचय: मशीन लर्निंग तकनीक का उपयोग करके पैरामीटर चयन और सिग्नल जनरेशन प्रक्रिया को अनुकूलित करने के लिए, रणनीति की अनुकूलनशीलता और सटीकता में सुधार करें।
एसएमए क्रॉस बहुआयामी रणनीति एक मात्रात्मक ट्रेडिंग प्रणाली है जिसमें ट्रेंड ट्रैकिंग और जोखिम प्रबंधन दोनों शामिल हैं। यह सरल चलती औसत के क्रॉसिंग के माध्यम से बाजार की प्रवृत्ति को पकड़ता है, जबकि डाउनस्ट्रीम जोखिम को प्रबंधित करने के लिए पीक रिट्रीट नियंत्रण का उपयोग करता है। रणनीति की विशिष्टता इसकी विस्तृत चोटी-घाटी तल चक्र विश्लेषण सुविधा है, जो व्यापारियों को रणनीति के जोखिम विशेषताओं के बारे में गहरी जानकारी प्रदान करती है।
हालांकि रणनीतियों में कुछ अंतर्निहित जोखिम हैं, जैसे कि ऐतिहासिक डेटा और पैरामीटर संवेदनशीलता पर अत्यधिक निर्भरता, लेकिन उचित अनुकूलन और सुधार के साथ, जैसे कि गतिशील पैरामीटर समायोजन की शुरूआत, अतिरिक्त बाजार फिल्टर जोड़ना और अधिक बुद्धिमान धन प्रबंधन, इसकी स्थिरता और लाभप्रदता में काफी सुधार किया जा सकता है।
कुल मिलाकर, यह रणनीति व्यापारियों के लिए एक अच्छा प्रारंभिक बिंदु प्रदान करती है, जिसके आधार पर व्यक्तिगत व्यापारिक लक्ष्यों और जोखिम वरीयताओं को पूरा करने के लिए आगे अनुकूलन और अनुकूलन किया जा सकता है। रणनीति के मॉड्यूलर डिजाइन ने इसे अन्य व्यापारिक रणनीतियों या जोखिम प्रबंधन तकनीकों के साथ आसानी से एकीकृत करने के लिए भी आसान बना दिया है, जिससे अधिक जटिल और व्यापक व्यापार प्रणाली के निर्माण की नींव रखी गई है।
/*backtest
start: 2023-07-23 00:00:00
end: 2024-07-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
capital = 10000
//@version=5
strategy(title = "Correct Strategy Peak-Drawdown Cycles [Tradingwhale]", shorttitle = "Peak-Draw [Tradingwhale]", initial_capital = capital, overlay=true, margin_long=100, margin_short=100)
// The code below is from Tradingwhale LLC
/// ==============================================================================
// Peak-Trough Cycles with Date and Prev. RunUp
// Initialize variables
showTable = input.bool(true, title = "Plot Peak to Bottom Drawdown Cycles table?")
min_trough = input.float(3.0, title = "Define Minimum Drawdown/Trough to Display (%)", minval = 1, maxval = 100, step = 0.5, tooltip = "Peaks and Trough Cycles have to be roped in by either a lookback period or minmimum troughs to show. If you don't then every bar could be a peak or trough/bottom. I've decided to use minimum declines here because lookback seems more arbitrary.")
maxdraw = input.float(40.0, title = "Max Drawdown", minval = 1, maxval = 100, step = 0.5, tooltip = "Define the drawdown level where the srtategy stops executing trades.")
var float equityPeak = na
var float equityTrough = na
var int cycleCount = 0
var bool inDrawdown = false
var float initialCapital = capital
var float prevTrough = initialCapital
var float prevRunUp = na
var bool useLighterGray = true
var int lastYear = na
// Variable to indicate whether the strategy should end
var bool end_strategy = false
// Table to display data
var table resultTable = table.new(position.top_right, 5, 30, bgcolor=#ffffff00, frame_color=#4f4040, frame_width=1)
// Function to convert float to percentage string
f_to_percent(value) =>
str.tostring(value, "#.##") + "%"
// Function to get month/year string without commas
get_month_year_string() =>
str.tostring(year) + "/" + str.tostring(month)
// Update the table headers
if (bar_index == 0 and showTable)
table.cell(resultTable, 0, 0, "Show Min Trough: " + f_to_percent(min_trough), bgcolor=#a8a8a88f, text_size=size.normal)
table.cell(resultTable, 1, 0, "Cycle Count", bgcolor=#a8a8a88f, text_size=size.normal)
table.cell(resultTable, 2, 0, "Prev.RunUp(%)", bgcolor=#a8a8a88f, text_size=size.normal)
table.cell(resultTable, 3, 0, "Drawdown(%)", bgcolor=#a8a8a88f, text_size=size.normal)
table.cell(resultTable, 4, 0, "Year/Month", bgcolor=#a8a8a88f, text_size=size.normal)
// Track peaks and troughs in equity
if (na(equityPeak) or strategy.equity > equityPeak)
if (inDrawdown and strategy.equity > equityPeak and not na(equityTrough)) // Confirm end of drawdown cycle
drawdownPercentage = (equityPeak - equityTrough) / equityPeak * 100
if drawdownPercentage > min_trough
cycleCount += 1
prevRunUp := (equityPeak - prevTrough) / prevTrough * 100
if cycleCount <= 20 and showTable
currentYear = year
if na(lastYear) or currentYear != lastYear
useLighterGray := not useLighterGray
lastYear := currentYear
rowColor = useLighterGray ? color.new(color.gray, 80) : color.new(color.gray, 50)
table.cell(resultTable, 1, cycleCount, str.tostring(cycleCount), bgcolor=rowColor, text_size=size.normal)
table.cell(resultTable, 2, cycleCount, f_to_percent(prevRunUp), bgcolor=rowColor, text_size=size.normal)
table.cell(resultTable, 3, cycleCount, f_to_percent(drawdownPercentage), bgcolor=rowColor, text_size=size.normal)
table.cell(resultTable, 4, cycleCount, get_month_year_string(), bgcolor=rowColor, text_size=size.normal)
prevTrough := equityTrough
equityPeak := strategy.equity
equityTrough := na
inDrawdown := false
else if (strategy.equity < equityPeak)
equityTrough := na(equityTrough) ? strategy.equity : math.min(equityTrough, strategy.equity)
inDrawdown := true
// Calculate if the strategy should end
if not na(equityPeak) and not na(equityTrough)
drawdownPercentage = (equityPeak - equityTrough) / equityPeak * 100
if drawdownPercentage >= maxdraw
end_strategy := true
// This code below is from Tradingview, but with additions where commented (see below)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition) and not end_strategy // Add 'and not end_strategy' to your order conditions to automatically end the strategy if max_draw is exceeded/
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if (shortCondition) and not end_strategy // Add 'and not end_strategy' to your order conditions to automatically end the strategy if max_draw is exceeded/
strategy.entry("My Short Entry Id", strategy.short)