UT বট সূচকের উপর ভিত্তি করে ATR মুভিং স্টপ লস কৌশল


সৃষ্টির তারিখ: 2024-03-11 11:17:33 অবশেষে সংশোধন করুন: 2024-03-11 11:17:33
অনুলিপি: 0 ক্লিকের সংখ্যা: 2014
1
ফোকাস
1617
অনুসারী

UT বট সূচকের উপর ভিত্তি করে ATR মুভিং স্টপ লস কৌশল

ওভারভিউ

এই কৌশলটি কোয়ান্টনম্যাড দ্বারা নির্মিত ইউটি বট সূচকগুলির উপর ভিত্তি করে তৈরি করা হয়েছে, যা মোবাইল স্টপ লস এর সাথে মিলিত হয়েছে। মূল কোডটি @Yo_adriiiiaan দ্বারা লিখিত হয়েছে, @HPotter দ্বারা সংশোধন করা হয়েছে। এই কৌশলটি LuxAlgo এর স্মার্ট মানি কনসেপ্টের সাথে কাজ করবে। এই কৌশলটি বর্তমানে পরীক্ষামূলক পর্যায়ে রয়েছে।

কৌশল নীতি

এই কৌশলটির মূল নীতিগুলি হলঃ

  1. যখন ক্লোজ-আপ মূল্য ৫০ দিনের সরল চলমান গড়ের চেয়ে বেশি হয়, তখন একাধিক লেনদেন করা হয়।
  2. একাধিক পজিশনের জন্য, একটি চলমান স্টপ প্রাইস সেট করুন। চলমান স্টপ প্রাইসটি বর্তমান ক্লোজ-আপ মূল্যের 80% ((1-20%) । চলমান স্টপ প্রাইসটি দাম বাড়ার সাথে সাথে উপরে চলে যায়, তবে নীচে যায় না, যার ফলে মুনাফা রক্ষা করার ভূমিকা পালন করে।
  3. খালি পজিশনের জন্য, একইভাবে একটি চলমান স্টপ মূল্য সেট করুন। চলমান স্টপ মূল্য বর্তমান ক্লোজিং মূল্যের 120% ((1 + 20%) । চলমান স্টপ মূল্য মূল্যের সাথে নেমে যাবে, তবে এটি বাড়বে না।
  4. এটিআর (Average True Range) ব্যবহার করে চলমান ক্ষতির জন্য রেফারেন্স ভিত্তি হিসাবে। এটিআর চলমান ক্ষতির মূল্য গণনা করার পদ্ধতিটি হলঃ পূর্ববর্তী এটিআর চলমান ক্ষতির মূল্য এবং বর্তমান ক্লোজিং মূল্য-এটিআর যখন এটিআর উপরে চলে যায়*Key Value) এর বৃহত্তর মান; নিচের দিকে চলার সময়, পূর্ববর্তী ATR-এর স্টপ-অফ-প্রাইস এবং ((বর্তমান ক্লোজ-অফ-প্রাইস + ATR*Key Value) এবং Key Value এর মধ্যে ক্ষুদ্রতম। Key Value হল একটি প্যারামিটার যা ব্যবহারকারী সেট করে যা মোবাইল স্টপ লস এর সংবেদনশীলতা নিয়ন্ত্রণ করে।
  5. এটিআর মুভিং স্টপ প্রাইসের ব্রেকডাউনের উপর ভিত্তি করে, বর্তমান পজিশন হোল্ডিংয়ের দিকটি বিচার করুন। যখন দামটি এটিআর মুভিং স্টপ প্রাইসের উপরে উঠে যায়, তখন একাধিক পজিশন ধরে রাখুন; যখন দামটি এটিআর মুভিং স্টপ প্রাইসের নীচে উঠে যায়, তখন খালি পজিশন ধরে রাখুন; অন্যথায় বর্তমান পজিশন হোল্ডিংয়ের অবস্থা অপরিবর্তিত রাখুন।

সামর্থ্য বিশ্লেষণ

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

ঝুঁকি বিশ্লেষণ

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

অপ্টিমাইজেশান দিক

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

সারসংক্ষেপ

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

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

কৌশল সোর্স কোড
/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")