
এই কৌশলটি এমএসিডি সূচকের দ্রুত এবং ধীর লাইনের ক্রস লাইনগুলির তুলনা করে কেনা এবং বিক্রয় সংকেত উত্পন্ন করে। ক্রয় সংকেত উত্পন্ন করার সময়, অ্যাকাউন্টের অধিকার লাভের একটি নির্দিষ্ট অনুপাতে ক্রয় করা হয়। তারপরে নির্দিষ্ট প্রত্যাহারের পয়েন্টে পজিশন যুক্ত করা হয়। যখন পজিশনের মুনাফা কনফিগারেশন স্টপ পয়েন্টে পৌঁছে যায়, তখন সমস্ত পজিশন বিক্রি করা হয়। বিক্রয় সংকেত এবং ক্রয় সংকেত লজিক অনুরূপ।
এই কৌশলটির কেন্দ্রীয় যুক্তি হল ট্রেন্ড নির্ধারণের জন্য MACD দ্রুত এবং ধীর লাইনগুলির ক্রসগুলির সাথে তুলনা করা। MACD হ’ল চলমান গড়ের পার্থক্য, স্বল্প ও দীর্ঘমেয়াদী গড়ের মধ্যে পার্থক্য গণনা করে বাজারের প্রবণতা এবং শক্তি নির্ধারণের জন্য। দ্রুত এবং ধীর লাইন ক্রসগুলি হ’ল গোল্ডফোর্স এবং ডেডফোর্স।
যখন ফাস্ট লাইনের উপর ধীর লাইন অতিক্রম করা হয়, তখন গোল্ডেন ফর্ক তৈরি হয়, যা নির্দেশ করে যে বাজারটি মুদ্রাস্ফীতির প্রবণতায় রয়েছে, তখন কৌশলটি বেশি পজিশন খুলবে; যখন ফাস্ট লাইনের নীচে ধীর লাইন অতিক্রম করা হয়, তখন ডেড ফর্ক তৈরি হয়, যা মুদ্রাস্ফীতির প্রবণতা নির্দেশ করে, তখন কৌশলটি খালি পজিশন খুলবে।
পজিশন খোলার পরে, কৌশলটি নির্দিষ্ট প্রত্যাহারের পয়েন্টে অতিরিক্ত বা শূন্য পজিশন যুক্ত করে। এটি মার্টিনগেল নীতির মাধ্যমে লাভের জায়গা বাড়িয়ে তুলতে পারে। যখন পজিশনের ক্রমবর্ধমান লাভটি কনফিগারেশনের স্টপ থ্রেশহোল্ডে পৌঁছে যায়, তখন কৌশলটি সমস্ত বিক্রি করে বা পজিশন খালি করে দেয়।
এই কৌশলটির সুবিধাগুলো হলঃ
MACD একটি ক্লাসিক এবং নির্ভরযোগ্য প্রযুক্তিগত বিশ্লেষণ সূচক যা বাজারের প্রবণতা নির্ধারণ করে।
একক লেনদেনের ঝুঁকি নিয়ন্ত্রণের জন্য, একটি ব্যাচেলারি পজিশনিং পদ্ধতি ব্যবহার করা হয়।
মার্টিনগেল নীতি অনুসারে অতিরিক্ত পজিশনের মাধ্যমে মুনাফার সুযোগ বাড়ানো যায়।
ক্ষতি কমানোর জন্য স্টপ পয়েন্ট স্থাপন করা হয়েছে।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
MACD সূচকটি বাজারের গতিবিধি পুরোপুরি পূর্বাভাস দিতে পারে না, ভুল সংকেত হতে পারে।
সম্পূর্ণ পজিশনের অতিরিক্ত পজিশনের ঝুঁকি রয়েছে। প্রতিটি অতিরিক্ত পজিশনের শতাংশ যথাযথভাবে সামঞ্জস্য করা যেতে পারে।
স্টপ পয়েন্ট সেট করা খুব ছোট হওয়ার ফলে লাভের স্থান সীমিত হতে পারে। বিভিন্ন জাতের জন্য এটি সামঞ্জস্য করা যেতে পারে।
একক জাতের লেনদেনের জন্য অ্যাকাউন্টের সীমা অতিক্রম না করার জন্য খোলার তহবিলের অনুপাতকে যুক্তিসঙ্গতভাবে বরাদ্দ করা দরকার।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
MACD সূচকগুলিকে বিভিন্ন প্যারামিটারগুলির সাথে পরীক্ষা করুন এবং নির্দিষ্ট ট্রেডিং জাতের জন্য আরও উপযুক্ত সূচক প্যারামিটারগুলি খুঁজে বের করুন।
পজিশনে যোগ করা এবং প্রত্যাহারের পরিমাপের অনুপাতের অনুপাতকে অনুকূলিতকরণ করুন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করুন।
লম্বা লাইন এবং সংক্ষিপ্ত লাইন অপারেশন স্টপ পয়েন্ট পরামিতি পরীক্ষা করুন এবং সর্বোত্তম স্টপ স্তর নির্ধারণ করুন।
অ্যাকাউন্টের পজিশনিং ক্ষমতা মূল্যায়ন করুন এবং যুক্তিসঙ্গত একক জাতের সর্বাধিক পজিশনের সীমা নির্ধারণ করুন।
স্টপ লজিক বাড়ানো। যখন বাজারে ব্যাপক পরিবর্তন হয়, তখন স্টপ লজিক ক্ষতির কার্যকর নিয়ন্ত্রণ করতে পারে।
এই কৌশলটি সামগ্রিকভাবে একটি প্রচলিত প্রবণতা অনুসরণ কৌশল। এটি MACD সূচক ব্যবহার করে বাজারের প্রবণতা দিক নির্ধারণ করে, একটি নির্দিষ্ট স্তরে উপার্জন পৌঁছানোর পরে স্টপ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ-অফ।
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-26 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/
// © TradingSoft_tech
//@version=5
strategy("MAPM-V1", overlay=true, default_qty_value=10, max_bars_back=5000,default_qty_type = strategy.percent_of_equity, commission_value=0.1, initial_capital = 100, pyramiding=6, currency=currency.USD)
///////// Options
SignalFast = input.int(300, step=10)
SignalSlow = input.int(600, step=10)
StepAddPurchases = input.float(2.5, step=0.1)
VolumePurchases = input.int(6,step=1)
Buy = input(true)
Sell = input(true)
longProfitPerc = input.float(title="Long Take Profit (%)", minval=0.0, step=0.1, defval=1) * 0.01
shortProfitPerc = input.float(title="Short Take Profit (%)", minval=0.0, step=0.1, defval=1) * 0.01
Martingale = input.float(1.6, minval = 1, step = 0.1)
VolumeDepo = input.int(100, step=1)
PercentOfDepo = input.float(10, step=1)
Close = (close)
EnterVolume = VolumeDepo*PercentOfDepo*0.01/Close
///////// Calculation indicator
fastAverage = ta.ema(close, 8)
slowAverage = ta.ema(close, 49)
macd = fastAverage - slowAverage
macdSignalF = ta.ema(macd,SignalFast)
macdSignalS = ta.ema(macd,SignalSlow)
// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)
//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)
timeRange = time > startTest and time < endTest ? true : false
///////// Plot Data
//plot(macd, style = plot.style_histogram)
//plot(macdSignalF*10000, style = plot.style_line, color=color.red)
//plot(macdSignalS*10000, style = plot.style_line, color=color.blue)
//plot(fastAverage, style = plot.style_line, color=color.red)
//plot(slowAverage, style = plot.style_line, color=color.blue)
///////// Calculation of the updated value
var x = 0.0
if strategy.opentrades>strategy.opentrades[1]
x := x + 1
else if strategy.opentrades==0
x := 0
y = x+1
///////// Calculation of reference price data
entryPrice = strategy.opentrades==0? 0 : strategy.opentrades.entry_price(0)
limitLong = strategy.position_avg_price * (1 + longProfitPerc)
limitShort = strategy.position_avg_price * (1 - shortProfitPerc)
SteplimitLong = entryPrice[0]*(1-StepAddPurchases*y/100)
SteplimitShort = entryPrice[0]*(1+StepAddPurchases*y/100)
///////// Conditions for a long
bool EntryLong = ta.crossover(macdSignalF, macdSignalS) and Buy and strategy.opentrades==0 and strategy.position_size==0
bool PurchasesLong = Buy and strategy.opentrades==x and strategy.position_size>0 and x<=VolumePurchases
bool CancelPurchasesLong = strategy.position_size==0 and strategy.opentrades==0
bool TPLong = strategy.position_size>0 and strategy.opentrades!=0
///////// Entry Long + add.purchases + cancel purchases + Take profit Long
switch
EntryLong => strategy.entry("Entry Long", strategy.long, qty = EnterVolume)
PurchasesLong => strategy.entry("PurchasesLong", strategy.long, qty = EnterVolume*math.pow(Martingale,y), limit = SteplimitLong)
CancelPurchasesLong => strategy.cancel("PurchasesLong")
switch
TPLong => strategy.exit("TPLong", qty_percent = 100, limit = limitLong)
///////// Conditions for a Short
bool EntryShort = ta.crossunder(macdSignalF, macdSignalS) and Sell and strategy.opentrades==0 and strategy.position_size==0
bool PurchasesShort = Sell and strategy.opentrades==x and strategy.position_size<0 and x<=VolumePurchases
bool CancelPurchasesShort = strategy.position_size==0 and strategy.opentrades==0
bool TPShort = strategy.position_size<0 and strategy.opentrades!=0
///////// Entry Short + add.purchases + cancel purchases + Take profit Short
switch
EntryShort => strategy.entry("Entry Short", strategy.short, qty = EnterVolume)
PurchasesShort => strategy.entry("PurchasesShort", strategy.short, qty = EnterVolume*math.pow(Martingale,y), limit = SteplimitShort)
CancelPurchasesShort => strategy.cancel("PurchasesShort")
switch
TPShort => strategy.exit("TPShort", qty_percent = 100, limit = limitShort)
/////////Calculation of conditions and reference data for level drawing
InTradeLong = strategy.position_size<0
InTradeShort = strategy.position_size>0
PickInLong = strategy.opentrades.entry_price(0)*(1-StepAddPurchases*y/100)
PickInShort = strategy.opentrades.entry_price(0)*(1+StepAddPurchases*y/100)
/////////Displaying the level of Take Profit
plot(InTradeLong ? na : limitLong, color=color.new(#00d146, 0), style=plot.style_linebr, linewidth=1)
plot(InTradeShort ? na : limitShort, color=color.new(#00d146, 0), style=plot.style_linebr, linewidth=1)
/////////Displaying the level of add.purchases
plot(InTradeLong ? na : PickInLong, color=color.white, style=plot.style_linebr, linewidth=1)
plot(InTradeShort ? na : PickInShort, color=color.white, style=plot.style_linebr, linewidth=1)