
এই কৌশলটি MACD সূচক এবং তার MACD স্তম্ভরেখার গণনা করে, MACD স্তম্ভরেখার এবং দামের চলাচলের মধ্যে বিচ্ছিন্ন সংকেত সনাক্ত করে, এবং তারপরে একটি লেনদেনের সংকেত তৈরি করে। যখন দামগুলি নতুন উচ্চতা সনাক্ত করা হয় তবে MACD স্তম্ভরেখাগুলি নতুন উচ্চতা তৈরি করে না, তখন একটি বিউড-বাউড বিচ্ছিন্ন সংকেত উত্পন্ন হয়; যখন দামগুলি নতুন কম হয় তবে MACD স্তম্ভরেখাগুলি নতুন নিম্নতা তৈরি করে না, তখন একটি বিউড-বাউড বিচ্ছিন্ন সংকেত উত্পন্ন হয়। এটিআর সূচকের সাথে মিলিত, স্টপ লস এবং স্টপস সেট করে, ট্রেন্ড-ট্র্যাকিং লেনদেন করে।
এই কৌশলটির মূল নীতিটি হল MACD সূচক এবং তার MACD স্তম্ভের বৈশিষ্ট্যগুলি ব্যবহার করে মূল্যের প্রবণতা পরিবর্তনের প্রতিফলন করা, MACD স্তম্ভ এবং মূল্যের মধ্যে বিচ্ছিন্ন সংকেত সনাক্ত করা, ট্রেডিং সংকেতের একটি ট্রিগার হিসাবে।
বিশেষ করে, কৌশলটি প্রথমে MACD লাইন, সিগন্যাল লাইন এবং MACD কলাম লাইন গণনা করে। তারপরে, একটি ফ্র্যাক্টাল ফাংশন সংজ্ঞায়িত করে, MACD কলাম লাইনের শিখর এবং উপত্যকা পরীক্ষা করে, স্থানীয় সর্বোচ্চ এবং সর্বনিম্ন মানগুলি বের করে। তারপরে দামের সর্বোচ্চ এবং সর্বনিম্ন দামের সাথে মিলিত করে, MACD কলাম লাইন এবং দামের মধ্যে পার্থক্য রয়েছে কিনা তা বিচার করুন।
যখন দাম নতুন উচ্চতা তৈরি করে, কিন্তু MACD স্তম্ভের লাইন নতুন উচ্চতা তৈরি করে না, তখন regulark_bearish_div পতনশীল বিপরীত সংকেত তৈরি করে; যখন দাম নতুন নিম্ন হয়, কিন্তু MACD স্তম্ভের লাইন নতুন নিম্ন সৃষ্টি করে না, তখন regulark_bullish_div পতনশীল বিপরীত সংকেত তৈরি করে।
অবশেষে, কৌশলটি যখন বিড ব্যাকওয়ে এবং বোল্ড ব্যাকওয়ে সিগন্যাল তৈরি করে, তখন স্বতন্ত্রভাবে লম্বা এবং বেশি করার নির্দেশ দেয় এবং এটিআর স্টপ লস এবং স্টপ স্টপস দিয়ে পজিশন থেকে বেরিয়ে আসে।
এই কৌশলটির বেশ কিছু সুবিধা রয়েছেঃ
MACD-এর স্তম্ভরেখা এবং দামের মধ্যে বিচ্ছিন্নতার বৈশিষ্ট্য ব্যবহার করে, দামের প্রবণতার পরিবর্তনকে অগ্রিম ধরা যায়।
এটিআর স্টপ লস স্টপ সেটআপ যুক্তিসঙ্গত এবং কার্যকরভাবে একটি একক লেনদেনের সর্বোচ্চ ক্ষতি নিয়ন্ত্রণ করে।
ট্রেন্ড ট্র্যাকিং পদ্ধতি ব্যবহার করে, সর্বাধিক মুনাফা সুরক্ষিত করা যায়।
প্যারামিটার সেটিং যুক্তিসঙ্গত, কিছু গোলমাল লেনদেন সংকেত ফিল্টার করতে পারে
এই নীতির লজিক পরিষ্কার এবং সহজেই বোঝা যায় এবং সহজেই পরীক্ষিত হয়।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
MACD-এর বিপরীতে চলার ফলে দামের বিপর্যয় ঘটতে পারে না, এবং কিছু মিথ্যা সংকেতের ঝুঁকি রয়েছে।
অযৌক্তিকভাবে স্টপ লস কন্ট্রোল সেট করা হয়েছে, যার ফলে খুব বেশি ক্ষতি বা খুব কম মুনাফা হতে পারে।
সিগন্যালের চক্র থেকে দূরে থাকা সংক্ষিপ্ত, সম্ভবত গোলমালের কারণে, যথাযথভাবে ফিল্টার করা উচিত
ট্রেডিং প্রকারের এবং প্যারামিটার সেটিং এর মধ্যে অসঙ্গতিও কৌশলগত কার্যকারিতার উপর প্রভাব ফেলে।
সমাধানঃ
ভুল সংকেত ফিল্টার করার জন্য সঠিক দৈর্ঘ্য এবং প্রস্থের প্রয়োজনীয়তা অনুসারে বড় করুন।
এটিআরকে স্টপ-লস স্টপ-অফ সূচক হিসেবে ব্যবহার করুন এবং এটিআর গুণককে নিয়ন্ত্রণ করুন যাতে একক লেনদেনের ঝুঁকি নিয়ন্ত্রণ করা যায়।
বিভিন্ন ধরণের লেনদেনের জন্য বিভিন্ন প্যারামিটার নির্বাচন করুন। প্যারামিটার অপ্টিমাইজেশন করুন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকেও উন্নত করা যেতে পারেঃ
আরো জটিল বৈপরীত্য নিশ্চিতকরণ, যেমন ভলিউম বৈপরীত্য নিশ্চিতকরণ।
MACD প্যারামিটার অপ্টিমাইজ করুন, সর্বোত্তম প্যারামিটার সমন্বয় খুঁজুন।
ATR স্টপডোজ স্টপডোজের গুণিতক অনুকূলিতকরণ
মেশিন লার্নিং অ্যালগরিদম যুক্ত করা হয়েছে, যা সিগন্যালের নির্ভরযোগ্যতা নির্ধারণে সহায়তা করে।
মডেলের পূর্বাভাস বাড়িয়ে দামের বিপর্যয়ের সম্ভাবনা নির্ধারণ করা।
বাজারের পরিবর্তিত পরিবেশের উপর ভিত্তি করে কৌশলগত প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করুন।
সামগ্রিকভাবে, এই পিডাগো ম্যাপটি MACD সূচকটি প্রবণতা ট্র্যাকিং কৌশল থেকে বিচ্ছিন্ন, MACD স্তম্ভের লাইন এবং দামের মধ্যে বিচ্ছিন্নতার বৈশিষ্ট্যটি ব্যবহার করে প্রবণতা ক্যাপচার করা যায়। ATR স্টপ লস স্টপ সেট যুক্তিসঙ্গত, একক লেনদেনের ঝুঁকি নিয়ন্ত্রণ করতে পারে। এই কৌশলটির যুক্তি পরিষ্কার এবং সহজেই বোঝা যায়, যা রিয়েল-টাইম পরীক্ষার জন্য উপযুক্ত। পরবর্তী সময়ে কৌশলটি আরও ভাল ফলাফলের জন্য বিভিন্ন দিক থেকে অপ্টিমাইজ করা যেতে পারে।
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bigwin_sun
// copyright: Tradingvue Limited
//@version = 5
strategy(title = "Demigod : CDMA histogram Divergence strategy", shorttitle = "Demigod strategy", overlay = false, pyramiding = 100)
//macd input
fastMA = input.int(13, title = "fast Length", minval = 1, group = "CDMA")
slowMA = input.int(34, title = "slow Length", minval = 1, group = "CDMA")
src = input.source(title = "source", defval = close, group = "CDMA")
signalSmooth = input.int(9, title="ma Length", minval = 1, group = "CDMA")
//Divergenc
divLength = input.int(title = "Divergenc Length", defval = 5, minval = 1, maxval = 50, inline = "ATRLength", group = "Divergence")
divStren = input.float(title="Divergenc Strength", defval = 2, minval = 1.0, maxval = 5.0, inline = "ATRLength", group = "Divergence")
//atr input
atrLength = input.int(13, title = "ATR Length", minval = 1, inline = "ATRLength", group = "ATR")
m = input.float(1.0, "ATR multyple", minval = 0.5, inline = "ATRLength", group = "ATR", step = 0.5)
collong = input.color(color.teal, title = "upper color", inline = "ATR显示", group = "ATR")
colshort = input.color(color.red, title = "under color", inline = "ATR显示", group = "ATR")
// MACD---------------------------------------------------------------------------------------------------------------------------------
DivOffset = -2
macdLine = ta.ema(src, fastMA) - ta.ema(src, slowMA)
signalLine = ta.ema(macdLine, signalSmooth)
histogram = macdLine - signalLine
histogramColor = if histogram > 0
histogram > histogram[1] ? color.lime : color.green
else
histogram < histogram[1] ? color.maroon : color.red
// cdma histogram
plot(histogram, title = "MACD histogram", linewidth = 2, style = plot.style_histogram, color = histogramColor)
plot(0, title = "zero line", linewidth = 1, color = color.gray)
// Divergenc calculation-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//peak / valley fundation
f_top_fractal(_src)=>_src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and _src[2] > _src[0] and _src > 0
f_bot_fractal(_src)=>_src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and _src[2] < _src[0] and _src < 0
f_fractalize(_src)=>f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0
//peak / valley value
fractal_top1 = f_fractalize(histogram) > 0 ? true : false //histogram[2] : na
fractal_bot1 = f_fractalize(histogram) < 0 ? true : false //histogram[2] : na
//previouse peak or valley
high_prev1 = ta.valuewhen(fractal_top1, histogram[2], 0)[2]
high_price1 = ta.valuewhen(fractal_top1, high[2], 0)[2]
low_prev1 = ta.valuewhen(fractal_bot1, histogram[2], 0)[2]
low_price1 = ta.valuewhen(fractal_bot1, low[2], 0)[2]
//Divergenc : cdma histogram against candle value
regular_bearish_div1 = high[2] > high_price1 + divStren and histogram[2] < high_prev1 / divStren and ta.barssince(fractal_top1[1]) > divLength
regular_bullish_div1 = low[2] < low_price1 - divStren and histogram[2] > low_prev1 / divStren and ta.barssince(fractal_bot1[1]) > divLength
//-------------------------cdma Divergenc range------------------------------------------------
//histogramColor
col1 = regular_bearish_div1 ? color.red : na
col2 = regular_bullish_div1 ? #00FF00EB : na
//plot
plot(title='看跌背离', series= fractal_top1 ? histogram[2] : na, color=col1, linewidth=3, offset=DivOffset)
plot(title='看涨背离', series= fractal_bot1 ? histogram[2] : na, color=col2, linewidth=3, offset=DivOffset)
// calculate ATR --------------------------------------------------------------------------------------------------------------------------------------------------
atr = ta.ema(ta.tr(true), atrLength) * m
up = atr + high
dw = low - atr
//stratety : enrty and exit---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
if regular_bearish_div1 and fractal_top1
//if regular_bullish_div1 and fractal_bot1
//label.new(bar_index, histogram[2], text = "Short", textcolor = color.white, color = color.gray, style = label.style_label_lower_left)
strategy.entry("Short", strategy.short, qty = 1)
strategy.exit("exitShort", "Short", stop = up, limit = dw - atr)
if regular_bullish_div1 and fractal_bot1
//if regular_bearish_div1 and fractal_top1
//label.new(bar_index, histogram[2], text = "Long", textcolor = color.white, color = color.fuchsia, style = label.style_label_upper_left)
strategy.entry("Long", strategy.long, qty = 1)
strategy.exit("exitLong", "Long", stop = dw, limit = up + atr)