এটি একটি বুদ্ধিমান ঘূর্ণন কৌশল যা নির্দিষ্ট সময়ের মধ্যে দীর্ঘ-স্বল্প ঘূর্ণন ট্রেডিংয়ের মাধ্যমে রিটার্ন তৈরি করতে চায়। কৌশলটি একটি নমনীয় অবস্থান পরিচালনার প্রক্রিয়া ব্যবহার করে যা ঝুঁকি নিয়ন্ত্রণ ফাংশন অন্তর্ভুক্ত করার সময় বাজারের অবস্থার সাথে স্বয়ংক্রিয়ভাবে ট্রেডিং দিক সামঞ্জস্য করতে পারে। এটি দ্বি-দিকের ট্রেডিং এবং ঐচ্ছিক সুইং ট্রেডিং মোড সমর্থন করে, শক্তিশালী অভিযোজনযোগ্যতা প্রদর্শন করে।
কৌশলটি প্রাথমিকভাবে সময়কাল এবং অবস্থান স্থিতির মাধ্যমে ট্রেডিং নিয়ন্ত্রণ করে। প্রথমত, ইনঅ্যাক্টিভপেরিওড (()) ফাংশনটি নির্ধারণ করে যে ট্রেডিং শেষ 500 বারের কার্যকর ট্রেডিং ব্যবধানের মধ্যে রয়েছে কিনা। কার্যকর ব্যবধানের মধ্যে, কৌশলটি অবস্থান স্থিতি (পজিশনহেল্ড), হোল্ড সময় (বারহেল্ড), এবং বিরতি সময় (বারসপোজড) এর মতো ভেরিয়েবলগুলির উপর ভিত্তি করে ট্রেডিং ক্রিয়াগুলি সিদ্ধান্ত নেয়। যখন সুইং ট্রেডিং মোড সক্ষম করা হয়, তখন কৌশলটি দীর্ঘ এবং সংক্ষিপ্ত দিকের মধ্যে দ্রুত ঘোরাফেরা করে; যখন অক্ষম করা হয়, তখন অবস্থানগুলি 3 টি সময়ের পরে বন্ধ হয়ে যায় এবং নতুন ট্রেডিং সুযোগের জন্য অপেক্ষা করে।
এই কৌশলটি সময়কাল নিয়ন্ত্রণ এবং দীর্ঘ-স্বল্প ঘূর্ণন মাধ্যমে বাজারের রিটার্ন অর্জন করে, শক্তিশালী নমনীয়তা এবং অভিযোজনযোগ্যতা প্রদর্শন করে। যদিও কিছু ঝুঁকি বিদ্যমান, যুক্তিসঙ্গত অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণ ব্যবস্থাগুলির মাধ্যমে কৌশলটির স্থিতিশীলতা এবং লাভজনকতা উল্লেখযোগ্যভাবে উন্নত করা যেতে পারে। মূল সুবিধাটি এর সহজ তবে কার্যকর ট্রেডিং লজিকের মধ্যে রয়েছে, যা এটিকে আরও অপ্টিমাইজেশন এবং সম্প্রসারণের জন্য একটি ভিত্তি কৌশল হিসাবে উপযুক্ত করে তোলে।
/*backtest start: 2024-10-12 00:00:00 end: 2024-11-11 00:00:00 period: 4h basePeriod: 4h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Tickerly Test Strategy", overlay=true) // Inputs longEnabled = input.bool(true, "Enable Long Trades") shortEnabled = input.bool(true, "Enable Short Trades") swingEnabled = input.bool(false, "Enable Swing Trading") // Variables var positionHeld = 0 var barsHeld = 0 var barsPaused = 0 var lastAction = "none" // Function to determine if we're in the last 500 bars inActivePeriod() => barIndex = bar_index lastBarIndex = last_bar_index barIndex >= (lastBarIndex - 499) // Main strategy logic if inActivePeriod() if swingEnabled if positionHeld == 0 and barstate.isconfirmed if lastAction != "long" strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 lastAction := "long" else strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 lastAction := "short" if positionHeld != 0 barsHeld += 1 if barsHeld >= 2 if positionHeld == 1 strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 lastAction := "short" else strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 lastAction := "long" else if positionHeld == 0 and barsPaused >= 1 and barstate.isconfirmed if longEnabled and shortEnabled if lastAction != "long" strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 barsPaused := 0 lastAction := "long" else strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 barsPaused := 0 lastAction := "short" else if longEnabled strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 barsPaused := 0 lastAction := "long" else if shortEnabled strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 barsPaused := 0 lastAction := "short" if positionHeld != 0 barsHeld += 1 if barsHeld >= 3 strategy.close_all() positionHeld := 0 barsHeld := 0 barsPaused := 0 // Reset pause counter when exiting a position else barsPaused += 1 // Plotting active period for visual confirmation plot(inActivePeriod() ? 1 : 0, "Active Period", color=color.new(color.blue, 80), style=plot.style_areabr)