
एक एकल सूचक पर विश्वास करना बंद करो। इस रणनीति में तीन आयामों को जोड़ते हैं, जैसे कि तरलता की सफाई, लेनदेन की असामान्यता, ईएमए रुझान, 11 चक्रों का झूलना, महत्वपूर्ण समर्थन प्रतिरोध की पहचान करना, और 31 चक्र ईएमए फ़िल्टरिंग रुझान दिशा। परीक्षणों से पता चलता है कि बहु-पुष्टि तंत्र ने झूठी तोड़फोड़ के हस्तक्षेप को प्रभावी रूप से कम कर दिया है, लेकिन सिग्नल आवृत्ति में लगभग 30% की गिरावट की कीमत पर।
सामान्य तरलता सफाई रणनीति के साथ सबसे बड़ी समस्या बहुत अधिक शोर है। यहां 11 चक्रों के पारगमन औसत रेखा के 1 गुना का उपयोग किया जाता है, केवल एक फ़िल्टर के रूप में, केवल एक भारित ब्रेक के लिए संकेत ट्रिगर किया जाता है। डेटा के अनुसार, पारगमन की पुष्टि करने के बाद, जीत की दर 15-20% बढ़ जाती है, लेकिन कुछ हल्के पैमाने पर प्रभावी ब्रेक को याद किया जाएगा। इसलिए यह एक विकल्प की समस्या है, सही समाधान नहीं है।
सबसे तेज डिजाइन यहाँ हैः एक पलटाव तरलता स्वैपिंग सिग्नल के रूप में, तुरंत बंद। यह “विरोधी और मैं वापस” तर्क पारंपरिक स्टॉप की तुलना में अधिक संवेदनशील है, और प्रवृत्ति की वापसी की शुरुआत में वापस ले जा सकता है। दोहरी सुरक्षा के रूप में 3 चक्रों के बाद मूल्य वापसी और स्टॉप को वापस लेने के तंत्र के साथ। लेकिन सावधान रहें, अत्यधिक संवेदनशीलता अक्सर बंद हो सकती है।
31 चक्र ईएमए न केवल प्रवेश फ़िल्टर के रूप में उपयोग किया जाता है, बल्कि जबरन बाहर निकलने के लिए अंतिम रक्षा रेखा भी है। कीमतें ईएमए के नीचे जाने पर बिना शर्त के समापन, यह डिजाइन “प्रवृत्ति राजा है” की मूल मनोविज्ञान को दर्शाता है। ऐतिहासिक समीक्षा से पता चलता है कि यह तंत्र बड़े पैमाने पर पीछे हटने से बचने के लिए प्रभावी है, लेकिन यह अक्सर अशांति की स्थिति में ट्रिगर किया जाता है।
कोड में buy_lock और sell_lock डिजाइन बहुत चतुर है। एक बार जब एक स्वैपिंग सिग्नल ट्रिगर किया जाता है, तो यह उसी दिशा में सिग्नल को लॉक कर देता है जब तक कि कीमत फिर से महत्वपूर्ण स्थिति में वापस नहीं आ जाती है। यह एक ही लहर में स्थिति को फिर से खोलने से बचाता है, व्यापार लागत और जोखिम जोखिम को कम करता है। लेकिन यह भी संभव है कि लगातार ब्रेकआउट के अवसरों को याद किया जाए।
यह रणनीति स्पष्ट रुझान लेकिन अस्थिरता के साथ बाजार की स्थिति के लिए सबसे उपयुक्त है। यह एकतरफा उछाल या गिरावट में उत्कृष्ट प्रदर्शन करता है, लेकिन यह अक्सर क्षैतिज उतार-चढ़ाव में बंद हो जाता है। यह अनुशंसित है कि इसे दिन के स्तर पर उपयोग किया जाए, मिनट के स्तर पर शोर बहुत अधिक है। साथ ही ध्यान रखें कि कम तरलता वाली किस्मों में झूठे संकेत हो सकते हैं।
रणनीति में लगातार नुकसान का जोखिम होता है, खासकर जब बाजार संरचना में बदलाव होता है। 11 चक्रों की अस्थिरता की पहचान कुछ चरम स्थितियों में विफल हो सकती है, 31 चक्र ईएमए में तेजी से उलटफेर में देरी होती है। यह सलाह दी जाती है कि एकल पदों को कुल पूंजी के 10% से अधिक नहीं नियंत्रित किया जाए और बाजार की स्थिति के अनुसार पैरामीटर को समायोजित किया जाए।
/*backtest
start: 2024-12-17 00:00:00
end: 2025-12-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=5
strategy(
"Liquidity Sweep + Volume + OB + EMA Cross Exit (Fixed)",
overlay=true,
max_boxes_count=500,
max_lines_count=500,
initial_capital=100000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=10,
pyramiding=1)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// INPUTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
len = input.int(11, "Swing Length", minval=1)
volLen = input.int(11, "Volume MA Length", group="Volume Filter")
volMult = input.float(1, "Volume Multiplier", step=0.1, group="Volume Filter")
emaLength = input.int(31, "EMA Length", minval=1, group="EMA Filter")
extendBoxes = input.bool(true, "Extend Boxes")
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// EMA
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
emaVal = ta.ema(close, emaLength)
plot(emaVal, title="EMA", color=color.orange)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// COLORS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
buyCol = color.lime
sellCol = color.red
liqBuyCol = color.new(color.lime, 85)
liqSellCol = color.new(color.red, 85)
obBuyCol = color.new(color.green, 75)
obSellCol = color.new(color.maroon, 75)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// VOLUME FILTER
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
volMA = ta.sma(volume, volLen)
highVol = volume > volMA * volMult
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// PIVOTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ph = ta.pivothigh(len, len)
pl = ta.pivotlow(len, len)
var float lastPH = na
var float lastPL = na
if not na(ph)
lastPH := ph
if not na(pl)
lastPL := pl
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// LIQUIDITY SWEEPS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sellSweep = not na(lastPH) and high > lastPH and close < lastPH and highVol
buySweep = not na(lastPL) and low < lastPL and close > lastPL and highVol
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ANTI-SPAM LOCK
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
var bool buyLock = false
var bool sellLock = false
if buySweep
buyLock := true
else if not na(lastPL) and close < lastPL
buyLock := false
if sellSweep
sellLock := true
else if not na(lastPH) and close > lastPH
sellLock := false
buySignal = buySweep and not buyLock[1]
sellSignal = sellSweep and not sellLock[1]
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// TRADE STATE
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
var float entryPrice = na
var int entryBar = na
var int entryDir = 0 // 1 = BUY, -1 = SELL
var bool tradeAlive = false
//━━━━━━━━ ENTRY ━━━━━━━━━━━━━━━━━━━
if buySignal and not tradeAlive
strategy.entry("BUY", strategy.long)
entryPrice := close
entryBar := bar_index
entryDir := 1
tradeAlive := true
if sellSignal and not tradeAlive
strategy.entry("SELL", strategy.short)
entryPrice := close
entryBar := bar_index
entryDir := -1
tradeAlive := true
barsFromEntry = tradeAlive ? bar_index - entryBar : na
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// EXIT LOGIC
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
exitBuyAfter3 = tradeAlive and entryDir == 1 and barsFromEntry >= 3 and close < entryPrice
exitSellAfter3 = tradeAlive and entryDir == -1 and barsFromEntry >= 3 and close > entryPrice
exitOppBuy = tradeAlive and entryDir == 1 and sellSignal
exitOppSell = tradeAlive and entryDir == -1 and buySignal
// EMA downside cross exit
emaCrossDown = tradeAlive and ta.crossunder(close, emaVal)
exitEMA = emaCrossDown
exitSignal = exitBuyAfter3 or exitSellAfter3 or exitOppBuy or exitOppSell or exitEMA
if exitSignal
if entryDir == 1
strategy.close("BUY")
if entryDir == -1
strategy.close("SELL")
tradeAlive := false
entryPrice := na
entryBar := na
entryDir := 0
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// PLOTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
plotshape(buySignal, "BUY", shape.labelup, location.belowbar, color=buyCol, text="BUY", textcolor=color.black)
plotshape(sellSignal, "SELL", shape.labeldown, location.abovebar, color=sellCol, text="SELL", textcolor=color.white)
plotshape(exitBuyAfter3, "EXIT BUY 3+", shape.xcross, location.abovebar, color=color.orange)
plotshape(exitSellAfter3, "EXIT SELL 3+", shape.xcross, location.belowbar, color=color.orange)
plotshape(exitOppBuy, "EXIT BUY OPP", shape.flag, location.abovebar, color=color.yellow)
plotshape(exitOppSell, "EXIT SELL OPP", shape.flag, location.belowbar, color=color.yellow)
plotshape(exitEMA and entryDir == 1, "EXIT EMA BUY", shape.triangledown, location.abovebar, color=color.blue)
plotshape(exitEMA and entryDir == -1, "EXIT EMA SELL", shape.triangleup, location.belowbar, color=color.blue)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ALERTS
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
alertcondition(buySignal, "BUY Alert", "Liquidity Sweep BUY")
alertcondition(sellSignal, "SELL Alert", "Liquidity Sweep SELL")
alertcondition(exitEMA,title="EXIT EMA CROSS",message="Price crossed below EMA")