गतिशील समय-फ़िल्टर समर्थन और प्रतिरोध ट्रेलिंग स्टॉप-लॉस ट्रेडिंग सिस्टम

ATR EMA SMA TP SL TF
निर्माण तिथि: 2025-08-21 09:20:08 अंत में संशोधित करें: 2025-08-21 09:20:08
कॉपी: 1 क्लिक्स: 203
2
ध्यान केंद्रित करना
319
समर्थक

गतिशील समय-फ़िल्टर समर्थन और प्रतिरोध ट्रेलिंग स्टॉप-लॉस ट्रेडिंग सिस्टम गतिशील समय-फ़िल्टर समर्थन और प्रतिरोध ट्रेलिंग स्टॉप-लॉस ट्रेडिंग सिस्टम

अवलोकन

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

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

इस रणनीति के मूल सिद्धांत तीन मुख्य तत्वों के समन्वय पर आधारित हैंः सटीक प्रवेश, इष्टतम समय और स्थिति प्रबंधन।

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

समय फ़िल्टरिंग प्रणाली: रणनीति एक व्यापक समय फ़िल्टरिंग प्रणाली को लागू करती है जो व्यापारियों को इष्टतम व्यापार समय को परिभाषित करने की अनुमति देती है। इसमें शामिल हैंः

  • 12-घंटे प्रारूप ट्रेडिंग समय विंडो सेटिंग
  • बहु समय क्षेत्र समर्थन (यूटीसी, ईएसटी, पीएसटी, सीएसटी)
  • सप्ताह के दिनों के आधार पर फ़िल्टर करें (केवल कार्यदिवस, सप्ताहांत या दोनों)
  • स्वचालित रूप से दोपहर के भोजन से बचें (आमतौर पर 12:00-13:00)
  • दृश्य समय संकेतक ((पृष्ठभूमि रंग के माध्यम से सक्रिय / निष्क्रिय व्यापार समय प्रदर्शित करता है)

जोखिम प्रबंधन प्रणाली: रणनीति में तीन स्तरों पर जोखिम प्रबंधन का उपयोग किया गया हैः

  1. बहुस्तरीय रोक प्रणालीदो स्टॉप लक्ष्य सेट करें (टीपी 1 और टीपी 2), टीपी 1 में कुछ स्थानों को खाली करने का विकल्प
  2. गतिशील ट्रैक रोक प्रौद्योगिकीतीन ऑपरेशन मोड प्रदान करता है (संरक्षित, संतुलित और कट्टरपंथी), जो वर्तमान बाजार में उतार-चढ़ाव के आधार पर स्वचालित रूप से समायोजित होता है
  3. बुद्धिमान गोदाम प्रबंधन: ट्रेडर्स को प्रवेश की संख्या और आंशिक स्थिति की संख्या को कॉन्फ़िगर करने की अनुमति देता है, स्पष्ट रूप से स्थिति की स्थिति और घाटे को ट्रैक करता है

रणनीतिक लाभ

कोड के गहन विश्लेषण के माध्यम से, इस रणनीति के निम्नलिखित फायदे हैंः

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

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

  3. उन्नत जोखिम प्रबंधन सुविधाएँ: गतिशील ट्रैक स्टॉप लॉस सिस्टम बाजार में उतार-चढ़ाव के साथ स्वचालित रूप से समायोजित होता है, जिससे मुनाफे की रक्षा होती है और जीतने वाले पदों को जारी रखने में मदद मिलती है। मल्टी-लेवल स्टॉप लॉस लक्ष्य और कुछ पील-ऑफ विकल्प मुनाफे को विभिन्न मूल्य स्तरों पर लॉक करने की अनुमति देते हैं।

  4. पूर्ण दृश्य प्रतिक्रिया: सिस्टम विस्तृत चार्ट तत्वों और वास्तविक समय के dashboards प्रदान करता है, जो व्यापारियों को बाजार की स्थिति और रणनीति के प्रदर्शन को समझने में मदद करता है। प्रवेश क्षेत्र, गतिशील जोखिम / रिटर्न लाइन और ट्रैकिंग स्टॉप लॉस दृश्यता को प्रदर्शित करने से व्यापारिक निर्णय लेने की प्रक्रिया अधिक पारदर्शी हो जाती है।

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

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

हालांकि इस रणनीति के कई फायदे हैं, लेकिन इसके कुछ संभावित जोखिम भी हैंः

  1. पैरामीटर अनुकूलन जोखिमरणनीति कई पैरामीटर सेटिंग्स पर निर्भर करती है, जैसे कि रिट्रेस अवधि, एटीआर गुणांक और ट्रेंड फिल्टर सेटिंग्स। इन पैरामीटरों को विभिन्न बाजार स्थितियों के अनुकूल करने के लिए सावधानीपूर्वक अनुकूलित और नियमित रूप से समायोजित करने की आवश्यकता होती है। पैरामीटर के अति-अनुकूलन से ओवरफिट हो सकता है और भविष्य की बाजार स्थितियों में खराब प्रदर्शन हो सकता है।

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

  3. समय फ़िल्टर प्रतिबंधहालांकि समय फ़िल्टरिंग प्रतिकूल व्यापारिक समय से बचने में मदद कर सकती है, लेकिन यह कुछ उच्च गुणवत्ता वाले व्यापारिक अवसरों को भी याद कर सकती है। बाजार हमेशा एक पूर्वनिर्धारित समय पैटर्न का पालन नहीं करते हैं, खासकर महत्वपूर्ण घटनाओं या समाचारों के दौरान।

  4. स्टॉपलॉस ट्रैप: अस्थिर बाजारों में, गतिशील ट्रैक स्टॉप को जल्दी से ट्रिगर किया जा सकता है, जिससे संभावित रूप से लाभदायक ट्रेडों को जल्दी से समाप्त कर दिया जा सकता है। विभिन्न ट्रैक स्टॉप सेटिंग्स (रक्षाशील, संतुलित, उग्र) विभिन्न बाजार स्थितियों में अलग-अलग प्रदर्शन करते हैं।

  5. सिग्नल संघर्षमिश्रित संकेत तब हो सकते हैं जब कीमतें समर्थन और प्रतिरोध के कई स्तरों के करीब होती हैं, या जब समय फ़िल्टर और प्रवेश संकेत संघर्ष करते हैं। इसके लिए अतिरिक्त निर्णय या अधिक जटिल निर्णय नियम की आवश्यकता होती है।

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

कोड विश्लेषण के आधार पर, निम्नलिखित संभावित अनुकूलन दिशाएं हैंः

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

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

  3. समय फ़िल्टर तर्क का अनुकूलन करें: डेटा विश्लेषण के माध्यम से किसी विशेष बाजार के लिए सर्वोत्तम व्यापारिक समय का पता लगाएं और ऐतिहासिक प्रदर्शन के आधार पर स्वचालित रूप से व्यापारिक समय खिड़की को समायोजित करें।

  4. जोखिम प्रबंधन में सुधार: एक अधिक बुद्धिमान पोजीशन प्रबंधन प्रणाली डिजाइन करें, जो ऐतिहासिक अस्थिरता, वर्तमान बाजार स्थितियों और रणनीति के प्रदर्शन के आधार पर पोजीशन आकार को गतिशील रूप से समायोजित करे। लाभदायक ट्रेडिंग में लाभप्रद प्रतिशत के आधार पर एक सीढ़ीबद्ध समतल पोजीशन रणनीति जोड़ें।

  5. एकीकृत मशीन लर्निंग मॉडल: समर्थन और प्रतिरोध की विश्वसनीयता की भविष्यवाणी करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करना, या विशिष्ट बाजार स्थितियों में प्रवेश संकेत की सफलता की संभावना का अनुमान लगाना। यह संभावित कम गुणवत्ता वाले व्यापारिक संकेतों को फ़िल्टर करने में मदद कर सकता है।

संक्षेप

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

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

हालांकि, इस रणनीति की पूरी क्षमता का लाभ उठाने के लिए, व्यापारियों को सावधानीपूर्वक पैरामीटर को अनुकूलित करने की आवश्यकता होती है, विभिन्न बाजार स्थितियों में इसके प्रदर्शन की विशेषताओं को समझते हैं, और विशिष्ट बाजार और व्यक्तिगत व्यापारिक लक्ष्यों के अनुसार अनुकूलित समायोजन की आवश्यकता हो सकती है। अनुशंसित अनुकूलन उपायों को लागू करने से रणनीति की प्रदर्शन और कठोरता को और बढ़ाया जा सकता है, जिससे व्यापारियों को अधिक विश्वसनीय बाजार विश्लेषण और व्यापार निष्पादन उपकरण प्रदान किए जा सकते हैं।

रणनीति स्रोत कोड
/*backtest
start: 2025-08-13 00:00:00
end: 2025-08-20 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT","balance":5000}]
*/

//@version=5
strategy("FlowStateTrader", overlay=true)

// Input Parameters
lookbackPeriod = input.int(20, "Lookback Period for Key Levels", minval=5, maxval=100)
atrPeriod = input.int(14, "ATR Period", minval=5, maxval=50)
atrMultiplierSL = input.float(1.5, "SL ATR Multiplier", minval=0.5, maxval=5.0, step=0.1)
atrMultiplierTP1 = input.float(1.5, "TP1 ATR Multiplier", minval=0.5, maxval=5.0, step=0.1)
atrMultiplierTP2 = input.float(2.0, "TP2 ATR Multiplier", minval=0.5, maxval=5.0, step=0.1)
rewardToRisk = input.float(2.0, "Reward to Risk Ratio", minval=1.0, maxval=5.0, step=0.1)

// Trend Filter Settings
enableTrendFilter = input.bool(true, "Enable Trend Filter")
trendMAPeriod = input.int(20, "Trend MA Period", minval=5, maxval=200)
trendMAType = input.string("EMA", "Trend MA Type", options=["EMA", "SMA"])

// TIME FILTER SETTINGS
enableTimeFilter = input.bool(false, "Enable Time-Based Filter", tooltip="Filter trades based on specific time windows")

// 12-hour format time inputs
startHour12 = input.int(9, "Start Hour (1-12)", minval=1, maxval=12, tooltip="Trading start hour in 12-hour format")
startAMPM = input.string("AM", "Start AM/PM", options=["AM", "PM"])
endHour12 = input.int(4, "End Hour (1-12)", minval=1, maxval=12, tooltip="Trading end hour in 12-hour format") 
endAMPM = input.string("PM", "End AM/PM", options=["AM", "PM"])

// Timezone selection
timeZone = input.string("UTC", "Time Zone", options=["UTC", "EST", "PST", "CST"], tooltip="Time zone for trading hours")

// Additional controls
avoidLunchHour = input.bool(true, "Avoid Lunch Hour (12:00-1:00 PM)", tooltip="Skip trading during typical lunch break")
weekendsOnly = input.bool(false, "Weekends Only", tooltip="Only trade on weekends")
weekdaysOnly = input.bool(false, "Weekdays Only", tooltip="Only trade on weekdays")

// Strategy Settings
entryQty = input.int(10, "Entry Quantity (Contracts)", minval=1, maxval=1000)
enablePartialClose = input.bool(true, "Enable Partial Close at TP1")
partialCloseQty = input.int(1, "Contracts to Close at TP1", minval=1, maxval=100)
enableAlerts = input.bool(true, "Enable Strategy Alerts")

// Dashboard Settings
dashboardSize = input.string("Medium", "Dashboard Size", options=["Small", "Medium", "Large"], tooltip="Control the size of the information dashboard")
enableScorecard = input.bool(true, "Enable Performance Scorecard", tooltip="Show performance metrics in lower right corner")

// Trailing Stop Settings
enableTrailingStop = input.bool(true, "Enable Trailing Stop")
trailMode = input.string("Balanced", "Trailing Stop Mode", options=["Conservative", "Balanced", "Aggressive"], tooltip="Conservative: Protect more profit | Balanced: Good middle ground | Aggressive: Let winners run longer")

// Set trailing parameters based on mode
trailActivationMultiplier = trailMode == "Conservative" ? 0.8 : trailMode == "Balanced" ? 1.0 : 1.2
trailDistanceMultiplier = trailMode == "Conservative" ? 0.6 : trailMode == "Balanced" ? 0.8 : 1.0

// TIME FILTER FUNCTIONS
// Convert 12-hour format to 24-hour format
convertTo24Hour(hour12, ampm) =>
    var int hour24 = na
    if ampm == "AM"
        hour24 := hour12 == 12 ? 0 : hour12
    else // PM
        hour24 := hour12 == 12 ? 12 : hour12 + 12
    hour24

// Convert timezone to UTC offset
getUTCOffset(tz) =>
    var int offset = na
    if tz == "UTC"
        offset := 0
    else if tz == "EST"
        offset := -5  // EST is UTC-5
    else if tz == "CST" 
        offset := -6  // CST is UTC-6
    else if tz == "PST"
        offset := -8  // PST is UTC-8
    offset

getCurrentHour() =>
    hour(time, "UTC")

getCurrentDayOfWeek() =>
    dayofweek(time)

isWeekend() =>
    currentDay = getCurrentDayOfWeek()
    currentDay == dayofweek.saturday or currentDay == dayofweek.sunday

isWeekday() =>
    not isWeekend()

isInTradingWindow() =>
    if not enableTimeFilter
        true
    else
        // Convert 12-hour inputs to 24-hour UTC
        startHour24 = convertTo24Hour(startHour12, startAMPM)
        endHour24 = convertTo24Hour(endHour12, endAMPM)
        utcOffset = getUTCOffset(timeZone)
        
        // Convert local time to UTC
        startHourUTC = (startHour24 - utcOffset + 24) % 24
        endHourUTC = (endHour24 - utcOffset + 24) % 24
        
        currentHour = getCurrentHour()
        
        // Handle trading window logic
        var bool inWindow = false
        
        // Handle same-day window vs overnight window
        if startHourUTC <= endHourUTC
            // Same day window (e.g., 9 AM to 4 PM)
            inWindow := currentHour >= startHourUTC and currentHour <= endHourUTC
        else
            // Overnight window (e.g., 10 PM to 6 AM)
            inWindow := currentHour >= startHourUTC or currentHour <= endHourUTC
        
        // Apply day-of-week filters
        if weekendsOnly and not isWeekend()
            inWindow := false
        if weekdaysOnly and not isWeekday()
            inWindow := false
            
        // Apply lunch hour filter (12:00-1:00 PM in selected timezone)
        if avoidLunchHour and inWindow
            lunchStart24 = 12  // 12 PM
            lunchEnd24 = 13    // 1 PM
            lunchStartUTC = (lunchStart24 - utcOffset + 24) % 24
            lunchEndUTC = (lunchEnd24 - utcOffset + 24) % 24
            
            // Check if current hour falls in lunch period
            if lunchStartUTC <= lunchEndUTC
                // Normal case: lunch doesn't cross midnight
                if currentHour >= lunchStartUTC and currentHour < lunchEndUTC
                    inWindow := false
            else
                // Edge case: lunch period crosses midnight (shouldn't happen but safety check)
                if currentHour >= lunchStartUTC or currentHour < lunchEndUTC
                    inWindow := false
        
        inWindow

// Combined time filter
isGoodTradingTime() =>
    isInTradingWindow()

// ATR and Volume Calculation
atr = ta.atr(atrPeriod)
volumeSMA = ta.sma(volume, atrPeriod)

// Trend Filter
trendMA = enableTrendFilter ? (trendMAType == "EMA" ? ta.ema(close, trendMAPeriod) : ta.sma(close, trendMAPeriod)) : na
isBullishTrend = enableTrendFilter ? close > trendMA : true
isBearishTrend = enableTrendFilter ? close < trendMA : true

// Key Levels Identification (Support & Resistance Zones)
support = ta.lowest(low, lookbackPeriod)
resistance = ta.highest(high, lookbackPeriod)
supportBuffer = support - atr * 0.5
resistanceBuffer = resistance + atr * 0.5

// Define Entry Conditions (with time filter)
isBullishEntry = (close > supportBuffer) and (low <= support) and (volume > volumeSMA) and isBullishTrend and isGoodTradingTime()
isBearishEntry = (close < resistanceBuffer) and (high >= resistance) and (volume > volumeSMA) and isBearishTrend and isGoodTradingTime()

// Calculate Stop Loss and Take Profit Levels
bullishSL = support - atr * atrMultiplierSL
bullishTP1 = support + atr * rewardToRisk * atrMultiplierTP1
bullishTP2 = support + atr * rewardToRisk * atrMultiplierTP2

bearishSL = resistance + atr * atrMultiplierSL
bearishTP1 = resistance - atr * rewardToRisk * atrMultiplierTP1
bearishTP2 = resistance - atr * rewardToRisk * atrMultiplierTP2

// Strategy Position Management
var float longEntryPrice = na
var float shortEntryPrice = na
var bool tp1HitLong = false
var bool tp1HitShort = false

// Trailing Stop Variables
var float longTrailStop = na
var float shortTrailStop = na
var bool longTrailActive = false
var bool shortTrailActive = false

// Calculate position sizing
finalQty = entryQty

// Long Entry
if isBullishEntry and strategy.position_size == 0
    strategy.entry("Long", strategy.long, qty=finalQty)
    longEntryPrice := close
    tp1HitLong := false
    // Reset trailing stop variables
    longTrailStop := na
    longTrailActive := false
    if enableAlerts
        alert("Long Entry Signal at " + str.tostring(close) + " - Qty: " + str.tostring(finalQty), alert.freq_once_per_bar)

// Short Entry
if isBearishEntry and strategy.position_size == 0
    strategy.entry("Short", strategy.short, qty=finalQty)
    shortEntryPrice := close
    tp1HitShort := false
    // Reset trailing stop variables
    shortTrailStop := na
    shortTrailActive := false
    if enableAlerts
        alert("Short Entry Signal at " + str.tostring(close) + " - Qty: " + str.tostring(finalQty), alert.freq_once_per_bar)

// Long Position Management
if strategy.position_size > 0
    // Calculate current profit
    currentProfit = close - strategy.position_avg_price
    profitInATR = currentProfit / atr
    
    // Trailing Stop Logic
    if enableTrailingStop and profitInATR >= trailActivationMultiplier
        // Activate trailing stop
        if not longTrailActive
            longTrailActive := true
            longTrailStop := close - atr * trailDistanceMultiplier
        else
            // Update trailing stop (only move up, never down)
            newTrailStop = close - atr * trailDistanceMultiplier
            longTrailStop := math.max(longTrailStop, newTrailStop)
    
    // Determine which stop loss to use
    effectiveStopLoss = enableTrailingStop and longTrailActive ? longTrailStop : bullishSL
    
    // Stop Loss (either original or trailing)
    strategy.exit("Long SL", "Long", stop=effectiveStopLoss)
    
    // Take Profit 1 (Partial Close by Contracts)
    if enablePartialClose and not tp1HitLong and high >= bullishTP1 and strategy.position_size >= partialCloseQty
        strategy.close("Long", qty=partialCloseQty, comment="Long TP1", immediately=true)
        tp1HitLong := true
    
    // Take Profit 2 (Close Remaining Position) or Full Close if Partial is Disabled
    if (enablePartialClose and tp1HitLong and high >= bullishTP2) or (not enablePartialClose and high >= bullishTP1)
        strategy.close("Long", comment=enablePartialClose ? "Long TP2" : "Long TP1", immediately=true)

// Short Position Management
if strategy.position_size < 0
    // Calculate current profit (for shorts, profit when price goes down)
    currentProfit = strategy.position_avg_price - close
    profitInATR = currentProfit / atr
    
    // Trailing Stop Logic
    if enableTrailingStop and profitInATR >= trailActivationMultiplier
        // Activate trailing stop
        if not shortTrailActive
            shortTrailActive := true
            shortTrailStop := close + atr * trailDistanceMultiplier
        else
            // Update trailing stop (only move down, never up)
            newTrailStop = close + atr * trailDistanceMultiplier
            shortTrailStop := math.min(shortTrailStop, newTrailStop)
    
    // Determine which stop loss to use
    effectiveStopLoss = enableTrailingStop and shortTrailActive ? shortTrailStop : bearishSL
    
    // Stop Loss (either original or trailing)
    strategy.exit("Short SL", "Short", stop=effectiveStopLoss)
    
    // Take Profit 1 (Partial Close by Contracts)
    if enablePartialClose and not tp1HitShort and low <= bearishTP1 and math.abs(strategy.position_size) >= partialCloseQty
        strategy.close("Short", qty=partialCloseQty, comment="Short TP1", immediately=true)
        tp1HitShort := true
    
    // Take Profit 2 (Close Remaining Position) or Full Close if Partial is Disabled
    if (enablePartialClose and tp1HitShort and low <= bearishTP2) or (not enablePartialClose and low <= bearishTP1)
        strategy.close("Short", comment=enablePartialClose ? "Short TP2" : "Short TP1", immediately=true)

// Reset flags when position closes
if strategy.position_size == 0
    tp1HitLong := false
    tp1HitShort := false
    // Reset trailing stop variables
    longTrailStop := na
    shortTrailStop := na
    longTrailActive := false
    shortTrailActive := false

// Visualization - Entry Zones
var box bullishBox = na
var box bearishBox = na
var label bullishZoneLabel = na
var label bearishZoneLabel = na

// Bullish Entry Zone


// Bearish Entry Zone


// Visualization - Risk/Reward Lines for Active Positions
var line longTP1Line = na
var line longTP2Line = na
var line longSLLine = na
var line shortTP1Line = na
var line shortTP2Line = na
var line shortSLLine = na

// Labels for TP/SL Values


// Short Position Lines and Labels


// Support and Resistance Lines
plot(support, "Support", color=color.green, linewidth=1, style=plot.style_line)
plot(resistance, "Resistance", color=color.red, linewidth=1, style=plot.style_line)

// Plot Trend MA if enabled
plot(enableTrendFilter ? trendMA : na, "Trend MA", color=color.blue, linewidth=2)

// Plot Trailing Stops if active
plot(strategy.position_size > 0 and longTrailActive ? longTrailStop : na, "Long Trail Stop", color=color.orange, linewidth=2, style=plot.style_stepline)
plot(strategy.position_size < 0 and shortTrailActive ? shortTrailStop : na, "Short Trail Stop", color=color.orange, linewidth=2, style=plot.style_stepline)