
এই কৌশলটি ল্যারি উইলিয়ামস তার বইয়ের দীর্ঘমেয়াদী গোপন স্বল্পমেয়াদী ট্রেডিং প্যাকেজে ব্যাখ্যা করেছেন, যা দুটি 3-মেয়াদী চলমান গড় ব্যবহার করে, একটি উচ্চতার প্রতিনিধিত্ব করে এবং অন্যটি নিম্নের প্রতিনিধিত্ব করে। যখন দাম 3-মেয়াদী নিম্নের চলমান গড়ের নীচে থাকে, তখন আমাদের একটি দীর্ঘ অবস্থানের সংকেত থাকে।
এই কৌশলটির কেন্দ্রীয় যুক্তি হল উচ্চ-নিম্নের সাথে 3 টি সময়ের চলমান গড় গণনা করা। বিশেষত, এটি গতিশীল সমর্থন এবং প্রতিরোধের জন্য সর্বশেষ 3 টি বারের উচ্চ এবং নিম্নের সূচকীয় চলমান গড় গণনা করার জন্য ta.ema ফাংশন ব্যবহার করে। যখন দাম নিম্ন গড়ের নীচে পড়ে যায়, তখন এটি নির্দেশ করে যে এটি বর্তমানে একটি পতনশীল অবস্থানে রয়েছে, যাতে আমরা আরও কিছু করতে পারি; যখন দাম আবার উচ্চ গড়ের উপরে উঠে যায়, তখন এটি নির্দেশ করে যে উত্থানের প্রবণতা শেষ হয়ে গেছে। এইভাবে, কৌশলটি গতিশীলভাবে দামের পরিবর্তনগুলি ট্র্যাক করতে পারে, কম কেনা এবং বিক্রি করতে পারে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল এর সরলতা এবং গতিশীলতা। ঐতিহ্যগত নির্দিষ্ট সময়কালের উচ্চ ও নিম্ন পয়েন্ট গড়ের তুলনায়, এই কৌশলটি ক্রমাগত গণনা করা স্বল্পমেয়াদী চলমান গড় ব্যবহার করে, যা দামের পরিবর্তনের জন্য আরও সংবেদনশীল এবং সময়মতভাবে ধরা যায়। এটি এটিকে বাজারে প্রবেশ এবং প্রস্থান করার জন্য দ্রুত ক্রয়-বিক্রয় পয়েন্টগুলি সনাক্ত করতে দেয়। এছাড়াও, ছোট গণনাটি হ’ল এটির আরেকটি সুবিধা, যা লেনদেনের বিলম্ব হ্রাস করতে সহায়তা করে।
এই কৌশলটির প্রধান ঝুঁকি হ’ল এটি বড় সংবাদ ইভেন্টের মতো আকস্মিক ঘটনাগুলিতে ধীর প্রতিক্রিয়াশীল। কারণ এর চলমান গড়ের সময়কাল খুব ছোট, যখন দামের তীব্র ওঠানামা হয় তখন গড়ের অবস্থানটি সামঞ্জস্য করতে এটি একটি নির্দিষ্ট সময় নেয়। এটি ক্ষতির কারণ হতে পারে বা সুযোগগুলি মিস করতে পারে। অতিরিক্ত সংবেদনশীলতাও ভুল ব্যবসায়ের কারণ হতে পারে। এই ঝুঁকিগুলি হ্রাস করার জন্য, আমরা যথাযথভাবে চলমান গড়ের সময়কাল বাড়িয়ে তুলতে পারি বা ভুল সংকেত এড়াতে ফিল্টারিংয়ের শর্ত যুক্ত করতে পারি।
এই কৌশলটি আরও অনেক অপ্টিমাইজেশনের জায়গা রয়েছে। প্রথমত, আমরা অন্যান্য সূচক যেমন ঝড়ের সূচকগুলির সাথে মিলিত হয়ে ফিল্টার করতে পারি, যাতে সংকেতগুলি আরও নির্ভরযোগ্য হয়। দ্বিতীয়ত, আমরা ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লজিক যুক্ত করতে পারি। দ্বিতীয়ত, আমরা বাজার পরিস্থিতির গতিশীলতার সাথে চলমান গড়ের প্যারামিটারগুলিও সামঞ্জস্য করতে পারি, ট্রেন্ডিং বাজারে দীর্ঘায়িত সময়কাল এবং ঝড়ের বাজারে সংক্ষিপ্ত সময়কাল। এছাড়াও, মাল্টি টাইম ফ্রেম বিশ্লেষণ এবং মেশিন লার্নিং মডেল সনাক্তকরণ ইত্যাদি কৌশলটির কার্যকারিতা উন্নত করতে পারে।
এই কৌশলটি সামগ্রিকভাবে খুব সহজ এবং ব্যবহারিক, উচ্চ এবং নিম্নের স্বল্পমেয়াদী গড়ের মাধ্যমে প্রবণতা সম্পর্কে বিচার করা। এর সুবিধাগুলি হ’ল গতিশীল, কম গণনা, উচ্চ রিয়েল-টাইম, ঘন ঘন ব্যবসায়ের জন্য উপযুক্ত। তবে উদ্বেগজনক ইভেন্টের প্রতিক্রিয়া সংবেদনশীলতা এবং সংকেত ত্রুটির উচ্চ হার নিয়েও সমস্যা রয়েছে। এই সমস্যাগুলি উন্নতি ও অপ্টিমাইজেশনের দিকে রয়েছে, প্যারামিটার সমন্বয়, ফিল্টারিং শর্তাবলী এবং প্যাটার্ন সনাক্তকরণের মতো উপায়ে কৌশলটির কার্যকারিতা আরও বাড়ানো যেতে পারে।
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(
"Larry Williams 3 Period EMAs strategy",
overlay=true,
calc_on_every_tick=true,
currency=currency.USD
)
// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)
endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)
inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
(time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))
// EMA
period = 3
emaH = ta.ema(high, period)
emaL = ta.ema(low, period)
// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)
// Conditions
if(inDateRange and close < emaL)
strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
strategy.close("Long", comment="Close Long")
// Uncomment to enable short entries
//if(inDateRange and close > emaH)
// strategy.entry("Short", strategy.short, comment="Short")
//if(close < emaL)
// strategy.close("Short", comment="Close Short")