
ইন্টেন্ট রিভার্স প্যাকেজিং নেটওয়ার্কের গড় মান কৌশল একটি ইন্টেন্ট রিভার্স ট্রেডিং কৌশল যা চলমান গড়ের উপর ভিত্তি করে। এই কৌশলটি দ্বি-সূচক চলমান গড়কে বেস হিসাব হিসাবে ব্যবহার করে এবং এর উপরে এবং নীচে একাধিক প্যাকেজিং নেটওয়ার্ক ব্যান্ড যুক্ত করে। যখন দাম প্যাকেজিং নেটওয়ার্কের ব্যান্ডকে স্পর্শ করে, তখন দিকনির্দেশের উপর নির্ভর করে পজিশনটি খালি বা খালি করে। যখন দাম সমতল হয়, তখন পজিশনটি বের করে দেয়।
এই কৌশলটি দ্বি-সূচক চলমান গড় (ডিইএমএ) ব্যবহার করে। দ্বি-সূচক চলমান গড় একটি চলমান গড় যা দামের পরিবর্তনের জন্য অত্যন্ত সংবেদনশীল। এর উপর ভিত্তি করে, কৌশলটি একটি সমান্তরাল প্যাকেজিং জোন গঠন করে। প্যাকেজিং জোনের পরিধি ব্যবহারকারী দ্বারা সেট করা হয়, প্রতিটি মূল্যের ব্যান্ডের মধ্যে নির্দিষ্ট শতাংশের ব্যবধান অনুসারে।
যখন দাম বাড়তে থাকে এবং এটি উপরের ব্যালেন্সের কাছাকাছি আসে, তখন এই কৌশলটি খালি হয়; যখন দাম কমতে থাকে এবং এটি নীচের ব্যালেন্সের কাছাকাছি আসে, তখন এই কৌশলটি আরও বেশি পজিশন নেয়। প্রতিটি নতুন দামের ব্যান্ডটি স্পর্শ করার পরে, এটি পজিশন বাড়ায়। যখন দামটি মুভিং ইভেনের কাছাকাছি ফিরে আসে, তখন এই কৌশলটি সমস্ত অবস্থান বন্ধ করে দেয়।
এই কৌশলটি মূল্যের অত্যধিক অস্থিরতাকে ক্যাপচার করে এবং বিপরীতমুখী হওয়ার সময় মুনাফার সাথে প্রস্থান করে, নিম্ন বা উচ্চ বিক্রয়ের লেনদেনের লক্ষ্য অর্জনের জন্য। এটি এমন বাজারের চক্রের জন্য প্রযোজ্য যেখানে বিটকয়েন এবং অন্যান্য ডিজিটাল মুদ্রাগুলির মতো সুস্পষ্ট গড় মূল্যের প্রত্যাবর্তনের বৈশিষ্ট্য রয়েছে।
প্যাকেজিং জোনের পরিধি যথাযথভাবে প্রশস্ত করে এবং দামের পরিবর্তনের জন্য ট্রিগার সংবেদনশীলতা বাড়িয়ে ঝুঁকি হ্রাস করা যেতে পারে। একই সাথে, চলমান গড় রেখার দৈর্ঘ্যের প্যারামিটারগুলিকে বিভিন্ন পর্যায়ের পরিস্থিতির সাথে খাপ খাইয়ে নেওয়া যায়।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
অপ্টিমাইজ করা চলমান গড় অ্যালগরিদম। বিভিন্ন ধরণের চলমান গড় সূচকের প্রভাব পরীক্ষা করা যেতে পারে।
গড় রেখার দৈর্ঘ্যের প্যারামিটারগুলি সামঞ্জস্য করুন। চক্রটি সংক্ষিপ্ত করা স্বল্পমেয়াদী মূল্য পরিবর্তনের জন্য আরও ভাল ক্যাপচার করতে পারে, তবে এটি গোলমালের লেনদেন বাড়াতে পারে।
প্যাকেজ নেটওয়ার্ক এলাকা প্যারামিটার অপ্টিমাইজ করুন। আপনি বিভিন্ন শতাংশ সেটিং পরীক্ষা করতে পারেন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে পারেন।
অতিরিক্ত স্টপ-লস কৌশল। একটি চলমান স্টপ বা প্রত্যাহারের স্টপ সেট করুন, যাতে একক ক্ষতি কার্যকরভাবে নিয়ন্ত্রণ করা যায়।
অতিরিক্ত ফিল্টারিং শর্ত। অন্যান্য সূচক সংকেতগুলির সাথে মিলিত হয়ে অযৌক্তিক পরিস্থিতিতে পজিশন খোলার অকার্যকর হওয়া এড়াতে।
ইচ্ছাকৃত বিপরীতমুখী পুনঃব্যবহারের নেটওয়ার্ক সমতুল্যতা কৌশলটি সমতুল্য মূল্যের চ্যানেল তৈরি করে কার্যকরভাবে মূল্যের বিপরীতমুখী সুযোগগুলি ক্যাপচার করে। এটি বিভিন্ন বাজারের পরিবেশে প্যারামিটারগুলিকে নমনীয়ভাবে সামঞ্জস্য করতে পারে। এই কৌশলটি কম লেনদেনের ব্যয় এবং উচ্চতর রিটার্নের সাথে একটি প্রস্তাবিত পরিমাণযুক্ত লেনদেনের কৌশল।
/*backtest
start: 2022-11-27 00:00:00
end: 2023-12-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Mean Reversion - Envelope Strategy", overlay=true )
// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A MEAN REVERSION SYSTEM THAT USES A MOVING AVERAGE AS BASE CALCULATION AND A % OF THIS MOVING AVERAGE TO CALCULATE THE ENVELOPE
// BY DEFAULT, THE SYSTEM WILL PLACE LONG ORDERS ON THE MOVING AVERAGE -5% PER ENVELOPE COUNT (5%, 10% AND SO ON...)
// YOU CAN ENABLE THE SHORT ORDERS THAT WILL FOLLOW THE SAME LOGIC ON THE OPPOSITE SIDE
// THE SYSTEM WILL CLOSE EVERY ONGOING TRADE WHEN THE PRICE RETURNS TO THE MEAN
// ---------------------------------------------
// ---------------- SETTINGS -------------------
src = input(close, "Moving Average Source", group = "Moving Average")
ma_window = input.int(5, "Moving Average Window", step = 1, group = "Moving Average")
ma_type = input.string('4. DEMA', "Moving Average Type", options=['1. SMA', '2. EMA', '3. RMA', '4. DEMA'], group = "Moving Average")
enveloppe_step = input.float(0.05, "Delta Per Enveloppe", step = 0.01, group = "Envelope")
envelope_count = input.int(5, "Envelope count", options = [1, 2, 3, 4, 5], group = "Envelope")
use_longs = input.bool(true, 'Use Long Orders ?', group = "Orders")
use_short = input.bool(false, 'Use Short Orders ?', group = "Orders")
// ---------------------------------------------
// -------------- INDICATORS -------------------
ma_funct() =>
if(ma_type == '1. SMA')
ta.sma(src, ma_window)
if(ma_type == '2. EMA')
ta.ema(src, ma_window)
if(ma_type == '3. RMA')
ta.rma(src, ma_window)
if(ma_type == '4. DEMA')
2 * ta.ema(src, ma_window) - ta.ema(ta.ema(src, ma_window), ma_window)
ma_base = ma_funct()
ma_high_1 = envelope_count > 0 ? ma_base * (1 + enveloppe_step) : na
ma_high_2 = envelope_count > 1 ? ma_base * (1 + enveloppe_step * 2) : na
ma_high_3 = envelope_count > 2 ? ma_base * (1 + enveloppe_step * 3) : na
ma_high_4 = envelope_count > 3 ? ma_base * (1 + enveloppe_step * 4) : na
ma_high_5 = envelope_count > 4 ? ma_base * (1 + enveloppe_step * 5) : na
ma_low_1 = envelope_count > 0 ? ma_base * (1 - enveloppe_step) : na
ma_low_2 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 2) : na
ma_low_3 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 3) : na
ma_low_4 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 4) : na
ma_low_5 = envelope_count > 0 ? ma_base * (1 - enveloppe_step * 5) : na
// ---------------------------------------------
// --------------- STRATEGY --------------------
if use_longs
if envelope_count > 0 and strategy.opentrades < 1
strategy.entry('long 1', strategy.long, limit=ma_low_1, qty=(strategy.equity / ma_low_1) * (1 / envelope_count))
if envelope_count > 1 and strategy.opentrades < 2
strategy.entry('long 2', strategy.long, limit=ma_low_2, qty=(strategy.equity / ma_low_2) * (1 / envelope_count))
if envelope_count > 2 and strategy.opentrades < 3
strategy.entry('long 3', strategy.long, limit=ma_low_3, qty=(strategy.equity / ma_low_3) * (1 / envelope_count))
if envelope_count > 3 and strategy.opentrades < 4
strategy.entry('long 4', strategy.long, limit=ma_low_4, qty=(strategy.equity / ma_low_4) * (1 / envelope_count))
if envelope_count > 4 and strategy.opentrades < 5
strategy.entry('long 5', strategy.long, limit=ma_low_5, qty=(strategy.equity / ma_low_5) * (1 / envelope_count))
if use_short
if envelope_count > 0 and strategy.opentrades < 1
strategy.entry('short 1', strategy.short, limit=ma_high_1, qty=(strategy.equity / ma_high_1) * (1 / envelope_count))
if envelope_count > 1 and strategy.opentrades < 2
strategy.entry('short 2', strategy.short, limit=ma_high_2, qty=(strategy.equity / ma_high_2) * (1 / envelope_count))
if envelope_count > 2 and strategy.opentrades < 3
strategy.entry('short 3', strategy.short, limit=ma_high_3, qty=(strategy.equity / ma_high_3) * (1 / envelope_count))
if envelope_count > 3 and strategy.opentrades < 4
strategy.entry('short 4', strategy.short, limit=ma_high_4, qty=(strategy.equity / ma_high_4) * (1 / envelope_count))
if envelope_count > 4 and strategy.opentrades < 5
strategy.entry('short 5', strategy.short, limit=ma_high_5, qty=(strategy.equity / ma_high_5) * (1 / envelope_count))
strategy.exit('close', limit=ma_base)
// ---------------------------------------------
// ------------------ PLOT ---------------------
ma_base_plot = plot(ma_base, title = "Base MA", color = color.orange, linewidth = 3, offset = 1)
ma_high_1_plot = plot(ma_high_1, title = "MA high 1", color = color.red, offset = 1)
ma_high_2_plot = plot(ma_high_2, title = "MA high 2", color = color.red, offset = 1)
ma_high_3_plot = plot(ma_high_3, title = "MA high 3", color = color.red, offset = 1)
ma_high_4_plot = plot(ma_high_4, title = "MA high 4", color = color.red, offset = 1)
ma_high_5_plot = plot(ma_high_5, title = "MA high 5", color = color.red, offset = 1)
ma_low_1_plot = plot(ma_low_1, title = "MA low 1", color = color.green, offset = 1)
ma_low_2_plot = plot(ma_low_2, title = "MA low 2", color = color.green, offset = 1)
ma_low_3_plot = plot(ma_low_3, title = "MA low 3", color = color.green, offset = 1)
ma_low_4_plot = plot(ma_low_4, title = "MA low 4", color = color.green, offset = 1)
ma_low_5_plot = plot(ma_low_5, title = "MA low 5", color = color.green, offset = 1)