
এই কৌশলটি তিনটি ভিন্ন সময়কালের চলমান গড় গণনা করে এবং দামের ব্রেকআপের সাথে ট্রেডিং সিগন্যাল তৈরি করে। এটি একটি সাধারণ ট্রেন্ড ট্র্যাকিং কৌশল। এই কৌশলটি বাজারের মধ্যমেয়াদী প্রবণতা অনুসরণ করার উদ্দেশ্যে তৈরি করা হয়েছে, যা বিভিন্ন জাত এবং ট্রেডিং পরিবেশে গতিশীল সমন্বয়কারী প্যারামিটারগুলির মাধ্যমে প্রযোজ্য।
এই কৌশলটিতে তিনটি মুভিং এভারেজ রয়েছেঃ MA1, MA2 এবং MA3। MA1 এবং MA2 এর মধ্যে একটি ট্রেডিং চ্যানেল তৈরি করে, যার ক্রসগুলি একটি ট্রেডিং সংকেত দেয়; MA3 একটি ফিল্টারিং সংকেত হিসাবে ব্যবহৃত হয়।
যখন দ্রুত গড় MA1 মধ্যমেয়াদী গড় MA2 অতিক্রম করে, তখন স্বল্পমেয়াদী প্রবণতা শক্তিশালী হয়, যখন দাম দীর্ঘমেয়াদী গড় MA3 এর চেয়ে বেশি হয়, তখন একটি পল্টি-সিগন্যাল উত্পন্ন হয়; বিপরীতে, যদি MA1 MA2 অতিক্রম করে এবং দাম MA3 এর চেয়ে কম হয়, তবে একটি ফাঁকা-সিগন্যাল উত্পন্ন হয়।
MA3 এর কাজ হল স্বল্পমেয়াদী বাজার শব্দকে ফিল্টার করা এবং শুধুমাত্র মধ্য ও দীর্ঘমেয়াদী পর্যায়ে প্রবণতা নির্ধারণের পরই সংকেত দেওয়া। এই কৌশলটি তিনটি চলমান গড়ের প্যারামিটারগুলিকে গতিশীলভাবে সামঞ্জস্য করে, যা বিভিন্ন বাজারে সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে পারে।
এমএ চক্রের সমন্বয় করে, বিভিন্ন জাতের প্যারামিটারগুলিকে অনুকূলিতকরণ করা যায়; ক্ষতি বন্ধের কৌশলগুলি অনুকূলিতকরণ, একক ক্ষতি নিয়ন্ত্রণ করা যায়; অন্যান্য প্রযুক্তিগত সূচকগুলির সাথে সংযুক্ত করে সংকেতের কার্যকারিতা নিশ্চিত করা, ভুল সংকেতের সম্ভাবনা হ্রাস করা যায়।
এই কৌশলটি তিনটি চলমান গড় গণনা করে এবং ক্রস-উত্পাদিত ট্রেডিং সিগন্যালগুলি পর্যবেক্ষণ করে, দ্রুত এবং ধীরে ধীরে সমন্বিত ধারণাগুলি ব্যবহার করে ট্রেন্ড নির্ধারণের জন্য একটি আদর্শ প্রবণতা অনুসরণকারী কৌশল। এই কৌশলটি প্যারামিটার অপ্টিমাইজেশনের মাধ্যমে বিভিন্ন জাতের জন্য প্রযোজ্য, তবে এটি প্যাডিংয়ের ঝুঁকি রয়েছে এবং টার্নিং পয়েন্টটি মিস করা হয়েছে। ভবিষ্যতে অন্যান্য প্রযুক্তিগত সূচকগুলি সংকেত কার্যকারিতা নির্ধারণের জন্য এবং গতিশীল প্যারামিটার অপ্টিমাইজেশনের প্রক্রিয়া বিকাশের মাধ্যমে কৌশলটিকে আরও নমনীয় করে তুলতে পারে।
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © Meesemoo
//@version=4
strategy("Custom MA Strategy Tester", overlay = true)
MA1Period = input(13, title="MA1 Period")
MA1Type = input(title="MA1 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA1Source = input(title="MA1 Source", type=input.source, defval=close)
MA1Visible = input(title="MA1 Visible", type=input.bool, defval=true)
MA2Period = input(50, title="MA2 Period")
MA2Type = input(title="MA2 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA2Source = input(title="MA2 Source", type=input.source, defval=close)
MA2Visible = input(title="MA2 Visible", type=input.bool, defval=true)
MA3Period = input(200, title="MA3 Period")
MA3Type = input(title="MA3 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA3Source = input(title="MA3 Source", type=input.source, defval=close)
MA3Visible = input(title="MA3 Visible", type=input.bool, defval=true)
ShowCrosses = input(title="Show Crosses", type=input.bool, defval=true)
MA1 = if MA1Type == "SMA"
sma(MA1Source, MA1Period)
else
if MA1Type == "EMA"
ema(MA1Source, MA1Period)
else
if MA1Type == "WMA"
wma(MA1Source, MA1Period)
else
if MA1Type == "RMA"
rma(MA1Source, MA1Period)
else
if MA1Type == "HMA"
wma(2*wma(MA1Source, MA1Period/2)-wma(MA1Source, MA1Period), round(sqrt(MA1Period)))
else
if MA1Type == "DEMA"
e = ema(MA1Source, MA1Period)
2 * e - ema(e, MA1Period)
else
if MA1Type == "TEMA"
e = ema(MA1Source, MA1Period)
3 * (e - ema(e, MA1Period)) + ema(ema(e, MA1Period), MA1Period)
MA2 = if MA2Type == "SMA"
sma(MA2Source, MA2Period)
else
if MA2Type == "EMA"
ema(MA2Source, MA2Period)
else
if MA2Type == "WMA"
wma(MA2Source, MA2Period)
else
if MA2Type == "RMA"
rma(MA2Source, MA2Period)
else
if MA2Type == "HMA"
wma(2*wma(MA2Source, MA2Period/2)-wma(MA2Source, MA2Period), round(sqrt(MA2Period)))
else
if MA2Type == "DEMA"
e = ema(MA2Source, MA2Period)
2 * e - ema(e, MA2Period)
else
if MA2Type == "TEMA"
e = ema(MA2Source, MA2Period)
3 * (e - ema(e, MA2Period)) + ema(ema(e, MA2Period), MA2Period)
MA3 = if MA3Type == "SMA"
sma(MA3Source, MA3Period)
else
if MA3Type == "EMA"
ema(MA3Source, MA3Period)
else
if MA3Type == "WMA"
wma(MA3Source, MA3Period)
else
if MA3Type == "RMA"
rma(MA3Source, MA3Period)
else
if MA3Type == "HMA"
wma(2*wma(MA3Source, MA3Period/2)-wma(MA3Source, MA3Period), round(sqrt(MA3Period)))
else
if MA3Type == "DEMA"
e = ema(MA3Source, MA3Period)
2 * e - ema(e, MA3Period)
else
if MA3Type == "TEMA"
e = ema(MA3Source, MA3Period)
3 * (e - ema(e, MA3Period)) + ema(ema(e, MA3Period), MA3Period)
p1 = plot(MA1Visible ? MA1 : na, color=color.green, linewidth=1)
p2 = plot(MA2Visible ? MA2 : na, color=color.yellow, linewidth=1)
p3 = plot(MA3Visible ? MA3 : na, color=color.red, linewidth=2)
fill(p1, p2, color.silver, transp=80, title="Fill")
start = timestamp(2019, 1, 1, 1, 0)
end = timestamp(2025, 1, 1, 1, 0)
if time >= start and time <= end
longCondition = crossover(MA1, MA2) and close > MA3
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(MA1, MA2) and close < MA3
if (shortCondition)
strategy.entry("Short", strategy.short)