द्विध्रुवी चिकनी दोलक रणनीति

SMA stdev EMA CROSSOVER CROSSUNDER
निर्माण तिथि: 2025-10-17 15:20:53 अंत में संशोधित करें: 2025-10-17 15:20:53
कॉपी: 0 क्लिक्स: 262
2
ध्यान केंद्रित करना
323
समर्थक

द्विध्रुवी चिकनी दोलक रणनीति द्विध्रुवी चिकनी दोलक रणनीति

क्या यह एक जादू की चाल है?

क्या आप जानते हैं? यह रणनीति बाजार के लिए एक “भावना डिटेक्टर” की तरह है! यह बाजार के “खुशी और आक्रोश” को महसूस करने के लिए द्विध्रुवीय चिकनी ऑसिलेटर का उपयोग करता है, और जब बाजार बहुत उत्साहित है (ओवरबॉय) या बहुत उदास (ओवरसेलिंग) है, तो यह एक व्यापार संकेत देता है।

कैसे काम करता है यह रहस्य

कल्पना कीजिए कि यह रणनीति एक सुपर-संवेदनशील “मार्केट बॉडी टेम्परेचर” की तरह है। सबसे पहले, यह गणना करता है कि कीमतें 25 चक्रों के औसत से कितनी दूर हैं, और फिर इसे मानकीकृत किया जाता है (जैसे कि विभिन्न ऊंचाई वाले लोगों को मानक ऊंचाई के अनुपात में बदलना) । इसके बाद, महत्वपूर्ण “डबल स्मूथिंग” प्रक्रिया है, जैसे कि तस्वीरों को दो बार लगातार रंगीन लेंस के साथ चमकाने के लिए, ताकि संकेत अधिक स्पष्ट और विश्वसनीय हो सके। जब ऑस्सिलेटर एक निर्धारित सीमा को पार करता है, तो रणनीति बंद हो जाती है!

इस रणनीति के लिए सुपर पावर

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

खतरे की चेतावनी

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

रणनीति स्रोत कोड
/*backtest
start: 2025-01-01 00:00:00
end: 2025-10-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":500000}]
*/

//@version=6
strategy("Two-Pole Threshold Entries + Opposite-Signal & Stop Exits + Stats",
     overlay=true,
     max_labels_count=500)

// === Inputs ===
length       = input.int(20,    minval=1,    title="Filter Length")
buyTrig      = input.float(-0.8,             title="Buy Threshold (osc ↑)")
sellTrig     = input.float( 0.8,             title="Sell Threshold (osc ↓)")
stopLossPts  = input.int(10,    minval=1,    title="Stop Loss (pts)")

// === Two-Pole Oscillator ===
sma25 = ta.sma(close, 25)
dev   = (close - sma25) - ta.sma(close - sma25, 25)
norm  = dev / ta.stdev(close - sma25, 25)
alpha = 2.0 / (length + 1)

var float s1 = na
var float s2 = na
s1 := na(s1) ? norm : (1 - alpha) * s1 + alpha * norm
s2 := na(s2) ? s1   : (1 - alpha) * s2 + alpha * s1

osc     = s2
prevOsc = osc[4]

// === Trigger Cross Signals ===
isLongSig  = ta.crossover(osc, buyTrig)  and barstate.isconfirmed
isShortSig = ta.crossunder(osc, sellTrig) and barstate.isconfirmed

// === State & Stats Vars ===
var int   tradeDir    = 0      //  1=long, -1=short, 0=flat
var float entryPrice = na
var int   entryBar   = na

var int   buyTotal    = 0
var int   buyFailed   = 0
var float sumMoveB    = 0.0
var int   cntMoveB    = 0
var float sumPLptsB   = 0.0

var int   sellTotal   = 0
var int   sellFailed  = 0
var float sumMoveS    = 0.0
var int   cntMoveS    = 0
var float sumPLptsS   = 0.0

// === Exit Marker Flags ===
var bool longStopHit  = false
var bool shortStopHit = false
var bool longSigExit  = false
var bool shortSigExit = false

longStopHit  := false
shortStopHit := false
longSigExit  := false
shortSigExit := false

// === 1) Opposite-Signal Exit ===
if tradeDir == 1 and isShortSig
    float ptsL = close - entryPrice
    sumMoveB  += ptsL
    sumPLptsB += ptsL
    cntMoveB  += 1
    strategy.close("Long")
    longSigExit := true
    tradeDir    := 0

if tradeDir == -1 and isLongSig
    float ptsS = entryPrice - close
    sumMoveS  += ptsS
    sumPLptsS += ptsS
    cntMoveS  += 1
    strategy.close("Short")
    shortSigExit := true
    tradeDir     := 0

// === 2) 5-Bar, Bar-Close 10-pt Stop Exit ===
inWindow       = (tradeDir != 0) and (bar_index <= entryBar + 5)
longStopPrice  = entryPrice - stopLossPts
shortStopPrice = entryPrice + stopLossPts

if tradeDir == 1 and inWindow and close <= longStopPrice
    buyFailed   += 1
    sumPLptsB   -= stopLossPts
    strategy.close("Long")
    longStopHit := true
    tradeDir    := 0

if tradeDir == -1 and inWindow and close >= shortStopPrice
    sellFailed   += 1
    sumPLptsS    -= stopLossPts
    strategy.close("Short")
    shortStopHit := true
    tradeDir     := 0

// === 3) New Entries (only when flat) ===
if tradeDir == 0 and isLongSig
    buyTotal   += 1
    entryPrice := close
    entryBar   := bar_index
    strategy.entry("Long", strategy.long)
    tradeDir   := 1

if tradeDir == 0 and isShortSig
    sellTotal  += 1
    entryPrice := close
    entryBar   := bar_index
    strategy.entry("Short", strategy.short)
    tradeDir   := -1

// === Stats Computation ===
float avgMoveB    = cntMoveB  > 0 ? sumMoveB  / cntMoveB  : na
float successPctB = buyTotal   > 0 ? (buyTotal - buyFailed) / buyTotal  * 100 : na
float pnlUSD_B    = sumPLptsB * 50.0

float avgMoveS    = cntMoveS  > 0 ? sumMoveS  / cntMoveS  : na
float successPctS = sellTotal  > 0 ? (sellTotal - sellFailed) / sellTotal * 100 : na
float pnlUSD_S    = sumPLptsS * 50.0

string tf = timeframe.period



// === On-Chart Markers ===
plotshape(isLongSig,  title="Long Entry",      style=shape.triangleup,   location=location.belowbar, color=color.green,  size=size.tiny)
plotshape(isShortSig, title="Short Entry",     style=shape.triangledown, location=location.abovebar, color=color.red,    size=size.tiny)
plotshape(longSigExit,  title="Exit on Sell Sig", style=shape.xcross, location=location.abovebar, color=color.orange, size=size.tiny)
plotshape(shortSigExit, title="Exit on Buy Sig",  style=shape.xcross, location=location.belowbar, color=color.orange, size=size.tiny)
plotshape(longStopHit,  title="Stop Exit Long",  style=shape.xcross, location=location.abovebar, color=color.purple, size=size.tiny)
plotshape(shortStopHit, title="Stop Exit Short", style=shape.xcross, location=location.belowbar, color=color.purple, size=size.tiny)