
সুপারট্রেন্ড ডায়নামিক স্টপ-টু-টাইম ফিল্টার কৌশল হল একটি অস্থিরতার উপর ভিত্তি করে স্বয়ং-অনুকূলিত পরিমাণগত ট্রেডিং সিস্টেম, যার কেন্দ্রস্থলটি গতিশীল ট্র্যাকিং স্টপ টুল হিসাবে সুপারট্রেন্ড সূচকগুলিতে নির্ভর করে। এই কৌশলটি সুপারট্রেন্ডের সূচক লাইনটি অতিক্রম করার মুহুর্তগুলি সনাক্ত করে বাজার প্রবণতা ক্যাপচার করে এবং মস্কো সময় () ফিল্টার, মূল্য স্তর ফিল্টার এবং স্থির শতাংশ স্টপ ফাংশন সহ একাধিক ফিল্টারিং প্রক্রিয়াকে একত্রিত করে। সিস্টেমটি একাধিক ফাংশনাল মোডে ডিজাইন করা হয়েছে, যা এককভাবে ট্রেড করতে পারে।
এই কৌশলটি নিম্নলিখিত মূল প্রক্রিয়াগুলির উপর ভিত্তি করে কাজ করেঃ
সুপারট্রেন্ড সূচক গণনাকৌশলঃ এটিআর সূচক ((ডিফল্ট চক্র 23) এবং গুণক ফ্যাক্টর ((ডিফল্ট 1.8) ব্যবহার করে সুপারট্রেন্ড লাইনটি গণনা করা হয়, যা বাজারের অস্থিরতার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে তার অবস্থানকে সামঞ্জস্য করে, গতিশীল সমর্থন এবং প্রতিরোধ গঠন করে।
ট্রেডিং সংকেত উৎপন্ন:
ট্রেডিং মোড নির্বাচন করুনএই কৌশলটি তিনটি লেনদেনের মডেল প্রদান করেঃ
মাল্টি ফিল্টারিং সিস্টেম:
ডায়নামিক থামানোর ব্যবস্থা: কৌশলটি প্রবেশের দামের উপর ভিত্তি করে স্থির শতাংশ স্টপ (ডিফল্ট 1.5%) বাস্তবায়ন করে, যখন দাম স্টপ লেভেল পৌঁছে যায়, কৌশলটি স্বয়ংক্রিয়ভাবে প্লেইন করে, মুনাফা লক করে। স্টপ লেভেলটি চার্টে স্বজ্ঞাতভাবে প্রদর্শিত হয়, ব্যবহারকারীরা প্রয়োজন অনুসারে এই ভিজ্যুয়াল বৈশিষ্ট্যটি চালু বা বন্ধ করতে পারেন।
এই কোডটি গভীরভাবে বিশ্লেষণ করে আমি নিম্নলিখিত উল্লেখযোগ্য সুবিধাগুলি খুঁজে পেয়েছিঃ
স্বতঃস্ফূর্ততাসুপারট্রেন্ড সূচকটি এটিআর গণনার উপর ভিত্তি করে তৈরি করা হয়েছে, যা বাজারের অস্থিরতার উপর ভিত্তি করে ট্র্যাকিং দূরত্বকে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে পারে, উচ্চ অস্থিরতার বাজারে সুরক্ষা দূরত্ব বাড়ায় এবং নিম্ন অস্থিরতার বাজারে আরও ঘনিষ্ঠভাবে দাম অনুসরণ করে, বিভিন্ন বাজারের পরিবেশের সাথে কৌশলটির অভিযোজনযোগ্যতা বাড়ায়।
একাধিক ঝুঁকি নিয়ন্ত্রণকৌশলটি তিনটি স্তরের ঝুঁকি ব্যবস্থাপনাকে একত্রিত করেঃ সময় ফিল্টারিং, মূল্য ফিল্টারিং এবং স্টপ সেটিং। এই বহুমুখী ঝুঁকি নিয়ন্ত্রণ ব্যবস্থাটি লেনদেনের সুরক্ষা উল্লেখযোগ্যভাবে উন্নত করে।
নমনীয় ট্রেডিং: শুধুমাত্র মাল্টি হেড, শুধুমাত্র শূন্য হেড বা দ্বি-মুখী ট্রেডিংয়ের বিকল্প রয়েছে, যাতে কৌশলটি বিভিন্ন বাজার পছন্দ এবং ট্রেডিং সীমাবদ্ধতার সাথে খাপ খাইয়ে নিতে পারে।
টাইম ইন্টিগ্রেটেড অপ্টিমাইজেশনইউনিক মস্কো টাইম ফিল্টার নির্দিষ্ট সময়ের মধ্যে ট্রেড করার অনুমতি দেয়, বাজারের অকার্যকর সময়গুলি এড়াতে সাহায্য করে, লক্ষ্যবস্তুভাবে উচ্চ দক্ষতার ট্রেডিং উইন্ডো ক্যাপচার করে, বিশেষত ব্যবসায়ীদের জন্য উপযুক্ত যারা আন্তর্জাতিক ট্রেডিংয়ের সময় বিবেচনা করতে হবে।
দৃশ্যমানতা সুবিধা: ব্যাকগ্রাউন্ডের রঙ পরিবর্তন, সুপারট্রেন্ড লাইন রঙ এবং স্টপ লেভেল মার্কিংয়ের মাধ্যমে, একটি স্বজ্ঞাত ভিজ্যুয়াল ট্রেডিং রেফারেন্স সরবরাহ করা হয়, যা বিশ্লেষণের জটিলতা হ্রাস করে।
কমিশন অপ্টিমাইজেশান ডিজাইন০.০৬% কমিশন বিবেচনা করে, যা প্রকৃত ট্রেডিং পরিবেশের কাছাকাছি ফিডব্যাকের ফলাফল দেয়।
সমাপ্তি মূল্য বাস্তবায়ন ব্যবস্থাক্রিয়াঃ অর্ডার কার্যকর করার জন্য প্রসেস_অর্ডার_অন_ক্লোজ=ট্রু ব্যবহার করা হয়েছে, যার ফলে স্লাইড পয়েন্টের প্রভাব হ্রাস পেয়েছে এবং ফিডব্যাকের নির্ভরযোগ্যতা বৃদ্ধি পেয়েছে।
এই কৌশলটি ভালভাবে পরিকল্পিত হলেও, এর মধ্যে কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ
প্রবণতা বিপরীতসুপারট্রেন্ড ইন্ডিকেটর মূলত একটি পিছিয়ে পড়া ইন্ডিকেটর যা বাজারের তীব্র বিপর্যয়ের সময় বিলম্বিত সংকেত তৈরি করতে পারে, যার ফলে সময়মতো প্রবেশ বা প্রস্থান না করা, প্রত্যাহারের ঝুঁকি বাড়ায়। সমাধানটি হ’ল সংবেদনশীলতা এবং স্থায়িত্বের ভারসাম্য বজায় রাখতে এটিআর চক্র এবং গুণক ফ্যাক্টরকে সামঞ্জস্য করা।
স্থির বাধা সীমাবদ্ধতা: স্থির শতাংশ স্টপ ব্যবহার করা মুনাফা অকাল লক করতে পারে এবং শক্তিশালী প্রবণতায় আরও বেশি লাভ হারাতে পারে। বাজারের অস্থিরতার গতিশীলতার সাথে স্টপ শতাংশের সমন্বয় বা অন্যান্য প্রযুক্তিগত সূচকগুলির সাথে সংযুক্ত স্টপ কৌশলটি অনুকূলিতকরণের পরামর্শ দেওয়া হয়।
পরামিতি সংবেদনশীলতা: কৌশলটির কার্যকারিতা প্যারামিটার সেটিংয়ের উপর অত্যন্ত নির্ভরশীল ((এটিআর চক্র, গুণক ফ্যাক্টর, স্টপিং শতাংশ ইত্যাদি), ভুল প্যারামিটারগুলি অত্যধিক লেনদেন বা সংকেত ত্রুটি হতে পারে। ইতিহাসের ডেটা ব্যাকআপের মাধ্যমে সর্বোত্তম প্যারামিটার সমন্বয় সন্ধান করা উচিত।
ফিল্টার সীমাবদ্ধতা: সময় এবং মূল্যের উপর খুব কঠোর ফিল্টারিং কার্যকর ব্যবসায়ের সুযোগগুলি মিস করতে পারে। ফিল্টারিং শর্তগুলি প্রকৃত ব্যবসায়ের জাত এবং বাজারের বৈশিষ্ট্য অনুসারে সামঞ্জস্য করার পরামর্শ দেওয়া হয়।
বাজারের উপর নির্ভরশীল: এই কৌশলটি প্রবণতাযুক্ত বাজারে দুর্দান্ত কাজ করে, তবে অস্থির বাজারে প্রায়শই মিথ্যা সংকেত তৈরি করতে পারে। বাজারের অবস্থা সনাক্তকরণ ব্যবস্থা যুক্ত করার বিষয়টি বিবেচনা করা যেতে পারে, কেবলমাত্র ট্রেন্ডিং বাজারে কৌশলটি চালু করা যেতে পারে।
ক্ষতিপূরণের অভাব: যদিও সুপারট্রেন্ডটি গতিশীল স্টপ লস রেফারেন্স হিসাবে কাজ করে, তবে কোডটিতে স্পষ্টভাবে স্টপ লস শর্ত সেট করা নেই, চরম বাজার পরিস্থিতিতে বড় ক্ষতির মুখোমুখি হতে পারে। কঠোর স্টপ মেশিন যুক্ত করার পরামর্শ দেওয়া হয়েছে।
কোড বিশ্লেষণের উপর ভিত্তি করে, আমি নিম্নলিখিত অপ্টিমাইজেশান নির্দেশাবলী সুপারিশ করছিঃ
গতিশীল প্যারামিটার স্বনির্ধারিত: একটি ফাংশন লিখতে পারে যা সুপারট্রেন্ডের এটিআর চক্র এবং গুণক ফ্যাক্টরকে বাজার পরিস্থিতির উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে (যেমন, অস্থিরতা, লেনদেনের পরিমাণ ইত্যাদি) কৌশলগত অভিযোজনযোগ্যতা উন্নত করে। এটি করার সুবিধা হ’ল বিভিন্ন বাজার পর্যায়ে স্বয়ংক্রিয়ভাবে সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পাওয়া যায়।
বহু-সময়-প্রান্তিক নিশ্চিতকরণ: একটি মাল্টি টাইম সাইকেল কনফার্মেশন মেকানিজম চালু করা হয়েছে, যা শুধুমাত্র তখনই লেনদেন সম্পাদন করে যখন বৃহত্তর টাইম সাইকেল এবং বর্তমান টাইম সাইকেল সুপারট্রেন্ডের দিকনির্দেশনা একত্রিত হয়, যা মিথ্যা সংকেত হ্রাস করে। এটি সংকেতের গুণমানকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।
স্মার্ট স্ট্রোক সিস্টেমস্থির শতাংশ বন্ধের পরিবর্তে এটিআর-ভিত্তিক গতিশীল বন্ধ বা বিভাজন বন্ধ করুন (কিছু পজিশন কম টার্গেটে লাভজনক হয়, কিছু পজিশন আরও বেশি লাভের সন্ধান করে), তহবিল পরিচালনার কৌশলগুলি অনুকূলিত করুন।
বাজার অবস্থা সনাক্তকরণট্রেডিংয়ের জন্য প্রবণতা শক্তির সূচক (যেমন ADX) বা অস্থিরতার সূচকগুলি যুক্ত করুন, কেবলমাত্র যখন বাজার নির্দিষ্ট শর্ত পূরণ করে তখনই ট্রেডিং করুন এবং অকার্যকর বাজার পরিবেশে ট্রেডিং এড়িয়ে চলুন।
ঝুঁকি ব্যবস্থাপনা: প্রতি লেনদেনের ঝুঁকি সীমাবদ্ধতা এবং অ্যাকাউন্টের ঝুঁকি পরিচালনার লজিক যুক্ত করুন, যাতে একক এবং সামগ্রিক ঝুঁকি নিয়ন্ত্রণযোগ্য সীমার মধ্যে থাকে।
মাল্টিমিডিয়েটর ইন্টিগ্রেশন: অন্যান্য প্রযুক্তিগত সূচকগুলির সাথে মিলিত (যেমন MACD, RSI বা বুলিন ব্যান্ড) সহায়ক নিশ্চিতকরণ হিসাবে, কেবলমাত্র মাল্টি-ইনডিকেটর রেজোনেন্সের সময় ট্রেডিং কার্যকর করা হয়, যা সংকেতের নির্ভরযোগ্যতা বাড়ায়।
লেনদেনের ভলিউম যুক্তিসঙ্গত: বাজারের তরলতা এবং অস্থিরতার গতিশীলতা অনুযায়ী লেনদেনের আকার সামঞ্জস্য করুন, বড় অস্থিরতার সময় পজিশন হ্রাস করুন, স্থিতিশীল প্রবণতার সময় পজিশন বাড়ান।
পুনরাবৃত্তি চক্র সম্প্রসারণ: বিভিন্ন বাজার চক্র এবং অবস্থার মধ্যে ব্যাপকভাবে ব্যাক-টেস্টিং করা, যাতে বিভিন্ন বাজার পরিবেশে কৌশলটি স্থিতিশীল থাকে।
সুপারট্রেন্ড ডায়নামিক স্টপ এবং টাইম ফিল্টার কৌশলটি একটি সমন্বিত পরিমাণগত ট্রেডিং সিস্টেম যা প্রযুক্তিগত বিশ্লেষণ এবং ঝুঁকি ব্যবস্থাপনাকে একত্রিত করে। এটি সুপারট্রেন্ড সূচকগুলির মাধ্যমে প্রবণতা ক্যাপচার করে এবং একাধিক ফিল্টারিং প্রক্রিয়া ব্যবহার করে সংকেতের গুণমান উন্নত করে। কৌশলটির প্রধান সুবিধা হ’ল এর অস্থিরতা স্ব-অনুকূলতা এবং বহুস্তরীয় ঝুঁকি নিয়ন্ত্রণ, যেখানে সম্ভাব্য ঝুঁকিগুলি মূলত সূচকের পিছিয়ে থাকা এবং প্যারামিটার সংবেদনশীলতা থেকে আসে।
প্রস্তাবিত অপ্টিমাইজেশান ব্যবস্থা যেমন ডায়নামিক প্যারামিটার অ্যাডজাস্টমেন্ট, মাল্টি-টাইম সাইকেল কনফার্মেশন এবং স্মার্ট স্টপ সিস্টেম বাস্তবায়নের মাধ্যমে এই কৌশলটি তার অভিযোজনযোগ্যতা এবং লাভজনকতাকে আরও বাড়িয়ে তুলতে পারে। সবচেয়ে গুরুত্বপূর্ণভাবে, ব্যবসায়ীরা এই কৌশলটির নকশা নীতি এবং সীমাবদ্ধতা বুঝতে হবে এবং তাদের নিজস্ব ঝুঁকি পছন্দ এবং বাজারের উপলব্ধিগুলির সাথে মিলিত হয়ে প্যারামিটারগুলিকে ব্যক্তিগতকৃতভাবে সামঞ্জস্য করতে হবে যাতে সর্বোত্তম ট্রেডিংয়ের ফলাফল পাওয়া যায়।
সামগ্রিকভাবে, এটি একটি সুনির্দিষ্ট, যুক্তিসঙ্গত ট্রেডিং কৌশল যা উচ্চ ব্যবহারিক মূল্য এবং কাস্টমাইজড সম্ভাবনার সাথে একটি পরিমাণগত বিনিয়োগকারীকে ব্যবহার করার জন্য উপযুক্ত।
/*backtest
start: 2024-03-26 00:00:00
end: 2024-07-11 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Supertrend Fixed TP Unified with Time Filter (MSK)", overlay=true,
default_qty_value=0.01,
commission_type=strategy.commission.percent,
commission_value=0.06,
pyramiding=0,
process_orders_on_close=true)
// Настройки индикатора
atrPeriod = input(23, "ATR Length")
factor = input.float(1.8, "Factor", step=0.1, minval=0.1)
tradeMode = input.string("Both", "Trade Mode", options=["Long Only", "Short Only", "Both"])
// Общий параметр тейк-профита
takeProfitPercent = input.float(1.5, "Take Profit (%)", minval=0.01)
showTP = input.bool(true, "▲▼ Показывать ТП") // Добавлен переключатель
// Фильтр цены
price_param = input.float(10000.0, "Цена фильтра", step=1.0)
use_price_filter = input.bool(false, "Использовать фильтр цены")
// Фильтр по времени (Московское время)
useTimeFilter = input.bool(true, "▲▼ Использовать фильтр по времени") // Переключатель фильтра времени
timeFrom = input.int(0, "Время С (часы MSK)", minval=0, maxval=23, step=1)
timeTo = input.int(23, "Время ДО (часы MSK)", minval=0, maxval=23, step=1)
// Функция проверки времени (с учетом Московского времени UTC+3)
isTimeInRange() =>
if not useTimeFilter
true // Фильтр отключен
else
// Переводим время сервера (UTC) в Московское время (UTC+3)
mskHour = (hour(time) + 3) % 24 // Добавляем 3 часа для MSK
if timeFrom <= timeTo
mskHour >= timeFrom and mskHour < timeTo // До timeTo (не включая timeTo)
else
mskHour >= timeFrom or mskHour < timeTo // До timeTo (не включая timeTo)
// Расчет Supertrend
[supertrend, dir] = ta.supertrend(factor, atrPeriod)
// Визуализация Supertrend
plot(supertrend, "Supertrend",
color = dir < 0 ? color.green : color.red,
linewidth = 2,
style = plot.style_linebr)
bgcolor(dir < 0 ? color.new(color.green, 90) : color.new(color.red, 90))
// Сигналы входа с фильтром по времени
longEntry = (dir < 0 and dir[1] > 0) and (use_price_filter ? close > price_param : true) and isTimeInRange()
shortEntry = (dir > 0 and dir[1] < 0) and (use_price_filter ? close < price_param : true) and isTimeInRange()
// Логика стратегии
if tradeMode == "Both"
if longEntry
strategy.close("Short", comment="Close Short")
strategy.entry("Long", strategy.long)
if shortEntry
strategy.close("Long", comment="Close Long")
strategy.entry("Short", strategy.short)
else if tradeMode == "Long Only"
if longEntry
strategy.entry("Long", strategy.long)
if shortEntry
strategy.close("Long", comment="Close Long")
else if tradeMode == "Short Only"
if shortEntry
strategy.entry("Short", strategy.short)
if longEntry
strategy.close("Short", comment="Close Short")
// Управление тейк-профитом
var color tpColor = na
var float tpLevel = na
var label tpLabel = na
// Сброс при закрытии позиции
if strategy.position_size == 0 and strategy.position_size[1] != 0
tpLevel := na
tpColor := na
label.delete(tpLabel)
tpLabel := na
// Обновление ТП при открытии позиции
if strategy.position_size > 0
entryPrice = strategy.opentrades.entry_price(0)
tpLevel := entryPrice * (1 + takeProfitPercent/100)
tpColor := color.green
// Закрытие лонга по TP на закрытии бара
if close >= tpLevel
strategy.close("Long", comment="TP Long")
// Обновление метки
if showTP
label.delete(tpLabel)
tpLabel := label.new(
bar_index, tpLevel,
text = str.tostring(tpLevel, "#.##"),
color = color.green,
textcolor = color.white,
style = label.style_label_down,
yloc = yloc.price)
if strategy.position_size < 0
entryPrice = strategy.opentrades.entry_price(0)
tpLevel := entryPrice * (1 - takeProfitPercent/100)
tpColor := color.red
// Закрытие шорта по TP на закрытии бара
if close <= tpLevel
strategy.close("Short", comment="TP Short")
// Обновление метки
if showTP
label.delete(tpLabel)
tpLabel := label.new(
bar_index, tpLevel,
text = str.tostring(tpLevel, "#.##"),
color = color.red,
textcolor = color.white,
style = label.style_label_up,
yloc = yloc.price)
// Визуализация ТП
plot(showTP ? tpLevel : na, "Take Profit",
color = tpColor,
linewidth = 1,
style = plot.style_circles)
// Обновление позиции метки
if showTP and not na(tpLevel)
label.set_xy(tpLabel, bar_index, tpLevel)