এই কৌশলটি স্বয়ংক্রিয় লং এবং শর্ট পজিশন অর্জনের জন্য ডাবল ALMA চলমান গড় রেখাগুলির গোল্ডেন ক্রস এবং ডেড ক্রস সংকেতগুলির উপর ভিত্তি করে, MACD সূচকের দীর্ঘ এবং সংক্ষিপ্ত সংকেতগুলির সাথে মিলিত। কৌশলটি 4 ঘন্টা বা তার বেশি সময়সীমার জন্য উপযুক্ত, এবং পরীক্ষার ডেটা হল BNB/USDT যা 2017 থেকে বর্তমান পর্যন্ত, একটি কমিশন হার 0.03% এ সেট করা হয়েছে।
এই কৌশলটি ডাবল মুভিং গড় তৈরি করতে ALMA থেকে নির্মিত দ্রুত এবং ধীর লাইন ব্যবহার করে। দ্রুত লাইন দৈর্ঘ্য 20 এবং ধীর লাইন 40, উভয়ই 0.9 এর একটি অফসেট এবং 5 এর একটি মান বিচ্যুতি গ্রহণ করে। যখন দ্রুত লাইন ধীর লাইনের উপর দিয়ে যায়, তখন একটি দীর্ঘ সংকেত উত্পন্ন হয়। যখন দ্রুত লাইন ধীর লাইনের নীচে অতিক্রম করে, তখন একটি সংক্ষিপ্ত সংকেত উত্পন্ন হয়।
একই সময়ে, কৌশলটি এমএসিডি সূচকের হিস্টোগ্রাম সংকেতকে অন্তর্ভুক্ত করে। শুধুমাত্র যখন এমএসিডি হিস্টোগ্রাম ইতিবাচক (উপরে) হয়, তখন দীর্ঘ সংকেতটি বৈধ; শুধুমাত্র যখন এমএসিডি হিস্টোগ্রাম নেতিবাচক (হ্রাস) হয়, তখন সংক্ষিপ্ত সংকেতটি বৈধ।
কৌশলটি লাভ এবং স্টপ লস শর্তও নির্ধারণ করে। লং লস লাভ 2 বার এবং স্টপ লস 0.2 বার; শর্ট লস লাভ 0.05 বার এবং স্টপ লস 1 বার।
কৌশলটি ডাবল চলমান গড়ের প্রবণতা রায় এবং এমএসিডি সূচকের শক্তি রায়কে একত্রিত করে, যা কার্যকরভাবে মিথ্যা সংকেতগুলি ফিল্টার করতে পারে এবং প্রবেশের নির্ভুলতা উন্নত করতে পারে। মুনাফা গ্রহণ এবং স্টপ লস সেটিংস লাভের সর্বাধিক লকিং এবং বিশাল ক্ষতি এড়াতে যুক্তিসঙ্গত।
২০১৭ সাল থেকে ব্যাকটেস্টের ডেটা গ্রহণ করা হয়েছে, যা একাধিক ষাঁড় এবং ভালুক রূপান্তর চক্রকে কভার করে। কৌশলটি এখনও সময়কালে ভাল পারফর্ম করে। এটি প্রমাণ করে যে কৌশলটি বাজারের রৈখিকতা এবং অ-রৈখিকতার বৈশিষ্ট্য উভয়ের সাথে খাপ খায়।
এই কৌশল নিম্নলিখিত ঝুঁকি আছেঃ
সমাধান:
কৌশলটি নিম্নলিখিত দিকগুলিতেও অপ্টিমাইজ করা যেতে পারেঃ
কৌশলটি সফলভাবে চলমান গড়ের প্রবণতা রায় এবং এমএসিডির সহায়ক রায়কে একত্রিত করে এবং যুক্তিসঙ্গত লাভ এবং স্টপ লস সেট করে, যা বিভিন্ন বাজারের অবস্থার মধ্যে স্থিতিশীল রিটার্ন অর্জন করতে পারে। পরামিতি সেটিংসের ক্রমাগত অপ্টিমাইজেশান, অতিরিক্ত ফিল্টারিং শর্ত ইত্যাদি যোগ করে কৌশলটির স্থিতিশীলতা এবং লাভজনকতা আরও বাড়ানো যেতে পারে।
/*backtest start: 2023-11-04 00:00:00 end: 2023-12-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy(title = "Full Crypto Swing Strategy ALMA Cross", overlay = true, pyramiding=1,initial_capital = 1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.03) //time condition fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2010, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2031, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = time >= startDate and time <= finishDate UseHAcandles = input(false, title="Use Heikin Ashi Candles in Algo Calculations") haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low //alma fast and slow src = haClose windowsize = input(title="Length Size Fast", type=input.integer, defval=20) windowsize2 = input(title="Length Size Slow", type=input.integer, defval=40) offset = input(title="Offset", type=input.float, defval=0.9, step=0.05) sigma = input(title="Sigma", type=input.float, defval=5) outfast=alma(src, windowsize, offset, sigma) outslow=alma(src, windowsize2, offset, sigma) //macd fast_length = input(title="Fast Length", type=input.integer, defval=6) slow_length = input(title="Slow Length", type=input.integer, defval=25) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) // Calculating fast_ma = ema(src, fast_length) slow_ma = ema(src, slow_length) macd = fast_ma - slow_ma signal = ema(macd, signal_length) hist = macd - signal long=crossover(outfast,outslow) and hist > hist[1] and time_cond short=crossunder(outfast,outslow) and hist < hist[1] and time_cond takeProfit_long=input(2.0, step=0.005) stopLoss_long=input(0.2, step=0.005) takeProfit_short=input(0.05, step=0.005) stopLoss_short=input(1.0, step=0.005) strategy.entry("long",1,when=long) strategy.entry("short",0,when=short) strategy.exit("short_tp/sl", "long", profit=close * takeProfit_long / syminfo.mintick, loss=close * stopLoss_long / syminfo.mintick, comment='LONG EXIT', alert_message = 'closeshort') strategy.exit("short_tp/sl", "short", profit=close * takeProfit_short / syminfo.mintick, loss=close * stopLoss_short / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort')