
MACD গড়রেখার বোর-বেয়ার রূপান্তর কৌশলটি MACD সূচকের DIFF এবং DEA গড়রেখার গণনা করে, বাজার প্রবণতাটি ঘুরছে কিনা তা বিচার করে, এবং তারপরে একটি লেনদেনের সংকেত উত্পন্ন করে। যখন DIFF উপরে DEA পেরিয়ে যায়, তখন আরও বেশি করুন; যখন DIFF নীচে DEA পেরিয়ে যায়, তখন খালি করুন। এই কৌশলটি একই সাথে দামের ইএমএ গড়রেখার ফিল্টারিংয়ের সাথে মিলিত হয়, যাতে ভুয়া ব্রেকআউটগুলি এড়ানো যায়।
এই কৌশলটি মূলত MACD সূচকের ডিআইএফএফ এবং ডিইএ গড়ের উপর ভিত্তি করে। MACD সূচকটির চলমান গড়ের পার্থক্যকে DIFF, DEA এবং MACD লাইনের সমন্বয়ে গঠিত। এর মধ্যে, DIFF লাইনটি স্বল্পমেয়াদী ইএমএ গড় এবং দীর্ঘমেয়াদী ইএমএ গড়ের পার্থক্যকে বোঝায়, ডিইএ লাইনটি ডিআইএফএফ-এর ইএমএ গড়, যা ডিআইএফএফ লাইন সংকেত যাচাই করার জন্য ব্যবহৃত হয়, এবং MACD লাইনটি ডিআইএফএফ হ্রাস ডিইএ-র পার্থক্য, যা বিপরীতভাবে প্রতিনিধিত্ব করে।
যখন DIFF ঊর্ধ্বমুখী হয়ে DEA অতিক্রম করে, তখন স্বল্পমেয়াদী গড় লাইন শক্তিশালী হতে শুরু করে, বাজারটি পল্টুতে চলে যায়। যখন DIFF ঊর্ধ্বমুখী হয়ে DEA অতিক্রম করে, তখন স্বল্পমেয়াদী গড় লাইন দুর্বল হতে শুরু করে, বাজারটি শূন্যে চলে যায়। অতএব, এই কৌশলটি DIFF এ DEA অতিক্রম করার সময় অতিরিক্ত করে এবং নীচে অতিক্রম করার সময় শূন্য করে।
একই সময়ে, কৌশলটি দামের ইএমএ গড়ের সাথে যুক্ত করে মিথ্যা ব্রেকিংয়ের জন্য ফিল্টার করে। কেবলমাত্র যখন ডিআইএফএফ ঊর্ধ্বমুখী হয়ে ডিইএ অতিক্রম করে এবং দামটি পূর্ববর্তী দামের চেয়ে কম হয় তখনই এটি বেশি হয়; কেবল তখনই খালি হয় যখন ডিআইএফএফ ঊর্ধ্বমুখী হয়ে ডিইএ অতিক্রম করে এবং দামটি পূর্ববর্তী দামের চেয়ে বেশি হয়।
MACD গড়রেখার ষাঁড়-বীর রূপান্তর কৌশলটি MACD সূচক এবং দামের ইএমএ গড়রেখার সাথে একত্রিত হয়, কেবলমাত্র MACD সূচক দ্বারা উত্পন্ন মিথ্যা সংকেত এড়ানো এবং ট্রেডিংয়ের কার্যকারিতা বাড়ায়। এই কৌশলটি বাজারের প্রবণতা দ্রুত রূপান্তরিত করার বিচার করে এবং সংক্ষিপ্ত লাইন অপারেশনের জন্য উপযুক্ত।
এর মধ্যে রয়েছেঃ
MACD গড়রেখার বিয়ার ও বোর রূপান্তর কৌশলটি কিছু ঝুঁকি নিয়েও কাজ করে, যার মধ্যে রয়েছেঃ
এই ঝুঁকিগুলিকে নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
MACD গড়রেখার শূকর-হরিণ রূপান্তর কৌশলটি নিম্নলিখিত মাত্রাগুলি থেকে অপ্টিমাইজ করার জন্য আরও স্থান রয়েছেঃ
ম্যাকড সমান্তরাল বাঘ-হাঁস রূপান্তর কৌশলটি ডিআইএফএফ, ডিইএ ক্রস-নির্ধারণের মাধ্যমে বাজারটি একাধিক এবং ফাঁকা পথে প্রবেশের সময় নির্ধারণ করে এবং দামের ইএমএ সমান্তরাল ফিল্টার মিথ্যা সংকেতের সাথে মিলিত হয়। এই কৌশলটি সহজ এবং পরিষ্কার ট্রেডিং লজিকের সাথে বাজার প্রবণতা রূপান্তরিত করার প্রভাব অর্জন করে। এই কৌশলটি সংক্ষিপ্ত এবং মাঝারি লাইনের জন্য উপযুক্ত, রূপান্তর পয়েন্টটি দ্রুত নির্ধারণ করে। অপারেশন পরবর্তী পদক্ষেপটি প্যারামিটার, বর্ধিত ফিল্টার, ট্রেডিং ফ্রিকোয়েন্সি নিয়ন্ত্রণ ইত্যাদির ক্ষেত্রে অপ্টিমাইজ করা যেতে পারে, কৌশলটিকে আরও স্থিতিশীল করে তোলে।
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("macd_strategy",
shorttitle="macd",
overlay=true,
pyramiding=1,
max_bars_back=5000,
calc_on_order_fills = false,
calc_on_every_tick=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type =strategy.commission.percent,
commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]
cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
cross_over_price := price[1]
cross_over_signal := diff
if (crossunder(diff,dea))
cross_under_price := price[1]
cross_under_signal := diff
if dea > 0
cross_over_price = na
cross_over_signal = na
else
cross_under_price = na
cross_under_signal = na
if diff > 0
if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
strategy.entry("S", strategy.short, comment="S")
else
if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
strategy.entry("B", strategy.long, comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))