
প্রবণতা রিটার্নের সাথে ঝুঁকিপূর্ণ গতিশীল প্রবেশের কৌশলটি একটি স্বল্পমেয়াদী প্রবণতা পরিবর্তনের পরে পুনরুদ্ধারের আশা করে মাল্টি-হেড পজিশন স্থাপন করার জন্য ডিজাইন করা হয়েছে, যখন বাজারের শর্তগুলি নিম্নমুখী গতির পক্ষে অনুকূল হয় তখন অবিলম্বে শূন্যে প্রবেশ করে। এই কৌশলটি এসএমএ ক্রস-নিশ্চিত প্রবণতা, স্থির শতাংশ রিটার্নের প্রবেশের পয়েন্ট এবং একটি নিয়মিত ঝুঁকি ব্যবস্থাপনা প্যারামিটারগুলির সাথে মিলিত হয়, যা সর্বোত্তম বাণিজ্য সম্পাদন করে।
কৌশলটির মূল অংশটি ছিল ট্রেন্ডের দিকনির্দেশ নিশ্চিত করার জন্য 10 এবং 25 চক্রের সহজ চলমান গড় (এসএমএ) ক্রস ব্যবহার করা এবং 150 চক্রের ইন্ডেক্সের চলমান গড় (ইএমএ) এর সাথে যুক্ত একটি অতিরিক্ত ফিল্টারিং শর্ত হিসাবে খালি হাতে লেনদেনের জন্য। মাল্টিহেড ট্রেডগুলি এসএমএ ক্রস করার পরে অবিলম্বে প্রবেশ করে না, তবে দামটি নির্দিষ্ট শতাংশে ফিরে আসার পরে প্রবেশের জন্য অপেক্ষা করে, এই পদ্ধতিটি প্রবেশের মূল্যকে অনুকূল করে তোলে এবং ঝুঁকি-ফিট-রেট অনুপাতকে বাড়িয়ে তোলে।
এই কৌশলটি মূলত নিম্নোক্ত কয়েকটি অংশে কাজ করেঃ
প্রবণতা সনাক্তকরণ:
মাল্টি-হেড রিডমেনশন প্রক্রিয়া:
খালি মাথায় প্রবেশের নিয়ম:
ঝুঁকি ব্যবস্থাপনা এবং প্রস্থান কৌশল:
কৌশলটি স্থায়ী পরিবর্তনশীল ব্যবহার করে রিডিং সিগন্যালগুলি ট্র্যাক করে যাতে সঠিক সময়ে প্রবেশ করা যায়। যখন কোনও অবস্থান নেই, সিস্টেমটি পরবর্তী ট্রেডিং সিগন্যালের জন্য প্রস্তুত হওয়ার জন্য সমস্ত চিহ্ন এবং স্তর পুনরায় সেট করে।
কোডটি গভীরভাবে বিশ্লেষণ করার পরে, এই কৌশলটি নিম্নলিখিত উল্লেখযোগ্য সুবিধাগুলি দেখায়ঃ
অনুকূলিত প্রবেশাধিকার:
সামগ্রিক ঝুঁকি ব্যবস্থাপনা:
প্রবণতা সমন্বয় ফিল্টার:
ভিজ্যুয়াল ফিডব্যাক:
অভিযোজনযোগ্য:
যদিও এই কৌশলটির অনেক সুবিধা রয়েছে, তবুও এর কিছু ঝুঁকি রয়েছেঃ
দ্রুত বাজার ঝুঁকি:
বাজারের অস্থিরতা:
ফিক্সড পয়েন্ট ঝুঁকি ব্যবস্থাপনার সীমাবদ্ধতা:
প্রযুক্তিগত সূচকগুলির উপর অত্যধিক নির্ভরশীলতা:
প্যারামিটার অপ্টিমাইজেশান ঝুঁকি:
কোড বিশ্লেষণের উপর ভিত্তি করে, এই কৌশলটির কয়েকটি মূল দিক যা অনুকূলিতকরণ করা যেতে পারেঃ
গতিশীল ঝুঁকি ব্যবস্থাপনা:
stopDistance = input.float(2.0) * ta.atr(14)কিভাবে গণনা করা হয়প্রবণতা শক্তি ফিল্টার করুন:
মাল্টি টাইম ফ্রেম বিশ্লেষণ:
স্মার্ট রিটার্ন সনাক্তকরণ:
লেনদেনের পরিমাণ:
স্বনির্ধারিত প্যারামিটার:
প্রবণতা পুনর্বিবেচনার জন্য ঝুঁকি সামঞ্জস্য করে গতিশীল প্রবেশের কৌশলটি একটি সুনির্দিষ্টভাবে ডিজাইন করা ট্রেডিং সিস্টেম যা প্রবণতা সনাক্তকরণ, প্রবেশের অপ্টিমাইজেশন এবং সামগ্রিক ঝুঁকি ব্যবস্থাপনার সাথে মিলিত হয়। দামের পুনর্বিবেচনার জন্য অপেক্ষা করে, কৌশলটি সহজ এসএমএ ক্রস সিস্টেমের চেয়ে ভাল প্রবেশের মূল্য এবং ঝুঁকি রিটার্নের অনুপাত অর্জন করে।
এই কৌশলটির মূল সুবিধা হল এটির নমনীয়তা এবং সামঞ্জস্যতা, যা ব্যবসায়ীদের ব্যক্তিগত ঝুঁকি পছন্দ এবং বাজারের অবস্থার উপর ভিত্তি করে প্যারামিটারগুলিকে সামঞ্জস্য করতে দেয়। একই সাথে, সমন্বিত ঝুঁকি ব্যবস্থাপনা বৈশিষ্ট্যগুলি (স্টপ লস, স্টপ স্টপ এবং পয়েন্ট পয়েন্ট সহ) সম্পূর্ণ তহবিল সুরক্ষা প্রদান করে।
যাইহোক, এই কৌশলটির কিছু সীমাবদ্ধতাও রয়েছে, যার মধ্যে রয়েছে অস্থির বাজারে পারফরম্যান্স এবং ফিক্সড পয়েন্ট ঝুঁকি ব্যবস্থাপনার সীমাবদ্ধতা। গতিশীল ঝুঁকি ব্যবস্থাপনা, প্রবণতা শক্তি ফিল্টারিং এবং লেনদেনের পরিমাণ নিশ্চিতকরণের মতো সুপারিশগুলি বাস্তবায়নের মাধ্যমে কৌশলটির স্থিতিশীলতা এবং সামগ্রিক পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত করা যেতে পারে।
এটি একটি আদর্শ মৌলিক কৌশল যা একজন দোল ব্যবসায়ীর জন্য আদর্শ এবং ব্যক্তিগত ট্রেডিং শৈলী এবং লক্ষ্যের উপর ভিত্তি করে আরও কাস্টমাইজ করা যায়। যুক্তিসঙ্গত প্যারামিটার সেট এবং ক্রমাগত পর্যবেক্ষণের মাধ্যমে, এই কৌশলটি বিভিন্ন বাজারের পরিবেশে স্থিতিশীল ট্রেডিং ফলাফল সরবরাহ করার সম্ভাবনা রয়েছে।
/*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