
ইন্ডেক্স মুভিং এভারেজ ক্রস স্মার্ট স্পাইক-চেইন স্টপ ট্র্যাকিং সিস্টেম একটি পরিমাণগত ট্রেডিং কৌশল যা প্রযুক্তিগত বিশ্লেষণ এবং সূক্ষ্ম তহবিল পরিচালনার উপর ভিত্তি করে। এই কৌশলটি ইন্ডেক্স মুভিং এভারেজ ((EMA) ক্রস সংকেত ব্যবহার করে সম্ভাব্য উত্থান প্রবণতা সনাক্ত করতে, ডলার ব্যয় গড়ের সাথে মিলিত হয় ((ডিসিএ) বুদ্ধিমান পজিশনিং করতে এবং ডাবল ট্র্যাকিং স্টপ মেশিনের মাধ্যমে মুনাফা রক্ষা করতে। কৌশলটির মূল অংশটি হ’ল দ্রুত ইএমএ এবং ধীর ইএমএ এর ক্রসগুলি ব্যবহার করে যখন দাম কমে যায় তখন স্বয়ংক্রিয়ভাবে দুটি পর্যন্ত সুরক্ষা আদেশ স্থাপন করে।
এই কৌশলটি বেশ কয়েকটি মূল উপাদানগুলির উপর ভিত্তি করে কাজ করেঃ
প্রবণতা সনাক্তকরণ: দ্রুত ইএমএ (ডিফল্ট 9 চক্র) এবং ধীর ইএমএ (ডিফল্ট 21 চক্র) এর ক্রস ব্যবহার করে একটি সম্ভাব্য উত্থান ট্রেন্ড সনাক্ত করুন। যখন দ্রুত ইএমএ উপরে ধীর ইএমএ অতিক্রম করে তখন সিস্টেমটি একটি ক্রয় সংকেত তৈরি করে।
বেসিক ও নিরাপত্তা আদেশ: কৌশলটি একটি স্তরবিন্যস্ত তহবিল ব্যবস্থাপনা পদ্ধতি গ্রহণ করে, যা বেসিক অর্ডার দিয়ে শুরু হয় (ডিফল্ট \( 1,000) এবং দাম কমে গেলে দুটি অতিরিক্ত সুরক্ষা অর্ডার যুক্ত করে (ডিফল্ট \) 1,250 SO1, ডিফল্ট $ 1,750 SO2) ।
গতিশীল দূরত্ব গণনা: নিরাপত্তা অর্ডারের ট্রিগার প্রাইস দুটি উপায়ে গণনা করা যায়ঃ
ডাবল ট্র্যাকিং স্টপ লস সিস্টেম:
প্রত্যাহারের শর্তাবলী: নিম্নলিখিত পরিস্থিতিতে প্লেইন পজিশন কৌশলঃ
শীতল সময়কাল এবং তারিখ ফিল্টার: কৌশলটিতে বেসিক অর্ডারের পরে শীতল সময়কাল (ডিফল্ট 4 ঘন্টা) এবং একটি নির্দিষ্ট সময়সীমার মধ্যে পুনরায় মেটানো বা সম্পাদন করার জন্য একটি বিকল্প তারিখ ফিল্টার অন্তর্ভুক্ত রয়েছে।
এই কোডের গভীর বিশ্লেষণে আমরা নিম্নলিখিত প্রধান সুবিধাগুলির কথা বলতে পারিঃ
নমনীয় তহবিল ব্যবস্থাপনা: এই কৌশলটি ডলার খরচ গড়ের সাথে ডায়নামিক সিকিউরিটি অর্ডারের সাথে মিলিত হয়, যা বাজারের অবস্থার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে পজিশনগুলিকে সামঞ্জস্য করে। এই পদ্ধতিটি বিশেষত অস্থির বাজারে কার্যকর, যা গড় প্রবেশের মূল্য হ্রাস করতে পারে এবং সম্ভাব্য মুনাফা বাড়িয়ে তুলতে পারে।
স্থানের পরিবর্তনশীলতার উপর ভিত্তি করেএটিআর-এর মাধ্যমে সুরক্ষিত অর্ডারের অবস্থান গণনা করে, কৌশলটি বর্তমান বাজার ওঠানামার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে পজিশনিং স্প্যানকে সামঞ্জস্য করতে সক্ষম হয়, যা স্থির শতাংশ পদ্ধতির চেয়ে বেশি নমনীয়।
দ্বৈত মুনাফা সুরক্ষা: দ্বৈত ট্র্যাকিং স্টপ সিস্টেম উদ্ভাবনী ঝুঁকি ব্যবস্থাপনা প্রদান করে, স্ট্যান্ডার্ড ট্র্যাকিং স্টপ বেশিরভাগ তহবিলকে সুরক্ষিত করে, এবং মুনাফা লকিং প্রক্রিয়াটি নির্দিষ্ট মুনাফা লক্ষ্যমাত্রা অর্জনের পরে সক্রিয় হয়, যা প্রাপ্ত মুনাফার আরও ঘনিষ্ঠ শতাংশে সুরক্ষিত করে।
সম্পূর্ণরূপে কাস্টমাইজযোগ্য: সমস্ত মূল পরামিতি (ইএমএ দৈর্ঘ্য, অর্ডার আকার, স্টপ লস শতাংশ ট্র্যাকিং, নিরাপদ অর্ডার ব্যবধান) ট্রেডারদের ঝুঁকি পছন্দ এবং বাজারের অবস্থার উপর ভিত্তি করে সামঞ্জস্য করা যেতে পারে।
ইন্টিগ্রেটেড অ্যালার্ট সিস্টেম: কৌশলটিতে ফর্ম্যাটযুক্ত সতর্কতা শর্ত রয়েছে যা সম্পূর্ণ স্বয়ংক্রিয় লেনদেনের জন্য তৃতীয় পক্ষের অটোমেশন প্ল্যাটফর্মের সাথে একীভূত হতে পারে (যেমন 3 কমাস) ।
সুস্পষ্ট নিয়োগের তথ্য: একটি বিশদ সূচনা সারণী রয়েছে যা মূল ট্রেডিং সূচক এবং স্থিতি প্রদর্শন করে, যা রিয়েল-টাইম পর্যবেক্ষণ এবং কৌশলগত অপ্টিমাইজেশনের সুবিধা দেয়।
যদিও এই কৌশলটির অনেক সুবিধা রয়েছে, তবে এর মধ্যে কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ
সমাধান: ট্র্যাকিং স্টপ লস শতাংশ এবং সুরক্ষা অর্ডারগুলির ব্যবধান নির্দিষ্ট লেনদেনের জাত এবং সময় ফ্রেমের সাথে সামঞ্জস্য করুন; অতিরিক্ত সুরক্ষা স্তর হিসাবে গ্লোবাল স্টপ লস যুক্ত করার বিষয়টি বিবেচনা করুন।
সমাধান: নির্দিষ্ট লেনদেনের ধরন এবং বাজারের অবস্থার জন্য বিশদ প্রতিক্রিয়া এবং অপ্টিমাইজেশন; স্বনির্ধারিত প্যারামিটার সমন্বয় ব্যবস্থা বাস্তবায়ন।
সমাধান: সময় ভিত্তিক বাধ্যতামূলক কার্যকরকরণ বা নির্দিষ্ট বাজার অবস্থার অধীনে ব্যবধানের সমন্বয় হিসাবে আরও নমনীয় সুরক্ষা অর্ডার ট্রিগারগুলি বাস্তবায়নের বিষয়টি বিবেচনা করুন।
*সমাধান*ট্রেডিং ফিল্টার যুক্ত করুন, যেমন অস্থিরতা হ্রাস বা প্রবণতা শক্তি নিশ্চিতকরণ; ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করার জন্য শীতল সময় বাড়ান।
সমাধান: মৌলিক ফিল্টার বা ঝুঁকিপূর্ণ মনোভাবের সূচকগুলিকে একত্রিত করার কথা বিবেচনা করুন; নিশ্চিতকরণ সংকেত হিসাবে ক্রস-মার্কেট প্রাসঙ্গিকতা পরীক্ষা যুক্ত করুন।
নীতি কোডের গভীর বিশ্লেষণের উপর ভিত্তি করে, নিম্নলিখিত কয়েকটি সম্ভাব্য অপ্টিমাইজেশান দিক রয়েছেঃ
স্বনির্ধারিত প্যারামিটার: বাজারের অস্থিরতা বা লেনদেনের পরিমাণের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ইএমএ দৈর্ঘ্য এবং এটিআর গুণকে সামঞ্জস্য করার একটি প্রক্রিয়া বাস্তবায়ন করুন। উদাহরণস্বরূপ, উচ্চ অস্থিরতার পরিবেশে দীর্ঘ ইএমএ এবং বৃহত্তর এটিআর গুণক ব্যবহার করুন এবং কম অস্থিরতার পরিবেশে সংক্ষিপ্ত ইএমএ এবং ছোট এটিআর গুণক ব্যবহার করুন। এটি বিভিন্ন বাজারের অবস্থার মধ্যে কৌশলটির অভিযোজনযোগ্যতা বাড়িয়ে তুলবে।
একাধিক নিশ্চিতকরণ সংকেত: অতিরিক্ত নিশ্চিতকরণ সূচক যেমন আপেক্ষিক দুর্বলতা সূচক ((আরএসআই), ট্র্যাফিক বা ব্রিন ব্যান্ড যোগ করুন যাতে ভুয়া সংকেত হ্রাস করা যায়। ফিল্টারগুলি বাস্তবায়ন করা যেতে পারে যাতে একাধিক প্রযুক্তিগত সূচক একই সাথে প্রবেশের সংকেত নিশ্চিত করতে পারে, যার ফলে সংকেতের গুণমান উন্নত হয়।
গতিশীল তহবিল বরাদ্দ: বাজার পরিস্থিতি এবং ঐতিহাসিক অস্থিরতার উপর ভিত্তি করে অর্ডারের আকার পরিবর্তন করা। উদাহরণস্বরূপ, কম অস্থির বা ঐতিহাসিকভাবে উচ্চতর বাজারের পর্যায়ে বেসিক অর্ডারের আকার বৃদ্ধি করা, উচ্চ ঝুঁকিপূর্ণ পরিবেশে হ্রাস করা।
স্মার্ট বিদায়ের কৌশল: আংশিক মুনাফা অর্জনের প্রক্রিয়া বাস্তবায়ন করুন, যা একক স্থিরতার পরিবর্তে বিভিন্ন স্তরের মুনাফায় ধীরে ধীরে প্রস্থান করার অনুমতি দেয়। এটি একাধিক মুনাফা লক্ষ্য এবং সংশ্লিষ্ট প্রস্থান শতাংশের মাধ্যমে করা যেতে পারে, যা ঝুঁকি-ফেরতের অনুপাতকে অনুকূল করে তোলে।
সংবেদনশীলতা সংহত: বাজার সংবেদন বিশ্লেষণ যেমন ভয় এবং লোভ সূচক বা লেনদেনের পরিমাণ বিশ্লেষণ যোগ করুন, প্রবেশ এবং প্রস্থান করার জন্য অতিরিক্ত ফিল্টার হিসাবে। এটি কৌশলকে চরম বাজার সংবেদনশীলতার সময় অপ্রয়োজনীয় লেনদেন এড়াতে সহায়তা করবে।
ঝুঁকিপূর্ণ এক্সপোজার ব্যবস্থাপনা: সর্বাধিক ঝুঁকিপূর্ণ এক্সপোজার (সমস্ত সম্ভাব্য সুরক্ষা আদেশের সমষ্টি) এর গতিশীল গণনা এবং গ্রহণযোগ্য সর্বাধিক ঝুঁকি সীমাবদ্ধতা সেট করার ক্ষমতা। এটি নিশ্চিত করবে যে কৌশলটি কোনও একক লেনদেনের জন্য কোনও সময়ে অতিরিক্ত পরিমাণে উন্মুক্ত নয়।
ইন্ডেক্স মোবাইল এভারেজ ক্রস স্মার্ট ক্যাচিং স্টপ ট্র্যাকিং সিস্টেমটি একটি সুনির্দিষ্টভাবে পরিকল্পিত পরিমাণগত ট্রেডিং কৌশল যা প্রবণতা সনাক্তকরণ, স্তরবিন্যাস এবং উন্নত স্টপ ম্যানেজমেন্টের সমন্বয় করে। এর মূল সুবিধা হল বাজারের ওঠানামার সাথে খাপ খাইয়ে নেওয়ার ক্ষমতা, স্মার্ট তহবিল ব্যবস্থাপনা এবং দ্বি-স্তর লাভ সুরক্ষা সিস্টেম। এই কৌশলটি মধ্যম ওঠানামা বাজার পরিবেশে বিশেষভাবে উপযুক্ত, যেখানে প্রবণতা যথেষ্ট ধারাবাহিকতা এবং দিকনির্দেশনা রয়েছে।
যথাযথ প্যারামিটার অপ্টিমাইজেশান এবং সুপারিশের বর্ধিতকরণের মাধ্যমে এই কৌশলটি তার পারফরম্যান্স এবং স্থায়িত্বকে আরও উন্নত করতে পারে। বিশেষত, স্বনির্ধারিত প্যারামিটার সমন্বয় এবং একাধিক নিশ্চিতকরণ সংকেতগুলি প্রবেশের গুণমানকে উল্লেখযোগ্যভাবে উন্নত করতে পারে, যখন গতিশীল তহবিল বরাদ্দ এবং স্মার্ট প্রস্থান কৌশলগুলি ঝুঁকি-ফেরত বৈশিষ্ট্যকে অনুকূল করতে পারে।
শেষ পর্যন্ত, এই কৌশলটি একটি সুষম পরিমাণে ট্রেডিং পদ্ধতির প্রতিনিধিত্ব করে, যা তহবিল সংরক্ষণ এবং ধারাবাহিকতার উপর দৃষ্টি নিবদ্ধ করে, প্রতি লেনদেনের মুনাফা সর্বাধিকীকরণের জন্য নয়। এটি ব্যবসায়ীদের একটি শক্তিশালী কাঠামো সরবরাহ করে যা ব্যক্তিগত ঝুঁকিপূর্ণ পছন্দ এবং বাজারের অবস্থার উপর ভিত্তি করে কাস্টমাইজ করা যেতে পারে, যা সম্ভাব্য দীর্ঘমেয়াদী টেকসই লেনদেনের ফলাফল অর্জন করতে পারে।
/*backtest
start: 2025-04-15 00:00:00
end: 2025-07-13 19:30:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/
//@version=5
strategy(
title="DCA + Dual Trailing Strategy",
overlay=true
)
// --- Trend ---
fastMALen = input.int(9, title="Fast EMA Length")
slowMALen = input.int(21, title="Slow EMA Length")
// --- Trailing Stops ---
trailStopPerc = input.float(8.0, title="Standard Trailing Stop (%)", minval=0.1) / 100
lockInThreshold = input.float(2.5, title="Profit Lock-In Trigger (%)", minval=0.1) / 100
lockInTrailPct = input.float(1.5, title="Lock-In Trail (%) after Trigger", minval=0.1) / 100
// --- Safety Orders (SO) ---
useATRSpacing = input.bool(true, title="Use ATR-Based Spacing?")
atrLength = input.int(14, title="ATR Length", minval=1)
atrSo1Multiplier = input.float(1.2, title="ATR SO1 Multiplier", minval=0.1)
atrSo2Multiplier = input.float(2.5, title="ATR SO2 Multiplier", minval=0.1)
// --- Fallback SO Spacing (if not using ATR) ---
fallbackSo1Perc = input.float(4.0, title="Fallback SO1 Drop (%) ", minval=0.1) / 100
fallbackSo2Perc = input.float(8.0, title="Fallback SO2 Drop (%) ", minval=0.1) / 100
// --- Entry Cooldown ---
cooldownBars = input.int(4, "Cooldown Bars After Base Entry", minval=0)
// --- Order Sizes in USD ---
baseUsd = input.float(10000.0, title="Base Order Size (USD)", minval=1.0)
so1Usd = input.float(12500.0, title="Safety Order 1 Size (USD)", minval=1.0)
so2Usd = input.float(17500.0, title="Safety Order 2 Size (USD)", minval=1.0)
// 2) CALCULATIONS
// --- Trend & Reversal Detection ---
fastMA = ta.ema(close, fastMALen)
slowMA = ta.ema(close, slowMALen)
trendUp = ta.crossover(fastMA, slowMA)
trendDown = ta.crossunder(fastMA, slowMA)
// --- ATR Value ---
atrValue = ta.atr(atrLength)
// 3) BASE ENTRY LOGIC
// Base Buy Signal: EMA crossover
baseBuySignal = trendUp
var int lastBuyBar = na // Tracks the bar index of the last base entry
inCooldown = not na(lastBuyBar) and (bar_index - lastBuyBar < cooldownBars)
var float baseEntryPrice = na // Stores the price of the initial base entry for SO calculations
// --- Execute Base Entry ---
if baseBuySignal and strategy.position_size == 0 and not inCooldown
baseQty = baseUsd / close // Calculate quantity based on USD
strategy.order("Base Order", strategy.long, qty=baseQty, comment="Base Entry")
baseEntryPrice := close
lastBuyBar := bar_index
// 4) SAFETY ORDERS LOGIC
// --- Calculate SO Trigger Prices ---
float so1TriggerPrice = na
float so2TriggerPrice = na
if strategy.position_size > 0 // Only calculate if a base order has been placed
so1TriggerPrice := useATRSpacing ?
(baseEntryPrice - atrValue * atrSo1Multiplier) :
(baseEntryPrice * (1 - fallbackSo1Perc))
so2TriggerPrice := useATRSpacing ?
(baseEntryPrice - atrValue * atrSo2Multiplier) :
(baseEntryPrice * (1 - fallbackSo2Perc))
// --- Conditions for SO Execution ---
// Added 'inDateRange' check
// Ensure base order exists, price trigger hit, and the specific SO hasn't filled yet
bool so1Condition = strategy.position_size > 0 and close <= so1TriggerPrice and strategy.opentrades == 1
bool so2Condition = strategy.position_size > 0 and close <= so2TriggerPrice and strategy.opentrades == 2
// --- Execute SO1 ---
if so1Condition
so1Qty = so1Usd / close // Calculate quantity based on USD
strategy.order("Safety Order 1", strategy.long, qty=so1Qty, comment="SO1")
// --- Execute SO2 ---
if so2Condition
so2Qty = so2Usd / close // Calculate quantity based on USD
strategy.order("Safety Order 2", strategy.long, qty=so2Qty, comment="SO2")
// 5) AVERAGE ENTRY PRICE
// Use the built-in variable for the average price of the open position
avgEntryPrice = strategy.position_avg_price
// 6) DUAL TRAILING STOP LOGIC
// Variables to track trailing stop levels and states
var float highestSinceEntry = na
var float trailStopPrice = na
var bool stopHitNormal = false
var bool lockInTriggered = false
var float lockInPeak = na
var float lockInStopPrice = na
var bool stopHitLockIn = false
// --- Update Trailing Logic when in a Position ---
if strategy.position_size > 0
// --- Standard Trail ---
highestSinceEntry := na(highestSinceEntry) ? close : math.max(highestSinceEntry, close)
trailStopPrice := highestSinceEntry * (1 - trailStopPerc)
stopHitNormal := close < trailStopPrice
// --- Lock-In Trail ---
if not lockInTriggered and close >= avgEntryPrice * (1 + lockInThreshold)
lockInTriggered := true
lockInPeak := close
if lockInTriggered
lockInPeak := math.max(lockInPeak, close)
lockInStopPrice := lockInPeak * (1 - lockInTrailPct)
stopHitLockIn := close < lockInStopPrice
else
stopHitLockIn := false
lockInStopPrice := na
// --- Reset Variables when Flat ---
else
highestSinceEntry := na
trailStopPrice := na
stopHitNormal := false
lockInTriggered := false
lockInPeak := na
lockInStopPrice := na
stopHitLockIn := false
// lastBuyBar is intentionally NOT reset here, cooldown depends on it
// 7) EXIT CONDITIONS
// Added 'inDateRange' check
// Exit if either trailing stop is hit OR if the trend reverses downward
exitCondition = (stopHitNormal or stopHitLockIn or trendDown) and strategy.position_size > 0
if exitCondition
strategy.close_all(comment="Exit: SL / LockIn / TrendDown")
// 9) PLOTS & DEBUG TABLE
// --- Plot MAs ---
plot(fastMA, color=color.new(color.green, 0), title="Fast EMA", linewidth=2)
plot(slowMA, color=color.new(color.red, 0), title="Slow EMA", linewidth=2)
// --- Plot Trailing Stops ---
plot(strategy.position_size > 0 ? trailStopPrice : na, color=color.new(color.orange, 0), title="Standard Trailing Stop", style=plot.style_linebr, linewidth=2)
plot(lockInTriggered ? lockInStopPrice : na, color=color.new(color.fuchsia, 0), title="Lock-In Trailing Stop", style=plot.style_linebr, linewidth=2)