
এই কৌশলটি মূল্যের গতিশীলতা এবং লেনদেনের পরিমাণের উপর ভিত্তি করে একটি ট্রেডিং সিস্টেম যা শক্তিশালী উত্থানের পরে ক্ষুদ্র পুনরুদ্ধারের সুযোগগুলি সনাক্ত করার উপর দৃষ্টি নিবদ্ধ করে। কৌশলটি একটি বড় উত্থানের পরে একটি স্বল্পমেয়াদী পুনরুদ্ধারের পরে একটি সবুজ রিং লাইন পর্যবেক্ষণ করে, যখন দামের বিপরীত সংকেত উপস্থিত হয় তখন ট্রেডিং শুরু করে। ব্যবসায়ের সঠিকতা বাড়ানোর জন্য সিস্টেমটি লেনদেনের পরিমাণ, এটিআর ওঠানামা এবং পুনরুদ্ধারের পরিমাণের সীমাবদ্ধতা সহ একাধিক ফিল্টারিং শর্তাবলী ব্যবহার করে।
কৌশলটির মূল যুক্তি বাজার গতিশীলতার ধারাবাহিকতা নীতির উপর ভিত্তি করে তৈরি করা হয়েছে, যা নিম্নলিখিত মূল উপাদানগুলি নিয়ে গঠিতঃ
এটি একটি যুক্তিসঙ্গতভাবে ডিজাইন করা ট্রেন্ড ট্র্যাকিং কৌশল যা কঠোর শর্তাদি নির্বাচন এবং ঝুঁকি পরিচালনার মাধ্যমে বাজারে উচ্চমানের ব্যবসায়ের সুযোগগুলি ক্যাপচার করতে সক্ষম। কৌশলটির সাফল্যের মূল চাবিকাঠি হল প্যারামিটারগুলির অপ্টিমাইজেশন এবং বাজারের পরিবেশের সাথে অভিযোজনযোগ্যতা সামঞ্জস্য করা। এটি রিয়েল-টাইম ট্রেডিংয়ের আগে পর্যাপ্ত ব্যাক-টেস্টিং যাচাইয়ের পরামর্শ দেওয়া হয় এবং নির্দিষ্ট ট্রেডিং জাতের বৈশিষ্ট্য অনুসারে প্যারামিটারগুলি সামঞ্জস্য করা হয়।
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/
//@version=6
strategy(title="Micropullback Detector w/ Stop Buy & Exits", shorttitle="MicroPB Det+Exits", overlay=true)
// USER INPUTS
volLookback = input.int(20, "Volume SMA Period", minval=1)
volMultiplier = input.float(1.5, "Volume Multiplier for High Volume", minval=1.0)
largeCandleATR = input.float(0.5, "Fraction of ATR to define 'Large Candle'", minval=0.1)
maxRedPullback = input.int(3, "Max Consecutive Red Candles in Pullback")
maxRetracementPc = input.float(50, "Max Retracement % for pullback", minval=1.0, maxval=100.0)
// CALCULATIONS
fastAtr = ta.atr(14)
avgVolume = ta.sma(volume, volLookback)
isLargeGreenCandle = (close > open) and ((close - open) > fastAtr * largeCandleATR) and (volume > avgVolume * volMultiplier) and (volume > 200000)
// HELPER FLAGS
isGreen = close >= open
isRed = close < open
// STATE VARIABLES
var int state = 0
var float waveStartPrice = na
var float waveHighestPrice = na
var float largestGreenVol = na
var int consecutiveRedPulls = 0
var bool triggerSignal = false
var float wavePullbackLow = na
if barstate.isnew
triggerSignal:=false
if state==0
wavePullbackLow:=na
if isLargeGreenCandle
state:=1
waveStartPrice:=open
waveHighestPrice:=high
largestGreenVol:=volume
consecutiveRedPulls:=0
else if state==1
if isGreen
waveHighestPrice:=math.max(waveHighestPrice,high)
if volume>largestGreenVol
largestGreenVol:=volume
else
state:=2
consecutiveRedPulls:=1
wavePullbackLow:=low
else if state==2
if isRed
if volume>largestGreenVol
state:=0
consecutiveRedPulls+=1
if consecutiveRedPulls>=maxRedPullback+1
state:=0
retracementLevel=waveStartPrice+(maxRetracementPc/100.0)*(waveHighestPrice-waveStartPrice)
wavePullbackLow:=math.min(wavePullbackLow,low)
if close<retracementLevel
state:=0
else
consecutiveRedPulls:=0
if high>high[1]
triggerSignal:=true
state:=3
else if state==3
state:=0
// Plot shapes for signals (last 1440 bars ~ 1 day at 1-min TF)
plotshape(isLargeGreenCandle, title="Large Green Candle", style=shape.diamond, location=location.belowbar, color=color.new(color.blue, 0), offset=0, size=size.small, show_last=1440)
plotshape(triggerSignal, title="MicroPB Entry", style=shape.arrowdown, location=location.abovebar, color=color.new(color.green, 0), offset=0, size=size.large, show_last=1440)
// ENTRY & EXITS
if triggerSignal
// Stop Buy above the previous bar's high
entryPrice = high[1]
strategy.order("MicroPullback Long", strategy.long, limit=entryPrice, oca_name="MicroPullback")
// Stoploss slightly below pullback low
stopPrice = wavePullbackLow - 2*syminfo.mintick
// Risk & take-profit calculations
risk = entryPrice - stopPrice
tpPrice = entryPrice + 2 * risk
// Exit: stop or TP
strategy.exit("SL+TP", "MicroPullback Long", stop=stopPrice, limit=tpPrice, qty_percent=100)
// ALERT
alertcondition(triggerSignal, title="MicroPullback LONG", message="Micropullback Long Signal Detected!")