
एक बहुस्तरीय लक्ष्य और ट्रेल स्टॉप रणनीति एक हेनानसी चार्ट मॉडल पर आधारित एक प्रवृत्ति ट्रैकिंग प्रणाली है, जिसे बाजार की गतिशीलता को पकड़ने और मुनाफे की रक्षा करने के लिए डिज़ाइन किया गया है। यह रणनीति प्रारंभिक प्रवेश और दूसरी प्रविष्टि की अनुमति देती है ((पिरामिड स्टॉकिंग), प्रत्येक प्रविष्टि के लिए एक स्वतंत्र लाभ लक्ष्य और स्टॉप सेटिंग है। यह लाभप्रदता की क्षमता का विस्तार करने के लिए गतिशील लक्ष्य क्षेत्रों का उपयोग करता है, और एक लचीली ट्रेल स्टॉप प्रणाली को लागू करता है जो लाभ को बंद कर देता है क्योंकि कीमत अनुकूल दिशा में चलती है।
यह रणनीति कुछ प्रमुख सिद्धांतों पर आधारित हैः
हेनान-एन्सी मानचित्र संकेत: हाइन-एन्सी चार्ट का उपयोग बाजार के शोर को फ़िल्टर करने और रुझानों की पहचान करने के लिए किया जाता है। मल्टीहेड सिग्नल तब ट्रिगर होता है जब वर्तमान एचए क्लोज प्राइस एचए क्लोज प्राइस से अधिक होता है और पिछले एचए क्लोज प्राइस से अधिक होता है; एक खाली सिर सिग्नल इसके विपरीत होता है।
डबल प्रवेश प्रणाली:
घाटे के संतुलन को तोड़ना: जब पहला लक्ष्य प्राप्त होता है, तो रणनीति स्वचालित रूप से स्टॉप लॉस स्तर को प्रवेश मूल्य पर स्थानांतरित करती है, यह सुनिश्चित करने के लिए कि कोई लेनदेन घाटे में नहीं है
लक्ष्य क्षेत्र की अवधारणा: जब कीमत लक्ष्य स्तर के करीब होती है (एक पूर्वनिर्धारित मूल्यह्रास के भीतर), रणनीति “लक्ष्य क्षेत्र” शुरू करती है, अधिक संभावित लाभ को पकड़ने के लिए लक्ष्य स्तर को बढ़ाता है
अनुवर्ती रोकथाम:
स्थिति ट्रैक करेंरणनीतिः ट्रेडों की दिशा, मूल्य चरम, पहले लक्ष्य तक पहुंचना और वर्तमान में लक्ष्य क्षेत्र में होना आदि को ट्रैक करने के लिए कई चरों को बनाए रखना
पूर्ण जोखिम प्रबंधनइस रणनीति में पूर्व-हानि, घाटे के संतुलन की सुरक्षा और अनुवर्ती हानियों को रोकने के माध्यम से बहुस्तरीय जोखिम प्रबंधन प्रदान किया गया है, जिससे पूंजी को भारी गिरावट से बचाया जा सकता है।
पिरामिड के रूप में बढ़त: दोहरे प्रवेश की अनुमति देकर, रणनीति एक पुष्टि की गई प्रवृत्ति में स्थिति को बढ़ाने में सक्षम है, जो लाभप्रदता की क्षमता को बढ़ाता है, जबकि समग्र जोखिम को नहीं बढ़ाता है क्योंकि पहला व्यापार पहले से ही लाभ और हानि के संतुलन बिंदु पर बंद है।
गतिशील लाभ कैप्चर: लक्ष्य क्षेत्र और लक्ष्य वृद्धि सुविधा रणनीति को मजबूत बाजारों में स्वचालित रूप से लाभ लक्ष्य का विस्तार करने की अनुमति देती है, बजाय इसके कि वह मजबूत प्रवृत्ति से समय से पहले बाहर निकल जाए।
ऊंचाई अनुकूलित: रणनीति व्यापक पैरामीटर सेटिंग्स प्रदान करती है, जो व्यापारियों को बाजार की स्थितियों, व्यापारिक किस्मों की विशेषताओं और व्यक्तिगत जोखिम वरीयताओं के आधार पर समायोजित करने की अनुमति देती है।
स्वचालित निष्पादन: एक बार पैरामीटर सेट हो जाने के बाद, रणनीति सभी प्रवेश, प्रस्थान और स्टॉप लॉस समायोजनों को निष्पादित करती है, भावनात्मक व्यापार के प्रभाव को समाप्त करती है।
दृश्य प्रतिक्रिया: रणनीति में स्पष्ट दृश्य घटक शामिल हैं, जो लक्ष्य स्तर, रोकथाम स्तर और वर्तमान स्थिति संकेतक प्रदर्शित करते हैं, जिससे व्यापारी आसानी से व्यापार की प्रगति की निगरानी कर सकते हैं।
पैरामीटर संवेदनशीलता: रणनीति का प्रदर्शन अत्यधिक पैरामीटर सेटिंग पर निर्भर करता है। अनुचित लक्ष्य या स्टॉप लॉस पैरामीटर के कारण अच्छी ट्रेडों से जल्द ही बाहर निकलने या बहुत अधिक गिरावट का जोखिम उठाने का जोखिम हो सकता है। इस जोखिम को कम किया जा सकता है ऐतिहासिक अवलोकन और बाजार-विशिष्ट पैरामीटर का अनुकूलन करके।
फिसलन जोखिम: विशेष रूप से अनुवर्ती रोक के निष्पादन के दौरान, बाजार के अंतराल या अपर्याप्त तरलता के कारण वास्तविक निष्पादन मूल्य आदर्श रोक के स्तर से भिन्न हो सकता है। स्लिप पॉइंट बफर को बढ़ाने या अधिक रूढ़िवादी अनुवर्ती पैरामीटर का उपयोग करने पर विचार करने से इस जोखिम को कम किया जा सकता है।
ओवरट्रेडिंग में फिर से प्रवेश: दोहरे प्रवेश को सक्षम करने से अस्थिर बाजारों में अत्यधिक व्यापार हो सकता है। अतिरिक्त फ़िल्टरिंग शर्तों या दोहरे प्रवेश के समय की सीमा को लागू करने से ऐसी स्थिति कम हो सकती है।
बाजार में बदलाव का जोखिम: हालांकि रणनीति ट्रेंडिंग बाजार में अच्छा प्रदर्शन करती है, लेकिन यह एक अस्थिर बाजार या अचानक बदलते बाजार में खराब प्रदर्शन कर सकती है। रणनीति और बाजार स्थिति फिल्टर के संयोजन से समग्र प्रभाव में वृद्धि हो सकती है।
गणना घनत्व: कई चर और स्थितियों को ट्रैक करने की रणनीति, कुछ प्लेटफार्मों पर निष्पादन में देरी का कारण बन सकती है। कोड का अनुकूलन और कुछ गणनाओं को सरल बनाने से प्रदर्शन में सुधार हो सकता है।
प्रवृत्ति फ़िल्टर जोड़ें: एकीकृत रुझान संकेतक (जैसे कि चलती औसत, ADX या रुझान की ताकत संकेतक) प्रवेश की गुणवत्ता में सुधार कर सकते हैं, केवल पुष्टि की गई प्रवृत्ति की दिशा में व्यापार करते हैं। यह अस्थिर बाजारों में गलत संकेतों को कम करेगा।
समय फ़िल्टर करें: दो बार प्रवेश के लिए समय खिड़की या शीतलन अवधि जोड़ें, ताकि कम समय में अत्यधिक व्यापार या एक ही प्रवृत्ति से बार-बार प्रवेश न हो।
अस्थिरता समायोजन: बाजार में उतार-चढ़ाव के आधार पर लक्ष्य और रोकथाम मापदंडों को गतिशील रूप से समायोजित करके रणनीति को विभिन्न बाजार स्थितियों के अनुकूल बनाने के लिए। यह रोकथाम और लक्ष्य स्तर को वर्तमान बाजार विशेषताओं के अनुकूल बना देगा।
हेनान्सी तर्क में सुधार: वर्तमान में, एचए का निर्णय अपेक्षाकृत सरल है, और सिग्नल गुणवत्ता को बढ़ाने के लिए कई एचए फ्लैगोग्राम या एचए गतिशीलता मापदंडों को ध्यान में रखा जा सकता है।
कुछ मुनाफा लॉक जोड़ें: एक चरणबद्ध मुनाफा लॉक करने की सुविधा लागू करना, जो एक निश्चित लाभ स्तर तक पहुंचने पर कुछ पदों को बंद करने की अनुमति देता है, जबकि शेष को चालू रखने के लिए, लाभ संरक्षण और संभावित लाभ को अधिकतम करने के बीच संतुलन बनाता है।
लक्ष्य क्षेत्र तर्क का अनुकूलन करें: वर्तमान लक्ष्य क्षेत्र में एक निश्चित वृद्धि हुई पैदल दूरी का उपयोग करना। बाजार की अस्थिरता या हाल के मूल्य आंदोलनों के आधार पर गतिशील लक्ष्य समायोजन एल्गोरिदम पर विचार किया जा सकता है, जो बाजार की परिस्थितियों में बदलाव के लिए बेहतर रूप से अनुकूल है।
एक बहुस्तरीय लक्ष्य और अनुवर्ती रोकथाम रणनीति एक व्यापक ट्रेडिंग प्रणाली है जिसमें हाइनेन्सी प्रवृत्ति की पहचान, गतिशील लक्ष्य प्रबंधन, दोहरे प्रवेश के अवसर और बहुस्तरीय जोखिम नियंत्रण शामिल हैं। इस रणनीति का मुख्य लाभ इसके लचीले लाभ विस्तार तंत्र और सख्त जोखिम प्रबंधन ढांचे में है, जो इसे ट्रेंडिंग बाजारों में महत्वपूर्ण आंदोलनों को पकड़ने के लिए उपयुक्त बनाता है।
हालांकि यह रणनीति एक मजबूत ढांचा प्रदान करती है, लेकिन इसकी प्रभावशीलता अभी भी उचित पैरामीटर समायोजन और बाजार की स्थितियों पर निर्भर करती है। बाजार की स्थिति फ़िल्टर, अस्थिरता समायोजन तंत्र और अधिक जटिल प्रवेश पुष्टि तर्क जोड़कर, यह रणनीति अपनी स्थिरता और अनुकूलनशीलता को और बढ़ा सकती है। अंततः, यह रणनीति एक संतुलन की कुंजी का प्रतिनिधित्व करती है, जो ट्रेडिंग पूंजी को संरक्षित करती है, जबकि रुझानों को अधिकतम करने की कोशिश करती है।
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Algo Trading v1 | SUNNY GUHA By OIESU", overlay=true, margin_long=100, margin_short=100, pyramiding=100)
// ———— USER INPUTS ———— //
// First Entry Settings
float initialTarget = input.float(10000, "First Entry: Target ($)", minval=1, tooltip="First target level")
float initialStopLoss = input.float(3000, "First Entry: Stop Loss ($)", minval=1, tooltip="Initial stop loss distance")
bool useTrailFirst = input.bool(true, "First Entry: Enable Trail", tooltip="Enable trailing features after first target hit")
float profitTrailStepFirst = input.float(1500, "First Entry: Trail Amount ($)", minval=1, tooltip="Trail amount after first target hit")
bool useTargetZoneFirst = input.bool(true, "First Entry: Enable Target Zone", tooltip="Enable target zone feature")
float targetZoneThresholdFirst = input.float(1000, "First Entry: Target Zone Threshold ($)", minval=1, tooltip="Distance to activate target zone")
float targetIncreaseStepFirst = input.float(2000, "First Entry: Target Increase ($)", minval=1, tooltip="Amount to increase target")
// Second Entry Settings
bool enableSecondEntries = input.bool(true, "Enable Second Entries", tooltip="Allow re-entries after first target hit")
float secondTarget = input.float(5000, "Second Entry: Target ($)", minval=1, tooltip="Target for second entries")
float secondStopLoss = input.float(2000, "Second Entry: Stop Loss ($)", minval=1, tooltip="Stop loss for second entries")
bool useTrailSecond = input.bool(true, "Second Entry: Enable Trail", tooltip="Enable trailing for second entries")
float profitTrailStepSecond = input.float(1500, "Second Entry: Trail Amount ($)", minval=1, tooltip="Trail amount for second entries")
bool useTargetZoneSecond = input.bool(true, "Second Entry: Enable Target Zone", tooltip="Enable target zone")
float targetZoneThresholdSecond = input.float(1000, "Second Entry: Target Zone Threshold ($)", minval=1)
float targetIncreaseStepSecond = input.float(2000, "Second Entry: Target Increase ($)", minval=1)
// ———— HEIKIN-ASHI CALCULATIONS ———— //
var float haOpen = na
var float haClose = na
var float haHigh = na
var float haLow = na
haClose := (open + high + low + close)/4
haOpen := na(haOpen[1]) ? (open + close)/2 : (haOpen[1] + haClose[1])/2
haHigh := math.max(high, math.max(haOpen, haClose))
haLow := math.min(low, math.min(haOpen, haClose))
// ———— TRACKING VARIABLES ———— //
var float highestPrice = na // Tracks highest price for long positions
var float lowestPrice = na // Tracks lowest price for short positions
var float basePrice = na // Entry price for position
var float targetLevel = na // Current target level
var float stopLevel = na // Current stop level
var bool firstTargetHit = false // Indicates if first target was hit
var string tradeDirection = "none" // Current trade direction
var bool isSecondEntry = false // Tracks if current position is a second entry
var bool inTargetZone = false // Tracks if price is in target zone
// ———— SIGNAL DETECTION ———— //
bullish = haClose > haOpen and haClose > haClose[1]
bearish = haClose < haOpen and haClose < haClose[1]
// Entry conditions - only allow second entries if enabled and after first target hit
longCondition = bullish and (tradeDirection != "long" or (enableSecondEntries and firstTargetHit))
shortCondition = bearish and (tradeDirection != "short" or (enableSecondEntries and firstTargetHit))
// Position Management - Long Positions
if strategy.position_size > 0
highestPrice := math.max(high, nz(highestPrice, high))
if isSecondEntry
// Second Entry Management
inTargetZone := useTargetZoneSecond and high >= targetLevel - targetZoneThresholdSecond
if inTargetZone and useTargetZoneSecond
targetLevel := targetLevel + targetIncreaseStepSecond
if useTrailSecond
stopLevel := math.max(stopLevel, highestPrice - profitTrailStepSecond)
if low <= stopLevel
strategy.close_all("Second Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
else
// First Entry Management - improved profit locking
if not firstTargetHit and high >= basePrice + initialTarget
// First target hit - ALWAYS lock profit at break-even
firstTargetHit := true
stopLevel := basePrice // Move stop to break-even
targetLevel := useTrailFirst ? high + targetIncreaseStepFirst : basePrice + initialTarget
else if firstTargetHit
// Only modify target if trailing is enabled
if useTrailFirst
inTargetZone := useTargetZoneFirst and high >= targetLevel - targetZoneThresholdFirst
if inTargetZone and useTargetZoneFirst
targetLevel := targetLevel + targetIncreaseStepFirst
// Trail stop-loss but never below break-even
stopLevel := math.max(basePrice, highestPrice - profitTrailStepFirst)
else
// Before first target hit
targetLevel := basePrice + initialTarget
stopLevel := basePrice - initialStopLoss
// Exit on stop hit - this could only be at break-even or better after first target
if low <= stopLevel
strategy.close_all("First Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
// Position Management - Short Positions
if strategy.position_size < 0
lowestPrice := math.min(low, nz(lowestPrice, low))
if isSecondEntry
// Second Entry Management
inTargetZone := useTargetZoneSecond and low <= targetLevel + targetZoneThresholdSecond
if inTargetZone and useTargetZoneSecond
targetLevel := targetLevel - targetIncreaseStepSecond
if useTrailSecond
stopLevel := math.min(stopLevel, lowestPrice + profitTrailStepSecond)
if high >= stopLevel
strategy.close_all("Second Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
else
// First Entry Management - improved profit locking
if not firstTargetHit and low <= basePrice - initialTarget
// First target hit - ALWAYS lock profit at break-even
firstTargetHit := true
stopLevel := basePrice // Move stop to break-even
targetLevel := useTrailFirst ? low - targetIncreaseStepFirst : basePrice - initialTarget
else if firstTargetHit
// Only modify target if trailing is enabled
if useTrailFirst
inTargetZone := useTargetZoneFirst and low <= targetLevel + targetZoneThresholdFirst
if inTargetZone and useTargetZoneFirst
targetLevel := targetLevel - targetIncreaseStepFirst
// Trail stop-loss but never above break-even
stopLevel := math.min(basePrice, lowestPrice + profitTrailStepFirst)
else
// Before first target hit
targetLevel := basePrice - initialTarget
stopLevel := basePrice + initialStopLoss
// Exit on stop hit - this could only be at break-even or better after first target
if high >= stopLevel
strategy.close_all("First Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
// New Position Entry
if strategy.position_size == 0
if longCondition
tradeDirection := "long"
basePrice := close
targetLevel := basePrice + (firstTargetHit ? secondTarget : initialTarget)
stopLevel := basePrice - (firstTargetHit ? secondStopLoss : initialStopLoss)
highestPrice := high
isSecondEntry := firstTargetHit
strategy.entry("Long", strategy.long)
else if shortCondition
tradeDirection := "short"
basePrice := close
targetLevel := basePrice - (firstTargetHit ? secondTarget : initialTarget)
stopLevel := basePrice + (firstTargetHit ? secondStopLoss : initialStopLoss)
lowestPrice := low
isSecondEntry := firstTargetHit
strategy.entry("Short", strategy.short)
// ———— VISUALIZATION ———— //
// Entry signals
plotshape(longCondition and (strategy.position_size == 0), title="Buy", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition and (strategy.position_size == 0), title="Sell", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Target and stop levels with clearer colors
plot(targetLevel, title="Target Level", color=color.orange, linewidth=2)
plot(stopLevel, title="Stop Level", color=color.red, linewidth=2)
// Break-even level - shown prominently after first target hit
plot(strategy.position_size != 0 and firstTargetHit ? basePrice : na, title="Break-Even Level", color=color.green, linewidth=2, style=plot.style_linebr)
// Debug plots for state tracking
plotchar(firstTargetHit, title="First Target Hit", char="T", location=location.top, color=color.yellow, size=size.tiny)
plotchar(isSecondEntry, title="Second Entry", char="2", location=location.top, color=color.white, size=size.tiny)
plotchar(useTrailFirst and firstTargetHit, title="Trail Active", char="→", location=location.top, color=color.blue, size=size.tiny)
plotchar(inTargetZone, title="Target Zone", char="Z", location=location.top, color=color.fuchsia, size=size.tiny)