संसाधन लोड हो रहा है... लोड करना...

पीक ड्रॉडाउन नियंत्रण और ऑटो-टर्मिनेशन के साथ SMA क्रॉसओवर लॉन्ग-शॉर्ट रणनीति

लेखक:चाओझांग, दिनांकः 2024-07-29 14:16:58
टैगःएसएमए

img

अवलोकन

यह रणनीति एक लंबी-लघु ट्रेडिंग प्रणाली है जो सरल चलती औसत (एसएमए) क्रॉसओवर संकेतों को पीक ड्रॉडाउन नियंत्रण के साथ जोड़ती है। यह रणनीति के पीक ड्रॉडाउन की निगरानी करते हुए एक साथ लंबी और छोटी ट्रेडिंग संकेत उत्पन्न करने के लिए 14-अवधि और 28-अवधि एसएमए के क्रॉसओवर का उपयोग करती है। जब ड्रॉडाउन एक पूर्व निर्धारित सीमा से अधिक हो जाता है, तो रणनीति स्वचालित रूप से व्यापार बंद कर देती है। इसके अलावा, रणनीति में व्यापारियों को रणनीति की जोखिम विशेषताओं को बेहतर ढंग से समझने में मदद करने के लिए एक विस्तृत पीक-टू-ट्रॉथ चक्र विश्लेषण सुविधा शामिल है।

रणनीतिक सिद्धांत

  1. ट्रेड सिग्नल जनरेशनः

    • एक लंबा संकेत तब उत्पन्न होता है जब 14-अवधि SMA 28-अवधि SMA से ऊपर जाता है।
    • एक लघु संकेत तब उत्पन्न होता है जब 14-अवधि SMA 28-अवधि SMA से नीचे जाता है।
  2. पीक ड्रॉडाउन नियंत्रणः

    • रणनीति के इक्विटी वक्र का वास्तविक समय में ट्रैक करना, ऐतिहासिक उच्च बिंदुओं (पीक) को रिकॉर्ड करना।
    • जब चालू इक्विटी शिखर से नीचे गिर जाती है, तो यह निचले बिंदु (ट्रोफ) को दर्ज करते हुए एक ड्रॉडाउन स्थिति में प्रवेश करती है।
    • निकासी प्रतिशत की गणना इस प्रकार की जाती हैः (पीक - ट्रॉफ) / पीक * 100%।
    • यदि निकासी प्रतिशत पूर्व निर्धारित अधिकतम निकासी सीमा से अधिक है, तो रणनीति नई स्थिति खोलना बंद कर देती है।
  3. पीक-टू-थ्रू चक्र विश्लेषणः

    • वैध पीक-टू-ड्रॉप चक्रों को परिभाषित करने के लिए न्यूनतम निकासी प्रतिशत निर्धारित करें।
    • प्रत्येक पूर्ण वैध चक्र के लिए, चक्र संख्या, पिछले रन-अप प्रतिशत, ड्रॉडाउन प्रतिशत और अंत समय दर्ज करें।
    • प्रदर्शन विश्लेषण के परिणामस्वरूप रणनीति के ऐतिहासिक प्रदर्शन की आसान समीक्षा के लिए एक तालिका प्रारूप प्राप्त होता है।

रणनीतिक लाभ

  1. ट्रेंड फॉलो करने और जोखिम नियंत्रण को जोड़ती हैः एसएमए क्रॉसओवर रणनीति एक क्लासिक ट्रेंड फॉलो करने वाली विधि है, जबकि पीक ड्रॉडाउन कंट्रोल जोखिम प्रबंधन की एक अतिरिक्त परत प्रदान करता है। यह संयोजन बाजार के रुझानों को पकड़ते हुए डाउनसाइड जोखिम को प्रभावी ढंग से नियंत्रित कर सकता है।

  2. उच्च अनुकूलन क्षमताः अधिकतम निकासी और न्यूनतम निकासी सीमाओं को पैरामीटर करके, रणनीति को विभिन्न बाजार वातावरण और व्यक्तिगत जोखिम वरीयताओं के लिए लचीलापन से समायोजित किया जा सकता है।

  3. पारदर्शी जोखिम संकेतक: पीक-टू-डिफॉल्ट चक्र विश्लेषण विस्तृत ऐतिहासिक ड्रॉडाउन जानकारी प्रदान करता है, जिससे व्यापारियों को रणनीति की जोखिम विशेषताओं को सहज रूप से समझने की अनुमति मिलती है, जिससे अधिक सूचित व्यापारिक निर्णयों में सहायता मिलती है।

  4. स्वचालित जोखिम नियंत्रण: जब ड्रॉडाउन पूर्व निर्धारित सीमा से अधिक हो जाता है, तो रणनीति स्वचालित रूप से व्यापार बंद कर देती है। यह तंत्र प्रतिकूल बाजार स्थितियों में लगातार नुकसान को प्रभावी ढंग से रोक सकता है।

  5. व्यापक प्रदर्शन विश्लेषणः पारंपरिक बैकटेस्टिंग मीट्रिक के अलावा, रणनीति में शिखर से निम्नतम चक्र के विस्तृत डेटा, जिसमें रन-अप प्रतिशत, ड्रॉडाउन प्रतिशत और समय की जानकारी शामिल है, जो रणनीति के प्रदर्शन का गहन विश्लेषण करने में सुविधा प्रदान करता है।

