সিস্টেমটি নিম্নলিখিত ধাপগুলি অনুসরণ করেঃ
14 পেরিওডের ATR গণনা করুন এবং এটি বন্ধের মূল্য দ্বারা ভাগ করে এটিকে স্বাভাবিক করুন।
নরমালাইজড এটিআর-এর ১০০ দিনের সহজ চলমান গড় (এসএমএ) গণনা করুন।
১০০ দিনের এসএমএ-র তুলনায় নরমালাইজড এটিআর-এর অনুপাত গণনা করুন।
অনুপাতের বিপরীতের উপর ভিত্তি করে লক্ষ্যমাত্রা লিভারেজ নির্ধারণ করুন (2/ratio) ।
টার্গেট লিভারেজকে ৫ দিয়ে গুণ করে খোলা লেনদেনের লক্ষ্য সংখ্যা গণনা করুন।
গ্রাফিক্যাল টার্গেট এবং বর্তমান ওপেন ট্রেড।
ক্রয় করার সম্ভাবনা আছে কিনা তা পরীক্ষা করুন (যদি বর্তমান খোলা ট্রেডগুলি লক্ষ্যমাত্রার চেয়ে কম হয়) অথবা বন্ধ করুন (যদি বর্তমান খোলা ট্রেডগুলি লক্ষ্যমাত্রা + 1 এর চেয়ে বেশি হয়) ।
যদি সুযোগ থাকে, তাহলে লং ট্রেড খুলুন এবং ওপেন ট্রেডস অ্যারেতে যোগ করুন।
যদি openTrades অ্যারেতে ট্রেড এবং ট্রেড বন্ধ করার সুযোগ থাকে, তাহলে অ্যারেটি রেফারেন্স করে এবং অ্যারে থেকে সরিয়ে সর্বাধিক সাম্প্রতিক ট্রেড বন্ধ করুন।
এই সিস্টেমটি বাজারের অস্থিরতার উপর ভিত্তি করে খোলা ট্রেড এবং লিভারেজকে গতিশীলভাবে সামঞ্জস্য করে প্রবণতা ক্যাপচার করার লক্ষ্য রাখে। এটি আরও ভাল নিয়ন্ত্রণের জন্য খোলা ট্রেডগুলি ট্র্যাক করতে অ্যারে ব্যবহার করে।
এই কৌশলটির সুবিধাঃ
বাজারের অস্থিরতার পরিবর্তনের উপর ভিত্তি করে লিভারেজ এবং পজিশনের আকারের গতিশীল সমন্বয় কার্যকরভাবে ঝুঁকি পরিচালনা করতে পারে।
টার্গেট পজিশনের আকার গণনা করার জন্য ATR সূচক ব্যবহার করা, যা বাজারের অস্থিরতাকে প্রতিফলিত করে, একটি যুক্তিসঙ্গত পছন্দ।
একাধিক পজিশনের সাথে পিরামিডিং ট্রেন্ড থেকে লাভবান হতে পারে।
অ্যারেতে প্রতিটি ট্রেড রেকর্ডিং ট্রেড খোলার এবং বন্ধের সুস্পষ্ট নিয়ন্ত্রণ সক্ষম করে।
এই কৌশলটির কয়েকটি পরামিতি রয়েছে এবং এটি বাস্তবায়ন ও পরিচালনা করা সহজ।
যুক্তি পরিষ্কার এবং কোড কাঠামো সহজ অপ্টিমাইজেশন এবং পুনরাবৃত্তি জন্য ভাল সংগঠিত হয়।
এই কৌশলের ঝুঁকি:
ATR শুধুমাত্র অতীতের অস্থিরতা প্রতিফলিত করে, ভবিষ্যতে পরিবর্তনগুলি পূর্বাভাস দিতে অক্ষম, যা অনুপযুক্ত লিভারেজ সমন্বয় হতে পারে।
যখন প্রবণতা বিপরীতমুখী হয় তখন পিরামিডিং ক্ষতির সৃষ্টি করতে পারে।
অ্যারে রেকর্ডিং ট্রেড শুধুমাত্র সহজ খোলা / বন্ধ অপারেশন প্রযোজ্য। জটিল লজিক জন্য আরো জটিল তথ্য কাঠামো প্রয়োজন।
টার্গেট লিভারেজ এবং পজিশনের আকারের সেটিংস স্থির পরামিতিগুলির পরিবর্তে প্রতীকের নির্দিষ্টতার ভিত্তিতে সামঞ্জস্য করা প্রয়োজন।
একক সূচকের উপর নির্ভর করা বিভ্রান্তিকর হতে পারে। অন্যান্য অস্থিরতা সূচক বা মেশিন লার্নিং অ্যালগরিদম দৃঢ়তা উন্নত করতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
স্টপ লস স্তরে পৌঁছানোর সময় স্টপ লসকে সক্রিয়ভাবে কট লস যোগ করুন।
বিভিন্ন এটিআর সময়কাল পরীক্ষা করে সূচক পরামিতিগুলি অনুকূল করা।
নির্দিষ্ট পরিমাণে প্রবেশের মতো অন্যান্য প্রবেশের কৌশলগুলি চেষ্টা করুন এবং ফলাফলগুলি পরীক্ষা করুন।
সংমিশ্রণ ব্যবহারের জন্য বোলিঞ্জার ব্যান্ডস ওয়াইডথ, কেডি, আরএসআই ইত্যাদির মতো অন্যান্য অস্থিরতা পরিমাপ যোগ করুন।
সহজ মসৃণতার পরিবর্তে অস্থিরতা পূর্বাভাস দিতে মেশিন লার্নিং মডেল ব্যবহার করুন।
পজিশনের আকারের গণনা অপ্টিমাইজ করুন, যেমন ATR মাল্টিপল বা ভোল্টেবিলিটি ফাংশন ব্যবহার করে।
কৌশল বিশ্লেষণ এবং অপ্টিমাইজেশনের জন্য প্রবেশ মূল্য, সময় ইত্যাদির মতো আরও প্রবেশের বিবরণ রেকর্ড করুন।
সর্বোত্তম প্যারামিটার সেট খুঁজে পেতে স্বয়ংক্রিয় অপ্টিমাইজেশনের জন্য প্যারামিটার অপ্টিমাইজেশন যুক্ত করুন।
এই কৌশলটি প্রবণতার সময় ঝুঁকি এক্সপোজার পরিচালনা করতে এটিআর-এর উপর ভিত্তি করে গতিশীলভাবে লিভারেজ এবং অবস্থানের আকার সামঞ্জস্য করে এবং এর কিছু সুবিধা রয়েছে। তবে প্যারামিটার সেটিং অসুবিধা এবং সূচক অপ্টিমাইজেশনের জায়গার মতো চ্যালেঞ্জগুলি আরও উন্নতির জন্য রয়ে গেছে। সামগ্রিকভাবে, যুক্তিটি পরিষ্কার এবং পরিচালনা এবং অপ্টিমাইজ করা সহজ, গভীর গবেষণা এবং প্রয়োগের যোগ্য।
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L - Risk Adjusted Leveraging", overlay=false, pyramiding=25, default_qty_value=20, initial_capital=20000, default_qty_type=strategy.percent_of_equity,process_orders_on_close=false, calc_on_every_tick=false) atr = ta.atr(14) / close avg_atr = ta.sma(atr,100) ratio = atr / avg_atr targetLeverage = 2 / ratio targetOpentrades = 5 * targetLeverage plot(targetOpentrades) plot(strategy.opentrades) isBuy = strategy.opentrades < targetOpentrades isClose = strategy.opentrades > targetOpentrades + 1 var string[] openTrades = array.new_string(0) if(isBuy) strategy.entry("Buy"+str.tostring(array.size(openTrades)),strategy.long) array.push(openTrades, "Buy" + str.tostring(array.size(openTrades))) if(isClose) if array.size(openTrades) > 0 strategy.close(array.get(openTrades, array.size(openTrades) - 1)) array.pop(openTrades)