এই কৌশলটির মূল ধারণা হল একাধিক এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ) এর ক্রসওভারের উপর ভিত্তি করে ট্রেডিং সিগন্যাল তৈরি করা। যখন স্বল্পমেয়াদী ইএমএ নীচে থেকে দীর্ঘমেয়াদী ইএমএ অতিক্রম করে তখন এটি দীর্ঘ হয় এবং যখন স্বল্পমেয়াদী ইএমএ দীর্ঘমেয়াদী ইএমএর নীচে অতিক্রম করে তখন অবস্থানগুলি বন্ধ করে দেয়। এই কৌশলটি একাধিক ইএমএ সময়কাল কনফিগার করার অনুমতি দেয় এবং প্রতিটি ইএমএ স্বাধীনভাবে সক্ষম করা যেতে পারে। কৌশলটি সমস্ত সক্ষম ইএমএতে ক্রসওভার ট্রেড করবে।
মাল্টি টাইমফ্রেম ডায়নামিক ইএমএ ট্রেডিং কৌশল
কৌশলটি 8 দিনের EMA সময়কাল নির্ধারণ করে - 8 দিন, 13 দিন, 21 দিন, 34 দিন, 55 দিন, 89 দিন, 144 দিন এবং 233 দিন। এই EMAগুলি স্বাধীনভাবে সক্ষম বা নিষ্ক্রিয় করা যেতে পারে।
এটি দীর্ঘ মেয়াদী ইএমএ অতিক্রম করার সময় দীর্ঘ সংকেত উৎপন্ন করে। এটি দীর্ঘ মেয়াদী ইএমএ অতিক্রম করার সময় দীর্ঘ মেয়াদী ইএমএ অতিক্রম করে। এটি শীর্ষ থেকে দীর্ঘ মেয়াদী ইএমএ অতিক্রম করার সময় দীর্ঘ মেয়াদী ইএমএ অতিক্রম করার সময় প্রস্থান সংকেত উৎপন্ন করে। সুতরাং যদি দুটি ইএমএ সক্ষম করা হয়, তবে সংক্ষিপ্ত ইএমএ > দীর্ঘ ইএমএ দীর্ঘ সংকেত, সংক্ষিপ্ত ইএমএ < দীর্ঘ ইএমএ প্রস্থান সংকেত।
উদাহরণস্বরূপ, যদি ৫৫ দিনের ইএমএ এবং ৮৯ দিনের ইএমএ সক্ষম করা হয়, তবে ৫৫ দিনের ইএমএ ৮৯ দিনের ইএমএ অতিক্রম করলে কৌশলটি দীর্ঘ হয় এবং ৫৫ দিনের ইএমএ ৮৯ দিনের ইএমএ অতিক্রম করার পরে বেরিয়ে আসে। এটি কৌশলটিকে ব্যবহার করা ইএমএ সংমিশ্রণগুলিকে গতিশীলভাবে সামঞ্জস্য করার অনুমতি দেয়, দীর্ঘতর সময়সীমার থেকে স্বল্পতর বা বিপরীত দিকে স্যুইচ করে।
পজিশনের আকার নির্ধারণ করা হয় অ্যাকাউন্ট ইক্যুইটি দ্বারা ভাগ করা close দ্বারা ভাগ করা enabled EMAs এর সংখ্যা দ্বারা। এটি নিশ্চিত করে যে প্রতিটি EMA ক্রসওভারে পজিশনের আকার সমান।
ইএমএকে অন্যান্য সূচকগুলির সাথে একত্রিত করার কথা বিবেচনা করুন যেমন সংকেতগুলি ফিল্টার করার জন্য চ্যানেল বা দোলক, বা প্রবণতা এবং বিপরীত সূচকগুলি অন্তর্ভুক্ত করুন। এছাড়াও ইএমএ পরামিতিগুলি অপ্টিমাইজ করা খুব গুরুত্বপূর্ণ, বিভিন্ন বাজারের জন্য মিটিং প্রয়োজন।
কৌশলটি বেশ কয়েকটি দিক থেকে অপ্টিমাইজ করা যেতে পারেঃ
সেরা EMA সমন্বয় খুঁজে পেতে প্যারামিটার স্ক্যানিং এবং ওয়াক ফরওয়ার্ড বিশ্লেষণের মাধ্যমে EMA পরামিতিগুলি অপ্টিমাইজ করুন।
মিথ্যা সংকেত এড়াতে EMA ক্রসওভারে ফিল্টার শর্ত যুক্ত করুন যেমন ভলিউম ফিল্টার, ভোলাটিলিটি ফিল্টার ইত্যাদি।
সমন্বয়ের সুবিধার্থে এটিকে এমএসিডি, কেডিজে, বোলিংজার ব্যান্ডের মতো অন্যান্য সূচকগুলির সাথে একত্রিত করুন।
বাজারের অস্থিরতা বা প্রবণতা শক্তির উপর ভিত্তি করে প্রতিটি EMA-তে অবস্থান আকারকে গতিশীলভাবে সামঞ্জস্য করুন।
সর্বোত্তম ঝুঁকি-প্রতিদান অনুপাত অর্জনের জন্য স্টপ লস এবং লাভের মাত্রা অপ্টিমাইজ করুন।
সামগ্রিকভাবে, এটি একটি খুব সহজ এবং সরল কৌশল যা স্বল্প ও মাঝারি মেয়াদী প্রবণতা ধরার জন্য ইএমএ ক্রসওভার থেকে সংকেত উত্পন্ন করে। এর প্রধান সুবিধা হ'ল ট্রেডারদের তাদের জন্য উপযুক্ত ইএমএ নির্বাচন করার অনুমতি দেওয়ার জন্য উচ্চ কনফিগারিবিলিটি এবং নমনীয়তা। তবে ইএমএ একা সহজেই মিথ্যা সংকেত দিতে পারে যা সবচেয়ে বড় ঝুঁকি। অন্যান্য সূচক এবং পরামিতি অপ্টিমাইজেশনের সাথে একত্রিত হয়ে আরও ভাল ট্রেডিং পারফরম্যান্সের দিকে পরিচালিত করতে পারে।
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("EMA Fan", shorttitle = "EMA Fan", overlay=true) // Revision: 1 // Author: @ToS_MavericK buyprice = 0.0 buyprice := buyprice[1] // === INPUT SMA === EMA1 = input(8) EMA2 = input(13) EMA3 = input(21) EMA4 = input(34) EMA5 = input(55) EMA6 = input(89) EMA7 = input(144) EMA8 = input(233) EnableEMA1 = input(true) EnableEMA2 = input(true) EnableEMA3 = input(true) EnableEMA4 = input(true) EnableEMA5 = input(true) EnableEMA6 = input(true) EnableEMA7 = input(true) EnableEMA8 = input(true) //Profit = input(defval = 5, type = integer, title = "Profit", minval = 1, step = 1) //StopLoss = input(defval = 15, type = integer, title = "StopLoss", minval = 1, step = 1) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2012) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2012) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === SERIES SETUP === vEMA1 = ema(close, EMA1) vEMA2 = ema(close, EMA2) vEMA3 = ema(close, EMA3) vEMA4 = ema(close, EMA4) vEMA5 = ema(close, EMA5) vEMA6 = ema(close, EMA6) vEMA7 = ema(close, EMA7) vEMA8 = ema(close, EMA8) count = -1 if (EnableEMA1 == true) count := count + 1 if (EnableEMA2 == true) count := count + 1 if (EnableEMA3 == true) count := count + 1 if (EnableEMA4 == true) count := count + 1 if (EnableEMA5 == true) count := count + 1 if (EnableEMA6 == true) count := count + 1 if (EnableEMA7 == true) count := count + 1 if (EnableEMA8 == true) count := count + 1 // set position size Amount = 1 / (close * count) // === EXECUTION === strategy.entry("EMA1", strategy.long, qty = Amount, when = window() and crossover(vEMA1,vEMA2) and EnableEMA1 and EnableEMA2) strategy.close("EMA1", time > finish or crossunder(vEMA1,vEMA2)) strategy.entry("EMA2", strategy.long, qty = Amount, when = window() and crossover(vEMA2,vEMA3) and EnableEMA2 and EnableEMA3) strategy.close("EMA2", time > finish or crossunder(vEMA2,vEMA3)) strategy.entry("EMA3", strategy.long, qty = Amount, when = window() and crossover(vEMA3,vEMA4) and EnableEMA3 and EnableEMA4) strategy.close("EMA3", time > finish or crossunder(vEMA3,vEMA4)) strategy.entry("EMA4", strategy.long, qty = Amount, when = window() and crossover(vEMA4,vEMA5) and EnableEMA4 and EnableEMA5) strategy.close("EMA4", time > finish or crossunder(vEMA4,vEMA5)) strategy.entry("EMA5", strategy.long, qty = Amount, when = window() and crossover(vEMA5,vEMA6) and EnableEMA5 and EnableEMA6) strategy.close("EMA5", time > finish or crossunder(vEMA5,vEMA6)) strategy.entry("EMA6", strategy.long, qty = Amount, when = window() and crossover(vEMA6,vEMA7) and EnableEMA6 and EnableEMA7) strategy.close("EMA6", time > finish or crossunder(vEMA6,vEMA7)) strategy.entry("EMA7", strategy.long, qty = Amount, when = window() and crossover(vEMA7,vEMA8) and EnableEMA7 and EnableEMA8) strategy.close("EMA7", time > finish or crossunder(vEMA7,vEMA8)) plot(vEMA1, title = 'EMA1', color = red, linewidth = 2, style = line) // plot FastMA plot(vEMA2, title = 'EMA2', color = orange, linewidth = 2, style = line) // plot SlowMA plot(vEMA3, title = 'EMA3', color = yellow, linewidth = 2, style = line) // plot SlowMA plot(vEMA4, title = 'EMA4', color = green, linewidth = 2, style = line) // plot SlowMA plot(vEMA5, title = 'EMA5', color = teal, linewidth = 2, style = line) // plot SlowMA plot(vEMA6, title = 'EMA6', color = blue, linewidth = 2, style = line) // plot SlowMA plot(vEMA7, title = 'EMA7', color = maroon, linewidth = 2, style = line) // plot SlowMA plot(vEMA8, title = 'EMA8', color = white, linewidth = 2, style = line) // plot SlowMA //plot(long_stop, title = 'High-ATR', color = red, linewidth = 2, style = line) // plot SlowMA //plot(short_stop, title = 'Low+ATR', color = green, linewidth = 2, style = line) // plot SlowMA