এই কৌশলটি একটি অভিযোজিত ট্রেডিং সিস্টেম যা একাধিক প্রযুক্তিগত সূচক সমন্বয়ের মাধ্যমে বাজারের প্রবণতা ক্যাপচার করার জন্য অস্থিরতা এবং গতির সূচকগুলিকে একত্রিত করে। কৌশলটি বাজারের অস্থিরতা পর্যবেক্ষণের জন্য ATR সূচক, প্রবণতা গতির বিচার করার জন্য MACD ব্যবহার করে এবং একটি নমনীয় স্টপ-লস এবং লাভ গ্রহণের প্রক্রিয়া সহ ট্রেডিং সংকেতগুলি নিশ্চিত করার জন্য মূল্য গতির সূচকগুলিকে একত্রিত করে। সিস্টেমের শক্তিশালী অভিযোজনযোগ্যতা রয়েছে এবং বাজারের অবস্থার সাথে সামঞ্জস্য রেখে স্বয়ংক্রিয়ভাবে ট্রেডিং ফ্রিকোয়েন্সি এবং অবস্থান নিয়ন্ত্রণ সামঞ্জস্য করতে পারে।
কৌশলটি তার মূল ট্রেডিং যুক্তি হিসাবে একটি ট্রিপল সূচক সিস্টেমের উপর নির্ভর করেঃ প্রথমত, এটিআরটি ট্রেডিং সিদ্ধান্তের জন্য অস্থিরতার রেফারেন্স সরবরাহ করার জন্য বাজারের অস্থিরতার শর্তগুলি পরিমাপ করতে ব্যবহৃত হয়; দ্বিতীয়ত, এমএসিডি সূচকগুলির সোনার এবং মৃত্যুর ক্রসগুলি ট্রেন্ড টার্নিং পয়েন্টগুলি ক্যাপচার করতে ব্যবহৃত হয়, এমএসিডি দ্রুত এবং ধীর লাইন ক্রসওভারগুলি প্রধান ট্রেডিং ট্রিগার সংকেত হিসাবে ব্যবহৃত হয়; তৃতীয়ত, প্রবণতা শক্তি নিশ্চিত করার জন্য পূর্ববর্তী সময়ের তুলনায় মূল্যের পরিবর্তন পর্যবেক্ষণ করে যাচাইয়ের জন্য মূল্য গতির সূচকগুলি ব্যবহৃত হয়। সিস্টেমটি একটি প্রবণতা ফিল্টার হিসাবে একটি 50-দিনের চলমান গড় অন্তর্ভুক্ত করে, কেবলমাত্র যখন দাম চলমান গড়ের উপরে থাকে এবং যখন শর্ট পজিশনগুলি নীচে থাকে তখন দীর্ঘ পজিশনগুলি অনুমোদিত হয়। ওভারট্রেডিং এড়াতে, কৌশল সংকেত ন্যূন্যতম ট্রেডিং ব্যবধান এবং বিকল্পভাবে বিকল্প কার্যকরন প্রয়োগ
এই কৌশলটি একটি সু-ডিজাইন করা, যৌক্তিকভাবে কঠোর পরিমাণগত ট্রেডিং সিস্টেম যা একাধিক প্রযুক্তিগত সূচক ব্যবহারের মাধ্যমে বাজারের প্রবণতা কার্যকরভাবে ক্যাপচার করতে সক্ষম হয়। সিস্টেমটি ঝুঁকি নিয়ন্ত্রণ এবং বাণিজ্য সম্পাদনে বিশদ বিবেচনা করেছে, ভাল ব্যবহারিকতা দেখায়। যদিও কিছু সম্ভাব্য ঝুঁকি রয়েছে, প্রস্তাবিত অপ্টিমাইজেশান দিকগুলির মাধ্যমে কৌশলটির স্থায়িত্ব এবং লাভজনকতা উভয়ই আরও উন্নত হওয়ার আশা করা যেতে পারে।
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("[ETH] Volatility & Momentum Adaptive Strategy", shorttitle="Definitive 1 day Ethereum Signal", overlay=true, initial_capital=10000, currency=currency.USD) // === Input Parameters === // trade_size = input.float(5, title="Trade Size (ETH)") atr_length = input.int(8, minval=1, title="ATR Length") macd_fast = input.int(8, minval=1, title="MACD Fast Length") macd_slow = input.int(7, minval=1, title="MACD Slow Length") macd_signal = input.int(9, minval=1, title="MACD Signal Length") momentum_length = input.int(37, title="Momentum Length") stop_loss_percent = input.float(9.9, title="Stop Loss Percentage (%)") take_profit_percent = input.float(9.0, title="Take Profit Percentage (%)") alternate_signal = input.bool(true, title="Alternate Buy/Sell Signals") // === Indicators === // // ATR to measure volatility atr = ta.atr(atr_length) // MACD for trend momentum [macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal) macd_cross_up = ta.crossover(macd_line, signal_line) macd_cross_down = ta.crossunder(macd_line, signal_line) // Momentum momentum = ta.mom(close, momentum_length) // === Signal Control Variables === // var bool last_signal_long = na var int last_trade_bar = na min_bars_between_trades = 5 // Adjust for minimal trade frequency control time_elapsed = na(last_trade_bar) or (bar_index - last_trade_bar) >= min_bars_between_trades // === Buy and Sell Conditions === // // Buy when: buy_signal = (macd_cross_up and momentum > 0 and close > ta.sma(close, 50) and time_elapsed) // Sell when: sell_signal = (macd_cross_down and momentum < 0 and close < ta.sma(close, 50) and time_elapsed) // Enforce alternate signals if selected if alternate_signal buy_signal := buy_signal and (na(last_signal_long) or not last_signal_long) sell_signal := sell_signal and (not na(last_signal_long) and last_signal_long) // === Trade Execution === // // Buy Position if (buy_signal) if strategy.position_size < 0 strategy.close("Short") strategy.entry("Long", strategy.long, qty=trade_size) last_signal_long := true last_trade_bar := bar_index // Sell Position if (sell_signal) if strategy.position_size > 0 strategy.close("Long") strategy.entry("Short", strategy.short, qty=trade_size) last_signal_long := false last_trade_bar := bar_index // === Stop Loss and Take Profit === // if strategy.position_size > 0 long_take_profit = strategy.position_avg_price * (1 + take_profit_percent / 100) long_stop_loss = strategy.position_avg_price * (1 - stop_loss_percent / 100) strategy.exit("TP/SL Long", from_entry="Long", limit=long_take_profit, stop=long_stop_loss) if strategy.position_size < 0 short_take_profit = strategy.position_avg_price * (1 - take_profit_percent / 100) short_stop_loss = strategy.position_avg_price * (1 + stop_loss_percent / 100) strategy.exit("TP/SL Short", from_entry="Short", limit=short_take_profit, stop=short_stop_loss) // === Visual Signals === // plotshape(series=buy_signal and time_elapsed, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sell_signal and time_elapsed, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")