
মাল্টি-লেভেল টার্গেট এবং স্টপ-অফ স্ট্র্যাটেজি হ’ল একটি ট্রেন্ড ট্র্যাকিং সিস্টেম যা হেইন-আন্সি চার্ট মডেলের উপর ভিত্তি করে তৈরি করা হয়েছে যা বাজারের গতিশীলতা ক্যাপচার এবং মুনাফা সুরক্ষিত করার জন্য। এই কৌশলটি প্রাথমিক প্রবেশ এবং দ্বিতীয় প্রবেশের অনুমতি দেয় (পিরামিডাল ইনপুট), প্রতিটি প্রবেশের জন্য একটি স্বতন্ত্র মুনাফা লক্ষ্য এবং স্টপ-অফ সেটিং রয়েছে। এটি লাভের সম্ভাবনা প্রসারিত করতে গতিশীল টার্গেট অঞ্চল ব্যবহার করে এবং একটি নমনীয় স্টপ-অফ সিস্টেম বাস্তবায়ন করে, যখন দাম অনুকূল দিকের দিকে চলে যায় তখন মুনাফা লক করে।
এই কৌশলটি কয়েকটি মূল নীতির উপর ভিত্তি করে কাজ করেঃ
হাইনানসি ম্যাপ সিগন্যাল: হাইন অ্যান্সি চার্ট ব্যবহার করে বাজারের গোলমাল ফিল্টার করুন এবং প্রবণতা সনাক্ত করুন। মাল্টি হেড সিগন্যালটি যখন বর্তমান এইচএ বন্ধের দাম এইচএ খোলার দামের চেয়ে বেশি এবং পূর্ববর্তী এইচএ বন্ধের দামের চেয়ে বেশি হয় তখন ট্রিগার করা হয়; খালি হেড সিগন্যালটি বিপরীত।
দ্বৈত ভর্তি ব্যবস্থা:
ভারসাম্য রক্ষা করা: প্রথম লক্ষ্যমাত্রা পূরণ হলে, কৌশলটি স্বয়ংক্রিয়ভাবে স্টপ লস লেভেলকে প্রবেশের মূল্যে স্থানান্তরিত করে (লস ইক্যুইলেন্স পয়েন্ট) যাতে ট্রেডিং ক্ষতিগ্রস্ত না হয়
টার্গেট অঞ্চল ধারণা: যখন দাম টার্গেট লেভেলের কাছাকাছি আসে (একটি পূর্বনির্ধারিত হ্রাসের মধ্যে), কৌশলটি “টার্গেট অঞ্চল” চালু করে, আরও সম্ভাব্য মুনাফা ধরার জন্য টার্গেট লেভেল বাড়ায়
স্টপ লস মেকানিজম:
স্ট্যাটাস ট্র্যাককৌশলঃ ট্রেডিংয়ের দিকনির্দেশনা, মূল্যের চূড়ান্ত মান, প্রথম লক্ষ্যে পৌঁছানো এবং বর্তমানে লক্ষ্য অঞ্চলে থাকা ইত্যাদির জন্য একাধিক ভেরিয়েবল বজায় রাখা
সামগ্রিক ঝুঁকি ব্যবস্থাপনাএই কৌশলটি একাধিক স্তরের ঝুঁকি ব্যবস্থাপনা প্রদান করে, যার ফলে মূলধনকে ব্যাপক হ্রাসের প্রভাব থেকে রক্ষা করা যায়।
পিরামিডের মতো পজিশনের সুযোগ: দ্বিতীয়বার প্রবেশের অনুমতি দিয়ে, কৌশলটি একটি নিশ্চিত প্রবণতার মধ্যে অবস্থান বাড়িয়ে লাভের সম্ভাবনা বাড়িয়ে তুলতে সক্ষম হয়, এবং সামগ্রিক ঝুঁকি বাড়ায় না, কারণ প্রথমবারের মতো লেনদেনটি লাভ-ক্ষতির ভারসাম্য পয়েন্টে লক করা হয়েছে।
ডায়নামিক মুনাফা ধরা: টার্গেট অঞ্চল এবং টার্গেট বৃদ্ধি বৈশিষ্ট্যগুলি কৌশলগুলিকে শক্তিশালী বাজারে স্বয়ংক্রিয়ভাবে লাভের লক্ষ্যমাত্রা প্রসারিত করতে সক্ষম করে, বরং একটি শক্তিশালী প্রবণতা থেকে অকাল প্রস্থান করে।
উচ্চতা কাস্টমাইজযোগ্য: কৌশলটি একটি বিস্তৃত প্যারামিটার সেট প্রদান করে, যা ব্যবসায়ীদের বাজার অবস্থার, ট্রেডিং জাতের বৈশিষ্ট্য এবং ব্যক্তিগত ঝুঁকি পছন্দ অনুসারে সামঞ্জস্য করতে দেয়।
স্বয়ংক্রিয়ভাবে সম্পাদন: একবার প্যারামিটার সেট করা হয়ে গেলে, কৌশলটি সমস্ত প্রবেশ, প্রস্থান এবং স্টপ লস অ্যাডজাস্টমেন্ট সম্পাদন করে, যা আবেগের ব্যবসায়ের প্রভাবকে সরিয়ে দেয়।
ভিজ্যুয়াল ফিডব্যাক: কৌশলটিতে একটি স্পষ্ট দৃশ্যমান উপাদান রয়েছে যা ট্রেডারদের সহজেই ট্রেডিংয়ের অগ্রগতি পর্যবেক্ষণ করার জন্য লক্ষ্য স্তর, স্টপ লস স্তর এবং বর্তমান অবস্থা নির্দেশক প্রদর্শন করে।
পরামিতি সংবেদনশীলতাকৌশলগত কার্যকারিতা প্যারামিটার সেটিংয়ের উপর অত্যন্ত নির্ভরশীল। ভুল লক্ষ্য বা স্টপ লস প্যারামিটারগুলি একটি ভাল ব্যবসায়ের প্রারম্ভিক প্রস্থান বা অত্যধিক পতনের ঝুঁকি বহন করতে পারে। এই ঝুঁকিটি historicalতিহাসিক ব্যাকআপ এবং বাজার-নির্দিষ্ট প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে হ্রাস করা যেতে পারে।
স্লিপেজ ঝুঁকি: বিশেষত, ক্রমাগত স্টপ-অফ কার্যকরকরণের সময়, বাজারের ফাঁক বা অপর্যাপ্ত তরলতা প্রকৃত কার্যকরকরণের দামকে আদর্শ ক্রমাগত স্টপ-অফ স্তরের থেকে পৃথক করতে পারে। স্কিপয়েন্ট বাফারিং বাড়ানোর বিষয়টি বিবেচনা করা বা আরও রক্ষণশীল ক্রমাগত প্যারামিটার ব্যবহার করা এই ঝুঁকিটি হ্রাস করতে পারে।
পুনরায় ওভারট্রেডিংদ্বিতীয়বার প্রবেশের অনুমতি দেওয়া অস্থির বাজারে অতিরিক্ত লেনদেনের কারণ হতে পারে। অতিরিক্ত পরিস্রাবণ বা দ্বিতীয়বার প্রবেশের সময়সীমা প্রয়োগের ফলে এই ধরনের ঘটনা কমতে পারে।
মার্কেট স্যুইচ ঝুঁকি: যদিও কৌশলটি ট্রেন্ডিং মার্কেটে ভাল কাজ করে, তবে ব্যাপ্তিযুক্ত বাজারে বা হঠাৎ পাল্টে যাওয়া বাজারে এটি খারাপ কাজ করতে পারে। কৌশলটি বাজার অবস্থার ফিল্টারের সাথে একত্রিত করার ফলে সামগ্রিক কার্যকারিতা বাড়তে পারে।
কম্পিউটার ঘনত্ব: একাধিক ভেরিয়েবল এবং স্ট্যাটাস ট্র্যাক করার কৌশল যা কিছু প্ল্যাটফর্মে কার্য সম্পাদনের বিলম্ব হতে পারে। কোড অপ্টিমাইজ করা এবং কিছু গণনা সহজ করা পারফরম্যান্স বাড়িয়ে তুলতে পারে।
প্রবণতা ফিল্টার যোগ করুন: ইন্টিগ্রেটেড ট্রেন্ডিং ইন্ডিকেটর (যেমন মুভিং এভারেজ, এডিএক্স বা ট্রেন্ডিং স্ট্যান্ডার্ড ইন্ডিকেটর) প্রবেশের মান উন্নত করতে পারে, কেবলমাত্র নিশ্চিত হওয়া ট্রেন্ডের দিক দিয়ে ট্রেড করা। এটি বাজারের ঝড়ের সময় ভুল সংকেত হ্রাস করবে।
টাইম ফিল্টার কন্ডিশন: একটি সময় উইন্ডো বা শীতল সময় যোগ করুন, যাতে খুব কম সময়ের মধ্যে খুব বেশি ট্রেডিং বা একই ট্রেন্ডের প্রায়শই প্রবেশ করা যায় না।
অস্থিরতা সমন্বয়: বাজারের অস্থিরতার উপর ভিত্তি করে লক্ষ্য এবং স্টপ লস প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করে (যেমন এটিআর), কৌশলগুলিকে বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নিতে সক্ষম করে। এটি স্টপ লস এবং টার্গেট স্তরকে বর্তমান বাজারের বৈশিষ্ট্যগুলির সাথে আরও মিলিয়ে তুলবে।
হেইনে-আন্সি লজিকের উন্নতি: বর্তমান এইচএ বিচারগুলি তুলনামূলকভাবে সহজ, ডজনগুলি এইচএ ফ্রেম গ্রাফিক্স বা এইচএ গতিশীলতার সূচকগুলি বিবেচনা করে সংকেতের গুণমান বাড়ানো যেতে পারে।
আংশিক মুনাফা লকিং যোগ করুন: একটি স্তরবিন্যস্ত মুনাফা লকিং ফাংশন বাস্তবায়ন, যা একটি নির্দিষ্ট মুনাফা স্তর পৌঁছানোর সময় পজিশনের একটি অংশকে বন্ধ করার অনুমতি দেয় এবং অবশিষ্ট অংশটি চলতে দেয়, মুনাফা সুরক্ষা এবং সম্ভাব্য উপার্জন সর্বাধিকীকরণের মধ্যে ভারসাম্য বজায় রাখে।
টার্গেট অঞ্চল লজিক অপ্টিমাইজ করুন: বর্তমান টার্গেট অঞ্চল ব্যবহার করে স্থির বর্ধিত পদক্ষেপে। বাজারের অস্থিরতা বা সাম্প্রতিক মূল্যের গতির উপর ভিত্তি করে গতিশীল লক্ষ্য সমন্বয় অ্যালগরিদম বিবেচনা করা যেতে পারে, যা বাজারের অবস্থার পরিবর্তনের সাথে আরও ভালভাবে খাপ খায়।
মাল্টি-লেভেল টার্গেট এবং স্টপ লস স্ট্র্যাটেজি হ’ল একটি বিস্তৃত ট্রেডিং সিস্টেম যা হাইনানসি ট্রেন্ড সনাক্তকরণ, গতিশীল টার্গেট ম্যানেজমেন্ট, দ্বিতীয় প্রবেশের সুযোগ এবং একাধিক স্তরের ঝুঁকি নিয়ন্ত্রণের সাথে মিলিত। এই কৌশলটির প্রধান সুবিধা হ’ল এর নমনীয় মুনাফা প্রসারিত প্রক্রিয়া এবং কঠোর ঝুঁকি ব্যবস্থাপনার কাঠামো যা এটিকে ট্রেন্ডিং বাজারে উল্লেখযোগ্য চলাচল ধরতে উপযুক্ত করে তোলে।
যদিও এই কৌশলটি একটি শক্তিশালী কাঠামো সরবরাহ করে, তবে এর কার্যকারিতা এখনও উপযুক্ত প্যারামিটার সমন্বয় এবং বাজারের অবস্থার উপর নির্ভর করে। বাজারের অবস্থা ফিল্টার, অস্থিরতা সমন্বয় প্রক্রিয়া এবং আরও জটিল প্রবেশের নিশ্চিতকরণ লজিক যুক্ত করে এই কৌশলটি আরও দৃ rob়তা এবং অভিযোজনযোগ্যতা বাড়িয়ে তুলতে পারে। শেষ পর্যন্ত, এই কৌশলটি ট্রেডিং মূলধনকে সুরক্ষিত করার জন্য একটি ভারসাম্য স্তম্ভের প্রতিনিধিত্ব করে যখন প্রবণতাকে সর্বাধিকতর করার চেষ্টা করা হয়।
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Algo Trading v1 | SUNNY GUHA By OIESU", overlay=true, margin_long=100, margin_short=100, pyramiding=100)
// ———— USER INPUTS ———— //
// First Entry Settings
float initialTarget = input.float(10000, "First Entry: Target ($)", minval=1, tooltip="First target level")
float initialStopLoss = input.float(3000, "First Entry: Stop Loss ($)", minval=1, tooltip="Initial stop loss distance")
bool useTrailFirst = input.bool(true, "First Entry: Enable Trail", tooltip="Enable trailing features after first target hit")
float profitTrailStepFirst = input.float(1500, "First Entry: Trail Amount ($)", minval=1, tooltip="Trail amount after first target hit")
bool useTargetZoneFirst = input.bool(true, "First Entry: Enable Target Zone", tooltip="Enable target zone feature")
float targetZoneThresholdFirst = input.float(1000, "First Entry: Target Zone Threshold ($)", minval=1, tooltip="Distance to activate target zone")
float targetIncreaseStepFirst = input.float(2000, "First Entry: Target Increase ($)", minval=1, tooltip="Amount to increase target")
// Second Entry Settings
bool enableSecondEntries = input.bool(true, "Enable Second Entries", tooltip="Allow re-entries after first target hit")
float secondTarget = input.float(5000, "Second Entry: Target ($)", minval=1, tooltip="Target for second entries")
float secondStopLoss = input.float(2000, "Second Entry: Stop Loss ($)", minval=1, tooltip="Stop loss for second entries")
bool useTrailSecond = input.bool(true, "Second Entry: Enable Trail", tooltip="Enable trailing for second entries")
float profitTrailStepSecond = input.float(1500, "Second Entry: Trail Amount ($)", minval=1, tooltip="Trail amount for second entries")
bool useTargetZoneSecond = input.bool(true, "Second Entry: Enable Target Zone", tooltip="Enable target zone")
float targetZoneThresholdSecond = input.float(1000, "Second Entry: Target Zone Threshold ($)", minval=1)
float targetIncreaseStepSecond = input.float(2000, "Second Entry: Target Increase ($)", minval=1)
// ———— HEIKIN-ASHI CALCULATIONS ———— //
var float haOpen = na
var float haClose = na
var float haHigh = na
var float haLow = na
haClose := (open + high + low + close)/4
haOpen := na(haOpen[1]) ? (open + close)/2 : (haOpen[1] + haClose[1])/2
haHigh := math.max(high, math.max(haOpen, haClose))
haLow := math.min(low, math.min(haOpen, haClose))
// ———— TRACKING VARIABLES ———— //
var float highestPrice = na // Tracks highest price for long positions
var float lowestPrice = na // Tracks lowest price for short positions
var float basePrice = na // Entry price for position
var float targetLevel = na // Current target level
var float stopLevel = na // Current stop level
var bool firstTargetHit = false // Indicates if first target was hit
var string tradeDirection = "none" // Current trade direction
var bool isSecondEntry = false // Tracks if current position is a second entry
var bool inTargetZone = false // Tracks if price is in target zone
// ———— SIGNAL DETECTION ———— //
bullish = haClose > haOpen and haClose > haClose[1]
bearish = haClose < haOpen and haClose < haClose[1]
// Entry conditions - only allow second entries if enabled and after first target hit
longCondition = bullish and (tradeDirection != "long" or (enableSecondEntries and firstTargetHit))
shortCondition = bearish and (tradeDirection != "short" or (enableSecondEntries and firstTargetHit))
// Position Management - Long Positions
if strategy.position_size > 0
highestPrice := math.max(high, nz(highestPrice, high))
if isSecondEntry
// Second Entry Management
inTargetZone := useTargetZoneSecond and high >= targetLevel - targetZoneThresholdSecond
if inTargetZone and useTargetZoneSecond
targetLevel := targetLevel + targetIncreaseStepSecond
if useTrailSecond
stopLevel := math.max(stopLevel, highestPrice - profitTrailStepSecond)
if low <= stopLevel
strategy.close_all("Second Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
else
// First Entry Management - improved profit locking
if not firstTargetHit and high >= basePrice + initialTarget
// First target hit - ALWAYS lock profit at break-even
firstTargetHit := true
stopLevel := basePrice // Move stop to break-even
targetLevel := useTrailFirst ? high + targetIncreaseStepFirst : basePrice + initialTarget
else if firstTargetHit
// Only modify target if trailing is enabled
if useTrailFirst
inTargetZone := useTargetZoneFirst and high >= targetLevel - targetZoneThresholdFirst
if inTargetZone and useTargetZoneFirst
targetLevel := targetLevel + targetIncreaseStepFirst
// Trail stop-loss but never below break-even
stopLevel := math.max(basePrice, highestPrice - profitTrailStepFirst)
else
// Before first target hit
targetLevel := basePrice + initialTarget
stopLevel := basePrice - initialStopLoss
// Exit on stop hit - this could only be at break-even or better after first target
if low <= stopLevel
strategy.close_all("First Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
// Position Management - Short Positions
if strategy.position_size < 0
lowestPrice := math.min(low, nz(lowestPrice, low))
if isSecondEntry
// Second Entry Management
inTargetZone := useTargetZoneSecond and low <= targetLevel + targetZoneThresholdSecond
if inTargetZone and useTargetZoneSecond
targetLevel := targetLevel - targetIncreaseStepSecond
if useTrailSecond
stopLevel := math.min(stopLevel, lowestPrice + profitTrailStepSecond)
if high >= stopLevel
strategy.close_all("Second Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
else
// First Entry Management - improved profit locking
if not firstTargetHit and low <= basePrice - initialTarget
// First target hit - ALWAYS lock profit at break-even
firstTargetHit := true
stopLevel := basePrice // Move stop to break-even
targetLevel := useTrailFirst ? low - targetIncreaseStepFirst : basePrice - initialTarget
else if firstTargetHit
// Only modify target if trailing is enabled
if useTrailFirst
inTargetZone := useTargetZoneFirst and low <= targetLevel + targetZoneThresholdFirst
if inTargetZone and useTargetZoneFirst
targetLevel := targetLevel - targetIncreaseStepFirst
// Trail stop-loss but never above break-even
stopLevel := math.min(basePrice, lowestPrice + profitTrailStepFirst)
else
// Before first target hit
targetLevel := basePrice - initialTarget
stopLevel := basePrice + initialStopLoss
// Exit on stop hit - this could only be at break-even or better after first target
if high >= stopLevel
strategy.close_all("First Entry Stop")
basePrice := na
targetLevel := na
stopLevel := na
highestPrice := na
lowestPrice := na
firstTargetHit := false
isSecondEntry := false
inTargetZone := false
tradeDirection := "none"
// New Position Entry
if strategy.position_size == 0
if longCondition
tradeDirection := "long"
basePrice := close
targetLevel := basePrice + (firstTargetHit ? secondTarget : initialTarget)
stopLevel := basePrice - (firstTargetHit ? secondStopLoss : initialStopLoss)
highestPrice := high
isSecondEntry := firstTargetHit
strategy.entry("Long", strategy.long)
else if shortCondition
tradeDirection := "short"
basePrice := close
targetLevel := basePrice - (firstTargetHit ? secondTarget : initialTarget)
stopLevel := basePrice + (firstTargetHit ? secondStopLoss : initialStopLoss)
lowestPrice := low
isSecondEntry := firstTargetHit
strategy.entry("Short", strategy.short)
// ———— VISUALIZATION ———— //
// Entry signals
plotshape(longCondition and (strategy.position_size == 0), title="Buy", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition and (strategy.position_size == 0), title="Sell", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Target and stop levels with clearer colors
plot(targetLevel, title="Target Level", color=color.orange, linewidth=2)
plot(stopLevel, title="Stop Level", color=color.red, linewidth=2)
// Break-even level - shown prominently after first target hit
plot(strategy.position_size != 0 and firstTargetHit ? basePrice : na, title="Break-Even Level", color=color.green, linewidth=2, style=plot.style_linebr)
// Debug plots for state tracking
plotchar(firstTargetHit, title="First Target Hit", char="T", location=location.top, color=color.yellow, size=size.tiny)
plotchar(isSecondEntry, title="Second Entry", char="2", location=location.top, color=color.white, size=size.tiny)
plotchar(useTrailFirst and firstTargetHit, title="Trail Active", char="→", location=location.top, color=color.blue, size=size.tiny)
plotchar(inTargetZone, title="Target Zone", char="Z", location=location.top, color=color.fuchsia, size=size.tiny)