
এটি একটি পরিমাণগত ট্রেডিং কৌশল যা প্রতিরোধের ব্রেকিং এবং রিটার্নিংয়ের উপর ভিত্তি করে। কৌশলটি মূল মূল্য সমর্থন এবং প্রতিরোধের চিহ্নিত করে এবং মূল্য ব্রেকিংয়ের পরে রিটার্নিং নিশ্চিতকরণ পয়েন্টগুলিতে লেনদেন করে। এই কৌশলটি বাম এবং বাম দিকে ফিরে বার ডায়নামিক পজিশনিংয়ের মূল পয়েন্টগুলি গ্রহণ করে এবং রিটার্নিং ক্ষমতার ব্যবধানের সাথে জাল ব্রেকিংয়ের মাধ্যমে লেনদেনের নির্ভুলতা এবং স্থায়িত্বকে উন্নত করে।
এই কৌশলটি মূলত নিম্নলিখিত মূল লজিক নিয়ে গঠিতঃ
এই কৌশলটি ক্লাসিক সমর্থন-প্রতিরোধ তত্ত্ব এবং বিরতি-ব্যাক-এন্ড লজিকের উপর ভিত্তি করে তৈরি করা হয়েছে, যার একটি ভাল তাত্ত্বিক ভিত্তি রয়েছে। প্যারামিটার অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণের মাধ্যমে স্থিতিশীল ট্রেডিংয়ের ফলাফল পাওয়া যায়। কৌশল কোডের কাঠামোটি পরিষ্কার, সহজেই বোঝা যায় এবং প্রসারিত করা যায়, এর ব্যবহারিক মূল্য রয়েছে। বাজারের পরিস্থিতি এবং ব্যক্তিগত ঝুঁকি পছন্দকে একত্রিত করে রিয়েল-টাইম ট্রেডিংয়ে উপযুক্ত প্যারামিটার সমন্বয় করার পরামর্শ দেওয়া হয়েছে।
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("SR Breakout & Retest Strategy (4hr)", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// ===== USER INPUTS =====
leftBars = input.int(3, "Left Pivot Bars", minval=1)
rightBars = input.int(3, "Right Pivot Bars", minval=1)
tolerance = input.float(0.005, "Retest Tolerance (Fraction)", step=0.001)
// ===== PIVOT CALCULATION =====
pLow = ta.pivotlow(low, leftBars, rightBars)
pHigh = ta.pivothigh(high, leftBars, rightBars)
// ===== STATE VARIABLES FOR CANDIDATE LEVELS =====
var float candidateSupport = na
var bool supportBroken = false
var bool supportRetested = false
var float candidateResistance = na
var bool resistanceBroken = false
var bool resistanceRetested = false
// ===== UPDATE CANDIDATE LEVELS =====
if not na(pLow)
candidateSupport := pLow
supportBroken := false
supportRetested := false
if not na(pHigh)
candidateResistance := pHigh
resistanceBroken := false
resistanceRetested := false
// ===== CHECK FOR BREAKOUT & RETEST =====
// -- Support: Price breaks below candidate support and then retests it --
if not na(candidateSupport)
if not supportBroken and low < candidateSupport
supportBroken := true
if supportBroken and not supportRetested and close >= candidateSupport and math.abs(low - candidateSupport) <= candidateSupport * tolerance
supportRetested := true
label.new(bar_index, candidateSupport, "Support Retest",
style=label.style_label_up, color=color.green, textcolor=color.white, size=size.tiny)
// Example trading logic: Enter a long position on support retest
strategy.entry("Long_Support", strategy.long)
// -- Resistance: Price breaks above candidate resistance and then retests it --
if not na(candidateResistance)
if not resistanceBroken and high > candidateResistance
resistanceBroken := true
if resistanceBroken and not resistanceRetested and close <= candidateResistance and math.abs(high - candidateResistance) <= candidateResistance * tolerance
resistanceRetested := true
label.new(bar_index, candidateResistance, "Resistance Retest",
style=label.style_label_down, color=color.red, textcolor=color.white, size=size.tiny)
// Example trading logic: Enter a short position on resistance retest
strategy.entry("Short_Resistance", strategy.short)
// ===== PLOTTING =====
plot(pLow, title="Pivot Low (Support)", style=plot.style_circles, color=color.green, linewidth=2)
plot(pHigh, title="Pivot High (Resistance)", style=plot.style_circles, color=color.red, linewidth=2)