
এই কৌশলটি MACD সূচকগুলির সমান্তরাল সমন্বয় ভিত্তিক, সময়কালের মধ্যে গতিশীল প্রবণতা বিচার করতে সক্ষম, এটি একটি ক্লাসিক ট্রেন্ড ট্র্যাকিং কৌশল। প্রধানত দ্রুত এবং ধীর গড়ের পার্থক্য MACD এবং এর সংকেত লাইনের সম্পর্ক দ্বারা বর্তমান প্রবণতার দিকনির্দেশ এবং শক্তি নির্ধারণ করে। একই সাথে ক্রস-সাইক্লিক বিচারটি সঠিকতা বাড়ানোর জন্য, গতিশীলভাবে অবস্থানের সমন্বয় করে।
MACD সমান্তরাল সমন্বয় ক্রস-চক্র গতিশীল প্রবণতা কৌশল, ক্লাসিক সূচক বিচার এবং একাধিক সময় ফ্রেম রেফারেন্সের সুবিধাগুলি একত্রিত করে। প্যারামিটার অপ্টিমাইজেশন এবং সমন্বয় পরীক্ষার মাধ্যমে, একটি স্থিতিশীল, ভাল উপার্জন প্রবণতা ট্র্যাকিং কৌশল তৈরি করা যেতে পারে। এটি রিয়েল-স্টোর পরীক্ষার এবং প্রয়োগের জন্য উপযুক্ত।
/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@temelbulut
//@version=5
strategy('MACD Strategy %80', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=50)
fastLength = input.int(title='MACD Fast Length', defval=12, minval=1)
slowLength = input.int(title='MACD Slow Length', defval=26, minval=1)
signalLength = input.int(title='MACD Signal Length', defval=9, minval=1)
crossscore = input(title='Cross (buy/sell) Score', defval=10.)
indiside = input(title='indicator Direction Score', defval=8)
histside = input(title='Histogram Direction Score', defval=2)
shotsl = input(title='Show Stop Loss Line', defval=false)
Mult = input.float(title='Stop Loss Factor', defval=1.2, minval=0.1, maxval=100)
Period = input.int(title='Stop Loss Period', defval=10, minval=1, maxval=100)
lookaheadi = input(title='Lookahead', defval=true)
HTF = timeframe.period == '1' ? '5' : timeframe.period == '3' ? '15' : timeframe.period == '5' ? '15' : timeframe.period == '15' ? '60' : timeframe.period == '30' ? '60' : timeframe.period == '45' ? '60' : timeframe.period == '60' ? '240' : timeframe.period == '120' ? '240' : timeframe.period == '180' ? '240' : timeframe.period == '240' ? 'D' : timeframe.period == 'D' ? 'W' : 'W'
calc = timeframe.period == '1' ? 5 : timeframe.period == '3' ? 5 : timeframe.period == '5' ? 3 : timeframe.period == '15' ? 4 : timeframe.period == '30' ? 4 : timeframe.period == '45' ? 4 : timeframe.period == '60' ? 4 : timeframe.period == '120' ? 3 : timeframe.period == '180' ? 3 : timeframe.period == '240' ? 6 : timeframe.period == 'D' ? 5 : 1
count() =>
indi = ta.ema(close, fastLength) - ta.ema(close, slowLength)
signal = ta.ema(indi, signalLength)
Anlyse = 0.0
// direction of indi and histogram
hist = indi - signal
Anlyse := indi > indi[1] ? hist > hist[1] ? indiside + histside : hist == hist[1] ? indiside : indiside - histside : 0
Anlyse += (indi < indi[1] ? hist < hist[1] ? -(indiside + histside) : hist == hist[1] ? -indiside : -(indiside - histside) : 0)
Anlyse += (indi == indi[1] ? hist > hist[1] ? histside : hist < hist[1] ? -histside : 0 : 0)
// cross now earlier ?
countcross = indi >= signal and indi[1] < signal[1] ? crossscore : indi <= signal and indi[1] > signal[1] ? -crossscore : 0.
countcross += nz(countcross[1]) * 0.6
Anlyse += countcross
nz(Anlyse)
Anlys = count()
AnlysHfrm = lookaheadi ? request.security(syminfo.tickerid, HTF, count(), lookahead=barmerge.lookahead_on) : request.security(syminfo.tickerid, HTF, count(), lookahead=barmerge.lookahead_off)
Result = (AnlysHfrm * calc + Anlys) / (calc + 1)
longCondition = ta.change(Result) != 0 and Result > 0
if longCondition
strategy.entry('MACD Long', strategy.long,alert_message = 'MACD Long')
shortCondition = ta.change(Result) != 0 and Result < 0
if shortCondition
strategy.entry('MACD Short', strategy.short,alert_message = 'MACD Short')
countstop(pos) =>
Upt = hl2 - Mult * ta.atr(Period)
Dnt = hl2 + Mult * ta.atr(Period)
TUp = 0.
TDown = 0.
TUp := close[1] > TUp[1] ? math.max(Upt, TUp[1]) : Upt
TDown := close[1] < TDown[1] ? math.min(Dnt, TDown[1]) : Dnt
tslmtf = pos == 1 ? TUp : TDown
tslmtf
pos = longCondition ? 1 : -1
stline = 0.
countstop__1 = countstop(pos)
security_1 = request.security(syminfo.tickerid, HTF, countstop__1)
stline := ta.change(time(HTF)) != 0 or longCondition or shortCondition ? security_1 : nz(stline[1])
plot(stline, color=shotsl ? color.rgb(148, 169, 18) : na, style=plot.style_line, linewidth=2, title='Stop Loss')