
এই কৌশলটি একটি প্রবণতা-অনুসরণ কৌশল যা MACD সূচক ব্যবহার করে পলিহোস্টিক দিকনির্দেশনা সনাক্ত করে। এটি দ্রুত চলমান গড় এবং ধীর চলমান গড়ের পার্থক্য গণনা করে একটি MACD মূল লাইন তৈরি করে। কৌশলটি MACD মূল লাইন এবং সংকেত লাইনের গোল্ডেন ক্রস ব্যবহার করে একটি কেনার সংকেত তৈরি করতে এবং একটি মৃত ক্রস একটি বিক্রয় সংকেত তৈরি করতে, পলিহোস্টিক ভারসাম্য ট্র্যাকিংয়ের জন্য।
কোডটি প্রথমে কৌশলটির ঐতিহাসিক কর্মক্ষমতা পরীক্ষা করার জন্য পুনরায় পরিমাপ শুরু করার সময় নির্ধারণ করে।
তারপর MACD সূচক গণনা করা হয়, যার মধ্যে রয়েছে দ্রুত চলমান গড়, ধীর চলমান গড় এবং MACD গড়ের দৈর্ঘ্য সেট করা। দ্রুত লাইনটি আরও সংবেদনশীল, ধীর লাইনটি আরও স্থিতিশীল। তাদের পার্থক্যটি MACD মূল লাইন গঠন করে, এবং তারপরে গড়ের মাধ্যমে MACD সংকেত লাইন গঠন করে। যখন পার্থক্যটি শূন্য অক্ষের মধ্য দিয়ে যায় তখন একটি মাল্টিহেড সংকেত উত্পন্ন হয় এবং শূন্য অক্ষের মধ্য দিয়ে একটি খালি মাথা সংকেত উত্পন্ন হয়।
পল্টি হেড এবং খালি হেড সিগন্যালের উপর ভিত্তি করে, সর্বশেষ সংকেত উত্পন্ন হওয়ার সময়টি রেকর্ড করুন। যখন দ্রুত লাইন এবং ধীর লাইনটি ক্রস হয় তখন ক্রয় / বিক্রয় সংকেতটি নিশ্চিত করা হয় এবং রেকর্ড করা হয়, তখন পজিশনটি খোলা যেতে পারে।
প্রবেশের পর, ক্রমাগত সর্বোচ্চ এবং সর্বনিম্ন মূল্যের উপর নজর রাখুন। একটি স্টপ লস শতাংশ সেট করুন, যখন ক্ষতির হার সেই শতাংশে পৌঁছায় তখন স্টপ লস প্রস্থান করুন।
MACD সূচকটি প্রবণতা সনাক্ত করতে সক্ষম এবং এটি প্রযুক্তিগত বিশ্লেষণের অন্যতম ক্লাসিক সূচক।
ধীরগতির গড়ের পার্থক্যের নকশা, দামের পরিবর্তনের গতিশীলতা এবং দিকটি তাড়াতাড়ি ধরতে পারে।
মিডলাইন ফিল্টারিংয়ের মাধ্যমে, কিছু ভুয়া সংকেতকে ফিল্টার করা যায়।
এই কৌশলটি ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস ম্যানেজমেন্ট যুক্ত করেছে।
এমএসিডি সূচকগুলি মিথ্যা সংকেত তৈরি করতে পারে, এবং সূচকগুলি স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করার জন্য সীমিত স্থান রয়েছে।
ভুলভাবে স্টপ পয়েন্ট সেট করা হলে এটি অত্যধিক সক্রিয় বা সংরক্ষণশীল হতে পারে এবং বিভিন্ন জাতের জন্য পৃথকভাবে অপ্টিমাইজ করা প্রয়োজন।
ফিক্সড কন্টেন্ট পজিশনের ক্ষেত্রে লিভারেজ খুব বেশি হতে পারে, তাই আপনার তহবিলের আকারের উপর নির্ভর করে ঝুঁকির থ্রেশহোল্ড সেট করার কথা ভাবুন।
পুনর্বিবেচনার সময় উইন্ডো নির্বাচন করার যুক্তিসঙ্গততা যাচাই করা প্রয়োজন, অতিরিক্ত মিলন এড়ানো উচিত।
বিভিন্ন জাতের জন্য সর্বোত্তম প্যারামিটার খুঁজে বের করার জন্য ধীরে ধীরে সমান্তরাল প্যারামিটার সমন্বয়কে অপ্টিমাইজ করুন।
অন্যান্য সূচক ফিল্টার যুক্ত করুন যেমন K-লাইন, বুলিন ব্যান্ড, আরএসআই ইত্যাদি যাচাইকরণ সংকেত।
বিভিন্ন স্টপ লস এর কার্যকারিতার মূল্যায়ন করা যায়, যেমন প্রত্যাহার, শার্প অনুপাত ইত্যাদি।
অপ্টিমাইজড স্টপ স্ট্র্যাটেজি, যেমন, মুভিং স্টপ, হ্যান্ডলিং স্টপ ইত্যাদি
চেষ্টা করুন তহবিলের পরিবর্তনের উপর ভিত্তি করে একটি গতিশীল পজিশন সেট করতে।
ম্যাকড মাল্টি-হোলায়েস ভারসাম্য কৌশলটি একটি প্রবণতা-অনুসরণ কৌশল যা ক্লাসিক প্রযুক্তিগত সূচকগুলির উপর ভিত্তি করে তৈরি করা হয়েছে। এটি দামের পরিবর্তনের গতিশীলতার জন্য সংবেদনশীল ক্যাপচার করার ক্ষমতা রাখে এবং প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে বিভিন্ন জাতের সাথে ভালভাবে খাপ খাইয়ে নিতে পারে। আরও ঘূর্ণিঝড়ের সূচক, স্টপ লস এবং গতিশীল পজিশন ম্যানেজমেন্টের সাথে মিলিত হয়ে কৌশলটির স্থিতিশীলতা এবং লাভজনকতা বাড়িয়ে তুলতে পারে।
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("MACD BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)
/////////////// Component Code Start ///////////////
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
/////////////// MACD Component - Default settings for one day. ///////////////
fastLength = input(12) // 72 for 4hr
slowlength = input(26) // 156 for 4 hr
MACDLength = input(12) // 12 for 4hr
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
long = crossover(delta, 0)
short = crossunder(delta, 0)
last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)
last_open_long_signal = long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal = short_signal ? open : nz(last_open_short_signal[1])
last_long_signal = long_signal ? time : nz(last_long_signal[1])
last_short_signal = short_signal ? time : nz(last_short_signal[1])
in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal
last_high = not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low = not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])
sl_inp = input(5.0, title='Stop Loss %', type=float)/100
/////////////// Strategy Component ///////////////
// Strategy Entry
if testPeriod()
strategy.entry("Long Entry", strategy.long, when=long_signal)
strategy.entry("Short Entry", strategy.short, when=short_signal)
since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) // LONG SL
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) // SHORT SL
slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na
// Strategy SL Exit
if testPeriod()
strategy.exit("Long SL", "Long Entry", stop=long_sl, when=since_longEntry > 1)
strategy.exit("Short SL", "Short Entry", stop=short_sl, when=since_shortEntry > 1)
//plot(strategy.equity, title="equity", color=blue, linewidth=2, style=areabr)