
এই কৌশলটি মূল্যের মসৃণ ওঠানামার উপর ভিত্তি করে, মূল্যের লক্ষ্যবস্তু তৈরি করে এবং যখন মূল্য লক্ষ্যবস্তু অতিক্রম করে তখন একটি ট্রেডিং সংকেত দেয়।
এই কৌশলটি প্রথমে একটি নির্দিষ্ট সময়ের মধ্যে দামের গড় ওঠানামা গণনা করে এবং তারপরে সূচকীয় চলমান গড়ের সাথে ওঠানামার প্রশস্তকরণ প্রক্রিয়াকরণ করে, একটি মসৃণ ওঠানামা তৈরি করে। মসৃণ ওঠানামাটি একটি ফ্যাক্টর দ্বারা গুণিত হয়, যা লক্ষ্যবস্তুর ব্যাপ্তি দেয়। যখন দাম লক্ষ্যবস্তু অতিক্রম করে, তখন একটি কেনার সংকেত উত্পন্ন হয়; যখন দাম লক্ষ্যবস্তু অতিক্রম করে, তখন একটি বিক্রয় সংকেত উত্পন্ন হয়।
বিশেষত, কৌশলটি smoothrng ফাংশন দ্বারা smoothed oscillation rate smrng গণনা করে এবং তারপরে smrng মানের উপর ভিত্তি করে লক্ষ্যবস্তুর hband এবং lband গণনা করে। এর ভিত্তিতে দীর্ঘ শর্ত এবং সংক্ষিপ্ত শর্ত সংক্ষিপ্ত শর্ত সেট করা হয়। যখন দীর্ঘ শর্ত পূরণ হয়, একটি ক্রয় সংকেত উত্পন্ন হয়; যখন সংক্ষিপ্ত শর্ত পূরণ হয়, একটি বিক্রয় সংকেত উত্পন্ন হয়।
এই কৌশলটির সুবিধাগুলো হলঃ
দামের অস্থিরতা ব্যবহার করে ট্রেডিং সিগন্যাল তৈরি করা হয়, যা কার্যকরভাবে বাজার পরিবর্তনের উপর নজর রাখে।
ইন্ডেক্সের মাধ্যমে মুভিং এভারেজের ফ্ল্যাশ ওভাররাইডিং, যা গোলমালকে ফিল্টার করে এবং আরও নির্ভরযোগ্য ট্রেডিং সিগন্যাল তৈরি করে।
টার্গেট ব্যান্ডের ব্যাপ্তিটি উর্ধ্বমুখীতা সহগ দ্বারা সামঞ্জস্য করা যেতে পারে, যা কৌশলটিকে আরও নমনীয় করে তোলে।
ট্রেডিংয়ের সময় ট্রেডিংয়ের সুযোগগুলি ধরার জন্য মূল্য বিপর্যয়ের বিচার করা হয়।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
যখন বাজারে অস্বাভাবিক ওঠানামা দেখা দেয়, তখন মসৃণ ওঠানামার হার সত্যিকারের ওঠানামার পরিস্থিতিকে সঠিকভাবে প্রতিফলিত করতে পারে না, যার ফলে ভুল সংকেত তৈরি হয়। প্যারামিটারগুলি সামঞ্জস্য করে মডেলটি অনুকূলিতকরণ করা যেতে পারে।
টার্গেট ব্যান্ডের পরিসীমা যদি ভুলভাবে সেট করা হয়, তবে এটি ট্রেডিং ফ্রিকোয়েন্সি বা কম সংকেত হতে পারে। সর্বোত্তম পরিসীমা খুঁজে পেতে বিভিন্ন পরামিতি পরীক্ষা করা যেতে পারে।
ব্রেকআউট সিগন্যালের বিচার সময়ের বিলম্বের কারণে হতে পারে, যার ফলে প্রবেশাধিকার খুব তাড়াতাড়ি বা খুব দেরী হয়ে যেতে পারে। অন্যান্য সূচকগুলির সাথে একত্রে নিশ্চিতকরণ করা যেতে পারে।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
বিভিন্ন মূল্যের তথ্যের সময়কাল পরীক্ষা করে দেখুন কোন সময়কালের পরামিতি সবচেয়ে উপযুক্ত।
বিভিন্ন চলমান গড় অ্যালগরিদম চেষ্টা করুন, যেমন লিনিয়ার ওজনের চলমান গড় ইত্যাদি।
ট্রেডিং ভলিউম বা অন্যান্য সূচকগুলি প্রবেশ করান যাতে বিরতির সংকেত নিশ্চিত করা যায়।
একক স্টপ নিয়ন্ত্রণ করতে স্টপ বা ট্রেইলিং স্টপ সেট করুন।
সর্বোত্তম লক্ষ্যবস্তু ব্যাপ্তি নির্ধারণের জন্য অপ্টিমাইজড ভোল্টেজ রেট ফ্যাক্টর mult এর মান নির্ধারণ করুন।
এই কৌশলটির সামগ্রিক ধারণাটি পরিষ্কার, মূল্যের ওঠানামা দ্বারা লক্ষ্যবস্তু তৈরি করা, দামের ব্রেকডাউন ব্যবহার করে লেনদেনের সংকেত তৈরি করা, কার্যকরভাবে বাজারের পরিবর্তনের প্রবণতা অনুসরণ করা যায়। তবে কিছু উন্নতির জায়গাও রয়েছে, প্যারামিটার অপ্টিমাইজেশন, নিশ্চিতকরণ সূচক প্রবর্তন ইত্যাদির মাধ্যমে কৌশলটি আরও স্থিতিশীল এবং নির্ভরযোগ্য করা যায়।
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("1SmSm1 Strategy", shorttitle="1SmSm1", overlay=true)
// Source
src = input(defval=close, title="Source")
// Sampling Period
per = input(defval=100, minval=1, title="Sampling Period")
// Range Multiplier
mult = input(defval=3.0, minval=0.1, title="Range Multiplier")
// Smooth Average Range
smoothrng(x, t, m) =>
wper = (t * 2) - 1
avrng = ema(abs(x - x[1]), t)
smoothrng = ema(avrng, wper) * m
smoothrng
smrng = smoothrng(src, per, mult)
// Range Filter
rngfilt(x, r) =>
rngfilt = x
rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r))
rngfilt
filt = rngfilt(src, smrng)
// Filter Direction
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])
downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])
// Target Bands
hband = filt + smrng
lband = filt - smrng
// Breakouts
longCondition = (src > filt) and (src > src[1]) and (upward > 0)
shortCondition = (src < filt) and (src < src[1]) and (downward > 0)
strategy.entry("Buy", strategy.long, when = longCondition)
strategy.entry("Sell", strategy.short, when = shortCondition)
// Plotting
plot(filt, color=upward > 0 ? color.lime : downward > 0 ? color.red : color.orange, linewidth=3, title="Range Filter")
hbandplot = plot(hband, color=color.aqua, transp=100, title="High Target")
lbandplot = plot(lband, color=color.fuchsia, transp=100, title="Low Target")
// Fills
fill(hbandplot, lbandplot, color=color.aqua, title="Target Range")
// Bar Color
barcolor(longCondition ? color.green : shortCondition ? color.red : na)
// Alerts
alertcondition(longCondition, title="Buy Alert", message="BUY")
alertcondition(shortCondition, title="Sell Alert", message="SELL")