रणनीति चलती औसत (एमए) की ढलान और एमए के लिए कीमत की सापेक्ष स्थिति के आधार पर व्यापारिक निर्णय लेती है। जब एमए ढलान न्यूनतम ढलान सीमा से अधिक होती है और कीमत एमए से ऊपर होती है, तो रणनीति एक लंबी स्थिति शुरू करती है। इसके अलावा, रणनीति जोखिम को प्रबंधित करने के लिए एक ट्रेलिंग स्टॉप लॉस का उपयोग करती है और विशिष्ट परिस्थितियों में पुनः प्रवेश की अनुमति देती है। रणनीति का उद्देश्य गतिशील स्टॉप-लॉस और पुनः प्रवेश तंत्र के माध्यम से रिटर्न और जोखिमों को अनुकूलित करते हुए अपट्रेंड में अवसरों को पकड़ना है।
रणनीति चलती औसत की ढलान और चलती औसत के लिए कीमत की सापेक्ष स्थिति के आधार पर रुझान निर्धारित करती है। यह ट्रेडों को प्रबंधित करने के लिए एक ट्रेलिंग स्टॉप लॉस और सशर्त पुनः प्रवेश तंत्रों का उपयोग करती है। रणनीति की ताकत इसकी प्रवृत्ति-अनुसरण क्षमता, गतिशील स्टॉप-लॉस सुरक्षा और पुनः प्रवेश के अवसरों पर कब्जा करने में निहित है। हालांकि, रणनीति में संभावित कमियां भी हैं, जैसे पैरामीटर संवेदनशीलता, प्रवृत्ति पहचान त्रुटियां, स्टॉप-लॉस आवृत्ति और पुनः प्रवेश जोखिम। अनुकूलन दिशाओं में प्रवृत्ति मान्यता, स्टॉप-लॉस विधियों, पुनः प्रवेश शर्तों और स्थिति आकार को परिष्कृत करना शामिल है। अभ्यास में रणनीति लागू करते समय, विशिष्ट बाजार विशेषताओं और व्यापार शैली के आधार पर सावधानीपूर्वक मूल्यांकन और समायोजित करना महत्वपूर्ण है।
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MA Incline Strategy with Trailing Stop-Loss and Conditional Re-Entry", overlay=true, calc_on_every_tick=true) // Input parameters windowSize = input.int(10, title="Window Size") maLength = input.int(150, title="Moving Average Length") minSlope = input.float(0.001, title="Minimum Slope") trailingStopPercentage = input.float(2.8, title="Trailing Stop Percentage (%)") / 100 reEntryPercentage = input.float(4.2, title="Re-Entry Percentage Above MA (%)") / 100 // Calculate the moving average ma = ta.sma(close, maLength) // Calculate the slope of the moving average over the window size previousMa = ta.sma(close[windowSize], maLength) slopeMa = (ma - previousMa) / windowSize // Check conditions isAboveMinSlope = slopeMa > minSlope isAboveMa = close > ma // Variables to track stop loss and re-entry condition var bool stopLossOccurred = false var float trailStopPrice = na // Buy condition buyCondition = isAboveMinSlope and isAboveMa and ((not stopLossOccurred) or (stopLossOccurred and low < ma * (1 + reEntryPercentage))) // Execute strategy if (buyCondition and strategy.opentrades == 0) if (stopLossOccurred and close < ma * (1 + reEntryPercentage)) strategy.entry("Long", strategy.long) stopLossOccurred := false else if (not stopLossOccurred) strategy.entry("Long", strategy.long) // Trailing stop-loss if (strategy.opentrades == 1) // Calculate the trailing stop price trailStopPrice := close * (1 - trailingStopPercentage) // Use the built-in strategy.exit function with the trailing stop strategy.exit("Trail Stop", "Long", stop=close * (1 - trailingStopPercentage)) // Exit condition sellCondition = ta.crossunder(close, ma) if (sellCondition and strategy.opentrades == 1) strategy.close("Long") // Check if stop loss occurred if (strategy.closedtrades > 0) lastExitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1) if (not na(trailStopPrice) and lastExitPrice <= trailStopPrice) stopLossOccurred := true // Reset stop loss flag if the price crosses below the MA if (ta.crossunder(close, ma)) stopLossOccurred := false