रणनीतिक जोखिम

  1. ऐतिहासिक आंकड़ों पर अति निर्भरता: एसएमए क्रॉसओवर रणनीति ऐतिहासिक मूल्य डेटा पर आधारित है और तेजी से बदलते बाजारों में धीमी गति से प्रतिक्रिया कर सकती है, जिससे झूठे संकेत मिल सकते हैं।

  2. बार-बार व्यापार करना: अस्थिर बाजारों में, एसएमए अक्सर पार हो सकते हैं, जिसके परिणामस्वरूप अत्यधिक व्यापार और उच्च लेनदेन लागत हो सकती है।

  3. बड़ी मात्रा में निकासी की संभावनाः अधिकतम ड्रॉडाउन नियंत्रण के बावजूद, गंभीर बाजार अस्थिरता के दौरान एक बड़ी गिरावट के बाद भी महत्वपूर्ण नुकसान हो सकते हैं।

  4. पैरामीटर संवेदनशीलताः रणनीति का प्रदर्शन एसएमए अवधि और ड्रॉडाउन सीमाओं की पसंद पर बहुत निर्भर करता है। अनुचित पैरामीटर सेटिंग्स से अपर्याप्त परिणाम हो सकते हैं।

  5. खोए हुए अवसर: जब अधिकतम निकासी सीमा तक पहुँचने के बाद व्यापार बंद हो जाता है, तो रणनीति बाजार में उलटफेर के अवसरों को याद कर सकती है।

रणनीति अनुकूलन दिशाएं

  1. गतिशील पैरामीटर समायोजन का परिचय देंः बाजार की अस्थिरता के आधार पर विभिन्न बाजार वातावरणों के अनुकूल होने के लिए एसएमए अवधि और ड्रॉडाउन सीमाओं को गतिशील रूप से समायोजित करने पर विचार करें।

  2. अतिरिक्त बाजार फ़िल्टरः संभावित झूठे संकेतों को फ़िल्टर करने के लिए अन्य तकनीकी संकेतकों या मौलिक कारकों, जैसे कि आरएसआई या वॉल्यूम को शामिल करें।

  3. चरणबद्ध प्रवेश और निकास लागू करें: सभी या कुछ भी नहीं संचालन के बजाय, एकल निर्णयों के जोखिम को कम करने के लिए चरणबद्ध स्थिति निर्माण और समापन लागू करें।

  4. लाभ लेने की व्यवस्था जोड़ें: ड्रॉडाउन कंट्रोल के ऊपर, लाभ को लॉक करने और समग्र रिटर्न में सुधार करने के लिए एक गतिशील लाभ लेने का कार्य जोड़ें।

  5. धन प्रबंधन का अनुकूलन करें: जोखिम नियंत्रण में सुधार के लिए खाते के आकार और बाजार की अस्थिरता के आधार पर गतिशील स्थिति आकार लागू करें।

  6. मशीन लर्निंग एल्गोरिदम पेश करें: पैरामीटर चयन और सिग्नल जनरेशन प्रक्रियाओं को अनुकूलित करने के लिए मशीन लर्निंग तकनीकों का उपयोग करना, रणनीति अनुकूलन और सटीकता में सुधार करना।

निष्कर्ष

एसएमए क्रॉसओवर लंबी-लघु रणनीति पीक ड्रॉडाउन नियंत्रण और ऑटो-टर्मिनेशन के साथ संयुक्त एक मात्रात्मक ट्रेडिंग प्रणाली है जो प्रवृत्ति के बाद और जोखिम प्रबंधन को संतुलित करती है। यह पीक ड्रॉडाउन नियंत्रण का उपयोग करके डाउनसाइड जोखिम का प्रबंधन करते हुए सरल चलती औसत क्रॉसओवर के माध्यम से बाजार के रुझानों को पकड़ती है। रणनीति की अनूठी विशेषता इसके विस्तृत पीक-टू-ट्रॉथ चक्र विश्लेषण में निहित है, जो व्यापारियों को रणनीति की जोखिम विशेषताओं को गहराई से समझने के लिए एक उपकरण प्रदान करती है।

जबकि रणनीति में कुछ अंतर्निहित जोखिम हैं, जैसे कि ऐतिहासिक डेटा और पैरामीटर संवेदनशीलता पर अत्यधिक निर्भरता, यह उचित अनुकूलन और सुधारों के माध्यम से अपनी मजबूती और लाभप्रदता में काफी सुधार कर सकती है। इनमें गतिशील पैरामीटर समायोजन, अतिरिक्त बाजार फिल्टर जोड़ना और स्मार्ट धन प्रबंधन को लागू करना शामिल है।

कुल मिलाकर, यह रणनीति व्यापारियों को एक अच्छा प्रारंभिक बिंदु प्रदान करती है जिसे व्यक्तिगत व्यापारिक लक्ष्यों और जोखिम वरीयताओं को पूरा करने के लिए और अधिक अनुकूलित और अनुकूलित किया जा सकता है। रणनीति का मॉड्यूलर डिज़ाइन अन्य व्यापारिक रणनीतियों या जोखिम प्रबंधन तकनीकों के साथ एकीकृत करने में भी आसान बनाता है, अधिक जटिल और व्यापक व्यापारिक प्रणालियों के निर्माण की नींव रखता है।


/*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)



संबंधित

अधिक