অভিযোজিত ট্রেলিং স্টপ কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-০৮-১০ ১৫ঃ০৬ঃ২৮
ট্যাগঃ

সারসংক্ষেপ

এই কৌশলটি মূলত একটি অভিযোজিত স্টপ লস প্রক্রিয়া বাস্তবায়ন করে যা দামের ওঠানামা উপর ভিত্তি করে স্টপ লস অবস্থানকে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে যাতে আরও ভাল স্টপ লস প্রভাব অর্জন করা যায়। কৌশলটি যুক্তিসঙ্গত স্টপ লস পরিসীমা গণনা করতে এটিআর সূচক ব্যবহার করে এবং ইএমএ লাইনের সাথে সংমিশ্রণে ট্রেডিং সংকেত উত্পন্ন করে। যখন দাম ইএমএ লাইনের মাধ্যমে ভেঙে যায় তখন এটি দীর্ঘ বা সংক্ষিপ্ত অবস্থান খোলে এবং স্টপ লস অ্যালগরিদম অনুসরণ করতে একটি অভিযোজিত স্টপ লস অ্যালগরিদম ব্যবহার করে।

কৌশলগত যুক্তি

  1. এটিআর সূচক গণনা করুন এবং এটিআর মানটি প্যারামিটার a দ্বারা গুণিত করে স্টপ লস রেঞ্জ nLoss হিসাবে সেট করুন।
  2. EMA রেখা গণনা করুন।
  3. যখন দাম ইএমএ লাইনের উপরে যায় তখন লম্বা হয়ে যায় এবং যখন দাম ইএমএ লাইনের নিচে যায় তখন শর্ট হয়ে যায়।
  4. নিম্নলিখিত নিয়মের সাথে স্বয়ংক্রিয়ভাবে স্টপ লস পজিশন xATRTrailingStop সামঞ্জস্য করার জন্য অভিযোজিত স্টপ লস অ্যালগরিদম ব্যবহার করুনঃ
    • যখন মূল্য স্টপ লস পজিশনের উপরে ভেঙে যায়, তখন স্টপ লসকে মূল্য বিয়োগ স্টপ লস পরিসীমা nLoss এ সামঞ্জস্য করুন।
    • যখন মূল্য স্টপ লস পজিশনের নিচে যায়, তখন স্টপ লসকে মূল্য এবং স্টপ লস পরিসীমা nLoss এ সামঞ্জস্য করুন।
    • অন্যথায়, স্টপ লস অপরিবর্তিত রাখুন।
  5. যখন মূল্য স্টপ লস লেভেলের কাছে পৌঁছায় তখন স্টপ লস পজিশন বন্ধ করুন।

সুবিধা বিশ্লেষণ

  1. বাজারের অস্থিরতার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে স্টপ লস পরিসীমা সামঞ্জস্য করে এমন একটি অভিযোজিত স্টপ লস প্রক্রিয়া বাস্তবায়ন করে, কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করে।
  2. এটিআর সূচক দিয়ে যুক্তিসঙ্গত স্টপ লস পরিসীমা গণনা করে, খুব বড় বা খুব ছোট স্টপ লস এড়ানো।
  3. ইএমএ ব্যবহার করে ট্রেডিং সিগন্যাল তৈরি করে, অপ্রয়োজনীয় ট্রেড কমিয়ে দেয় এবং বাজারের গোলমাল ফিল্টার করে।
  4. সহজ এবং স্পষ্ট কৌশল যুক্তি, সহজেই বুঝতে এবং অপ্টিমাইজ করা.
  5. বিভিন্ন বাজারের পরিবেশের সাথে মানিয়ে নিতে ইনপুট পরামিতিগুলি সামঞ্জস্য করতে দেয়।

ঝুঁকি এবং উন্নতি

  1. ইএমএ সংকেতগুলি বিলম্বিত হতে পারে, যার ফলে বিলম্বিত প্রবেশের কারণ হতে পারে।
  2. অনিশ্চিত হোল্ডিং সময়কাল, একক স্টপ লস আকার নিয়ন্ত্রণ করতে অক্ষম। ক্ষতি সীমাবদ্ধ করতে মুনাফা লক্ষ্য বা সর্বোচ্চ হোল্ডিং সময়কাল সেট করতে পারেন।
  3. স্টপ লস খুব ঘন ঘন ট্রেন্ডিং বাজারে সক্রিয় হতে পারে। ট্রেন্ডিং অবস্থার উপর ভিত্তি করে পরামিতিগুলি সামঞ্জস্য বা ফিল্টার যোগ করার বিষয়ে বিবেচনা করুন।
  4. এটিআর সময়কাল, স্টপ লস মাল্টিপ্লাইয়ারের মতো পরামিতিগুলি প্রতীক বৈশিষ্ট্যগুলির ভিত্তিতে সেট করা উচিত, ডিফল্ট মানগুলি অন্ধভাবে ব্যবহার করা উচিত নয়।

অপ্টিমাইজেশান নির্দেশাবলী

  1. প্রবণতা সূচক যোগ করার কথা বিবেচনা করুন, বিপরীত প্রবণতা ট্রেড এড়ানোর জন্য প্রবণতা দিকের ট্রেডগুলি গ্রহণ করুন।
  2. স্টপ লস মাল্টিপ্লায়েন্টকে অস্থিরতার উপর ভিত্তি করে সামঞ্জস্য করুন, উচ্চ অস্থিরতার অবস্থার মধ্যে বৃহত্তর স্টপ করার অনুমতি দিন।
  3. সর্বাধিক হোল্ডিং সময় নির্ধারণ করুন, নির্দিষ্ট সময় অতিক্রম করার পর সক্রিয় স্টপ লস।
  4. স্টপ লস স্ট্র্যাটেজি যোগ করুন, ধীরে ধীরে স্টপ বাড়িয়ে দামের গতিতে।
  5. চিহ্নের বৈশিষ্ট্যগুলির উপর ভিত্তি করে এটিআর সময়ের পরামিতি কাস্টমাইজ করুন।

সিদ্ধান্ত

কৌশলটি স্পষ্ট এবং সহজ যুক্তিযুক্ত, অভিযোজনশীল এটিআর-ভিত্তিক স্টপ লস এবং ট্রেড সিগন্যালগুলির জন্য ইএমএর সাথে ঝুঁকি পরিচালনা করে। তবে এটি অপ্টিমাইজেশনের জন্য অনেক জায়গা সহ তুলনামূলকভাবে প্যাসিভ। এটিকে আরও সক্রিয় করার জন্য ট্রেন্ড বিচার, গতিশীল পরামিতি সমন্বয় যুক্ত করার বিষয়টি বিবেচনা করুন। সামগ্রিকভাবে এটি বিপরীত স্টপ লস কৌশলগুলির জন্য একটি ভাল ধারণা এবং টেম্পলেট হিসাবে কাজ করে, তবে পরামিতিগুলি অন্ধভাবে ডিফল্ট মান প্রয়োগের পরিবর্তে বিভিন্ন প্রতীকগুলির জন্য সুরক্ষিত করা উচিত।


/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 

// Inputs
a = input(1,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


xATR  = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy  = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

barcolor(barbuy  ? color.green : na)
barcolor(barsell ? color.red   : na)

strategy.entry("long",   true, when = buy  and time_cond)
strategy.entry("short", false, when = sell and time_cond)

আরো