পূর্ণ ক্রিপ্টো সুইং ALMA ক্রস MACD পরিমাণগত কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-০৫ ১০ঃ২৪ঃ৩৪
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি স্বয়ংক্রিয় লং এবং শর্ট পজিশন অর্জনের জন্য ডাবল ALMA চলমান গড় রেখাগুলির গোল্ডেন ক্রস এবং ডেড ক্রস সংকেতগুলির উপর ভিত্তি করে, MACD সূচকের দীর্ঘ এবং সংক্ষিপ্ত সংকেতগুলির সাথে মিলিত। কৌশলটি 4 ঘন্টা বা তার বেশি সময়সীমার জন্য উপযুক্ত, এবং পরীক্ষার ডেটা হল BNB/USDT যা 2017 থেকে বর্তমান পর্যন্ত, একটি কমিশন হার 0.03% এ সেট করা হয়েছে।

কৌশল নীতি

এই কৌশলটি ডাবল মুভিং গড় তৈরি করতে ALMA থেকে নির্মিত দ্রুত এবং ধীর লাইন ব্যবহার করে। দ্রুত লাইন দৈর্ঘ্য 20 এবং ধীর লাইন 40, উভয়ই 0.9 এর একটি অফসেট এবং 5 এর একটি মান বিচ্যুতি গ্রহণ করে। যখন দ্রুত লাইন ধীর লাইনের উপর দিয়ে যায়, তখন একটি দীর্ঘ সংকেত উত্পন্ন হয়। যখন দ্রুত লাইন ধীর লাইনের নীচে অতিক্রম করে, তখন একটি সংক্ষিপ্ত সংকেত উত্পন্ন হয়।

একই সময়ে, কৌশলটি এমএসিডি সূচকের হিস্টোগ্রাম সংকেতকে অন্তর্ভুক্ত করে। শুধুমাত্র যখন এমএসিডি হিস্টোগ্রাম ইতিবাচক (উপরে) হয়, তখন দীর্ঘ সংকেতটি বৈধ; শুধুমাত্র যখন এমএসিডি হিস্টোগ্রাম নেতিবাচক (হ্রাস) হয়, তখন সংক্ষিপ্ত সংকেতটি বৈধ।

কৌশলটি লাভ এবং স্টপ লস শর্তও নির্ধারণ করে। লং লস লাভ 2 বার এবং স্টপ লস 0.2 বার; শর্ট লস লাভ 0.05 বার এবং স্টপ লস 1 বার।

সুবিধা বিশ্লেষণ

কৌশলটি ডাবল চলমান গড়ের প্রবণতা রায় এবং এমএসিডি সূচকের শক্তি রায়কে একত্রিত করে, যা কার্যকরভাবে মিথ্যা সংকেতগুলি ফিল্টার করতে পারে এবং প্রবেশের নির্ভুলতা উন্নত করতে পারে। মুনাফা গ্রহণ এবং স্টপ লস সেটিংস লাভের সর্বাধিক লকিং এবং বিশাল ক্ষতি এড়াতে যুক্তিসঙ্গত।

২০১৭ সাল থেকে ব্যাকটেস্টের ডেটা গ্রহণ করা হয়েছে, যা একাধিক ষাঁড় এবং ভালুক রূপান্তর চক্রকে কভার করে। কৌশলটি এখনও সময়কালে ভাল পারফর্ম করে। এটি প্রমাণ করে যে কৌশলটি বাজারের রৈখিকতা এবং অ-রৈখিকতার বৈশিষ্ট্য উভয়ের সাথে খাপ খায়।

ঝুঁকি বিশ্লেষণ

এই কৌশল নিম্নলিখিত ঝুঁকি আছেঃ

  1. ডাবল মুভিং মিডিয়ার নিজস্ব একটি বিলম্বিত প্রভাব রয়েছে, সম্ভবত স্বল্পমেয়াদী সুযোগগুলি মিস করা
  2. যখন এমএসিডি হিস্টোগ্রাম শূন্য হয়, তখন কৌশলটি সংকেত উৎপন্ন করবে না
  3. মুনাফা গ্রহণ এবং স্টপ লস অনুপাত পূর্বনির্ধারিত হয়, প্রকৃত বাজার থেকে বিচ্যুত হতে পারে

সমাধান:

  1. সংক্ষিপ্ত মেয়াদে সংবেদনশীলতা উন্নত করতে চলমান গড় চক্রকে যথাযথভাবে সংক্ষিপ্ত করুন
  2. হিস্টোগ্রামের ওঠানামা আরও ঘন ঘন করার জন্য MACD পরামিতিগুলি অপ্টিমাইজ করুন
  3. লাভ গ্রহণ এবং স্টপ লস সেটিংসকে গতিশীলভাবে সামঞ্জস্য করুন

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত দিকগুলিতেও অপ্টিমাইজ করা যেতে পারেঃ

  1. ভাল মসৃণতা প্রভাব খুঁজে পেতে বিভিন্ন ধরনের চলন্ত গড় চেষ্টা করুন
  2. বিভিন্ন পণ্য এবং চক্রের জন্য চলমান গড় এবং MACD এর পরামিতিগুলি অনুকূলিত করুন
  3. ফিল্টার সংকেতগুলিতে ট্রেডিং ভলিউমের পরিবর্তনগুলির মতো অতিরিক্ত শর্ত যুক্ত করুন
  4. আরও ভাল অভিযোজনযোগ্যতার জন্য রিয়েল টাইমে লাভ এবং স্টপ লস অনুপাতগুলি সামঞ্জস্য করুন

সিদ্ধান্ত

কৌশলটি সফলভাবে চলমান গড়ের প্রবণতা রায় এবং এমএসিডির সহায়ক রায়কে একত্রিত করে এবং যুক্তিসঙ্গত লাভ এবং স্টপ লস সেট করে, যা বিভিন্ন বাজারের অবস্থার মধ্যে স্থিতিশীল রিটার্ন অর্জন করতে পারে। পরামিতি সেটিংসের ক্রমাগত অপ্টিমাইজেশান, অতিরিক্ত ফিল্টারিং শর্ত ইত্যাদি যোগ করে কৌশলটির স্থিতিশীলতা এবং লাভজনকতা আরও বাড়ানো যেতে পারে।


/*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')

আরো