
ट्रेंड रिवर्स रिवर्सिबल रिस्क डायनामिक इनपुट रणनीति को मल्टीहेड पोजीशन बनाने के लिए डिज़ाइन किया गया है, जो एक अल्पकालिक रुझान में बदलाव के बाद रिवर्स की उम्मीद करता है, जबकि बाजार की स्थिति में तेजी से उतार-चढ़ाव के लिए उपयुक्त है। यह रणनीति एसएमए क्रॉस-कन्फर्मेशन ट्रेंड, फिक्स्ड प्रतिशत रिवर्सिबल इनपुट पॉइंट्स और समायोज्य जोखिम प्रबंधन मापदंडों के संयोजन के साथ इष्टतम ट्रेडिंग निष्पादन को प्राप्त करती है।
रणनीति का मूल यह है कि रुझान की दिशा की पुष्टि करने के लिए 10 चक्र और 25 चक्र के सरल चलती औसत (SMA) का उपयोग किया जाता है, और 150 चक्र के सूचकांक चलती औसत (EMA) के साथ एक अतिरिक्त फ़िल्टरिंग शर्त के रूप में खाली ट्रेडों के लिए। मल्टीहेड ट्रेडों में एसएमए के बाद तुरंत प्रवेश नहीं किया जाता है, लेकिन कीमतों को एक निर्दिष्ट प्रतिशत तक वापस लाने के बाद प्रवेश करने के लिए इंतजार किया जाता है। इस पद्धति ने प्रवेश की कीमतों को अनुकूलित किया है और जोखिम-लाभ अनुपात को बढ़ाया है।
इस रणनीति के संचालन के सिद्धांत को कुछ प्रमुख भागों में विभाजित किया जा सकता हैः
रुझान पहचान तंत्र:
मल्टीहेड रिडायरेक्ट सिस्टम:
खाली सिर प्रवेश नियम:
जोखिम प्रबंधन और बाहर निकलने की रणनीति:
रणनीति एक स्थायी चर का उपयोग करती है जो रिवर्स सिग्नल को ट्रैक करती है ताकि यह सुनिश्चित किया जा सके कि सही समय पर प्रवेश किया जाए। जब कोई स्थान नहीं होता है, तो सिस्टम अगले ट्रेडिंग सिग्नल के लिए तैयार होने के लिए सभी संकेतों और स्तरों को रीसेट करता है।
कोड के गहन विश्लेषण के बाद, इस रणनीति के निम्नलिखित प्रमुख फायदे हैंः
अनुकूलित प्रवेश समय:
पूर्ण जोखिम प्रबंधन:
रुझान फ़िल्टर करें:
दृश्य प्रतिक्रिया:
अत्यधिक अनुकूलनीय:
हालांकि इस रणनीति के कई फायदे हैं, लेकिन इसके साथ निम्नलिखित जोखिम भी हैं, जिन पर ध्यान देना चाहिएः
तेजी से बाजार के जोखिम:
बाजार में उतार-चढ़ाव:
फिक्स्ड-पॉइंट जोखिम प्रबंधन की सीमाएं:
तकनीकी संकेतकों पर अत्यधिक निर्भरता:
पैरामीटर अनुकूलन जोखिम:
कोड विश्लेषण के आधार पर, इस रणनीति के अनुकूलन के लिए कुछ प्रमुख दिशाएं हैंः
गतिशील जोखिम प्रबंधन:
stopDistance = input.float(2.0) * ta.atr(14)की गणना कैसेरुझान तीव्रता फ़िल्टर:
बहु-समय-सीमा विश्लेषण:
स्मार्ट रिवर्स पहचान:
लेन-देन की पुष्टि:
अनुकूलन पैरामीटर:
ट्रेंड रिडक्शन जोखिम को समायोजित करता है गतिशील प्रविष्टि रणनीति एक अच्छी तरह से डिज़ाइन की गई ट्रेडिंग प्रणाली है जो ट्रेंड की पहचान, प्रविष्टि का अनुकूलन और समग्र जोखिम प्रबंधन को जोड़ती है। कीमतों के रिडक्शन की प्रतीक्षा करके और फिर से प्रवेश करके, रणनीति को सरल SMA क्रॉस सिस्टम की तुलना में बेहतर प्रवेश मूल्य और जोखिम रिटर्न अनुपात मिलता है।
इस रणनीति का मुख्य लाभ इसकी लचीलापन और समायोज्यता है, जो व्यापारियों को व्यक्तिगत जोखिम वरीयताओं और बाजार की स्थितियों के आधार पर पैरामीटर को समायोजित करने की अनुमति देता है। साथ ही, एकीकृत जोखिम प्रबंधन सुविधाएं (जो रोक, रोक और सुरक्षा बिंदुओं सहित) पूर्ण धन सुरक्षा प्रदान करती हैं।
हालांकि, इस रणनीति में कुछ सीमाएं भी हैं, जिनमें उतार-चढ़ाव वाले बाजारों में प्रदर्शन और फिक्स्ड-पॉइंट जोखिम प्रबंधन की सीमाएं शामिल हैं। गतिशील जोखिम प्रबंधन, रुझान की ताकत फ़िल्टरिंग और ट्रेड वॉल्यूम की पुष्टि जैसे सिफारिशों के अनुकूलन को लागू करके, रणनीति की स्थिरता और समग्र प्रदर्शन में काफी सुधार किया जा सकता है।
स्विंग ट्रेडरों के लिए, यह एक आदर्श बुनियादी रणनीति है जिसे व्यक्तिगत ट्रेडिंग शैली और लक्ष्यों के आधार पर और अधिक अनुकूलित किया जा सकता है। उचित पैरामीटर सेटिंग और निरंतर निगरानी समायोजन के साथ, इस रणनीति में विभिन्न बाजार स्थितियों में स्थिर ट्रेडिंग परिणाम प्रदान करने की क्षमता है।
/*backtest
start: 2024-08-01 00:00:00
end: 2025-03-25 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("BTCUSD with adjustable sl,tp",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
calc_on_every_tick=true)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ USER INPUTS
// ─────────────────────────────────────────────────────────────────────────────
longSignalStyle = input.string("Label Up", title="Long Signal Style", options=["Label Up", "Arrow Up", "Cross"])
shortSignalStyle = input.string("Label Down", title="Short Signal Style", options=["Label Down", "Arrow Down", "Cross"])
// Adjustable exit parameters (in points)
tpDistance = input.int(1000, "Take Profit Distance (points)", minval=1)
slDistance = input.int(250, "Stop Loss Distance (points)", minval=1)
beTrigger = input.int(500, "Break-Even Trigger Distance (points)", minval=1)
// Adjustable retracement percentage for long pullback entry (e.g. 0.01 = 1%)
retracementPct = input.float(0.01, "Retracement Percentage (e.g. 0.01 for 1%)", step=0.001)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ INDICATORS: SMA & EMA
// ─────────────────────────────────────────────────────────────────────────────
sma10 = ta.sma(close, 10)
sma25 = ta.sma(close, 25)
ema150 = ta.ema(close, 150)
plot(sma10, color=color.blue, title="SMA 10")
plot(sma25, color=color.red, title="SMA 25")
plot(ema150, color=color.orange, title="EMA 150")
// ─────────────────────────────────────────────────────────────────────────────
// ▌ ENTRY CONDITIONS
// ─────────────────────────────────────────────────────────────────────────────
longCondition = ta.crossover(sma10, sma25)
shortCondition = ta.crossunder(sma10, sma25)
shortValid = close < ema150 // Only take shorts if price is below EMA150
// Plot immediate entry signals (for visual reference)
plotshape(longCondition and (strategy.position_size == 0), title="Long Signal",
style=(longSignalStyle == "Label Up" ? shape.labelup : (longSignalStyle == "Arrow Up" ? shape.triangleup : shape.cross)),
location=location.belowbar, color=color.green, text="Long", size=size.small)
plotshape(shortCondition and shortValid and (strategy.position_size == 0), title="Short Signal",
style=(shortSignalStyle == "Label Down" ? shape.labeldown : (shortSignalStyle == "Arrow Down" ? shape.triangledown : shape.cross)),
location=location.abovebar, color=color.red, text="Short", size=size.small)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ LONG PULLBACK ENTRY USING FIXED PERCENTAGE RETRACEMENT
// ─────────────────────────────────────────────────────────────────────────────
// We use persistent variables to track the pullback signal.
var bool longSignalActive = false
var float pullHigh = na // highest high since long signal activation
var float retraceLevel = na // level = pullHigh * (1 - retracementPct)
// Only consider new entries when no position is open.
if strategy.position_size == 0
// When a long crossover occurs, activate the signal and initialize pullHigh.
if longCondition
longSignalActive := true
pullHigh := high
// If signal active, update pullHigh and compute retracement level.
if longSignalActive
pullHigh := math.max(pullHigh, high)
retraceLevel := pullHigh * (1 - retracementPct)
// When price bounces upward and crosses above the retracement level, enter long
if ta.crossover(close, retraceLevel)
strategy.entry("Long", strategy.long)
longSignalActive := false
// Short entries: enter immediately if conditions are met
if shortCondition and shortValid
strategy.entry("Short", strategy.short)
// ─────────────────────────────────────────────────────────────────────────────
// ▌ EXIT CONDITIONS WITH ADJUSTABLE TP, SL & BE
// ─────────────────────────────────────────────────────────────────────────────
var bool beLong = false
var bool beShort = false
// LONG EXIT LOGIC
if strategy.position_size > 0 and strategy.position_avg_price > 0
longEntry = strategy.position_avg_price
// Additional exit: if SMA(10) crosses below SMA(25) while price < EMA150, exit long
if ta.crossunder(sma10, sma25) and close < ema150
label.new(bar_index, low, "SMA Exit", style=label.style_label_down, color=color.red, textcolor=color.white)
strategy.close("Long", comment="SMA Cross Exit")
// Break-even trigger if price moves in favor by beTrigger points
if close >= longEntry + beTrigger
beLong := true
effectiveLongStop = beLong ? longEntry : (longEntry - slDistance)
if close <= effectiveLongStop
label.new(bar_index, low, (beLong ? "BE Hit" : "SL Hit"), style=label.style_label_down, color=color.red, textcolor=color.white)
strategy.close("Long", comment=(beLong ? "BE Hit" : "SL Hit"))
if close >= longEntry + tpDistance
label.new(bar_index, high, "TP Hit", style=label.style_label_up, color=color.green, textcolor=color.white)
strategy.close("Long", comment="TP Hit")
// SHORT EXIT LOGIC
if strategy.position_size < 0 and strategy.position_avg_price > 0
shortEntry = strategy.position_avg_price
// Basic stop logic
if close >= shortEntry + slDistance
label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))
// Take profit logic
if close <= shortEntry - tpDistance
label.new(bar_index, low, "TP Hit", style=label.style_label_down, color=color.green, textcolor=color.white)
strategy.close("Short", comment="TP Hit")
// Break-even trigger
if close <= shortEntry - beTrigger
beShort := true
effectiveShortStop = beShort ? shortEntry : (shortEntry + slDistance)
if close >= effectiveShortStop
label.new(bar_index, high, (beShort ? "BE Hit" : "SL Hit"), style=label.style_label_up, color=color.red, textcolor=color.white)
strategy.close("Short", comment=(beShort ? "BE Hit" : "SL Hit"))
// Reset BE flags when no position is open
if strategy.position_size == 0
beLong := false
beShort := false
// Reset the pullback signal
if not longSignalActive
pullHigh := na
retraceLevel := na