এই নিবন্ধটি একটি সহজ চলমান গড়ের উপর ভিত্তি করে একটি ট্রেডিং কৌশল নিয়ে আলোচনা করে। কৌশলটি 17 সময়ের চলমান গড়ের সাথে বন্ধের দামের তুলনা করে, যখন বন্ধের দাম চলমান গড়ের উপরে অতিক্রম করে এবং যখন এটি অতিক্রম করে তখন শর্ট যায়।
কৌশলটি নিম্নলিখিত পরামিতিগুলি ব্যবহার করে চলমান গড় গণনা করেঃ
এই পরামিতিগুলির উপর ভিত্তি করে, getMAType (()) ফাংশনটি বন্ধের মূল্যের 17-অবধি এসএমএ গণনা করতে বলা হয়।
তারপর বন্ধের মূল্য এবং চলমান গড়ের মধ্যে সম্পর্ক তুলনা করুনঃ
যখন বন্ধের মূল্য নীচে থেকে চলমান গড়ের উপরে অতিক্রম করে, তখন একটি দীর্ঘ সংকেত উৎপন্ন হয়। যখন এটি উপরে থেকে নীচে অতিক্রম করে, তখন একটি সংক্ষিপ্ত সংকেত উৎপন্ন হয়।
ব্যাকটেস্টের সময়, লং সিগন্যালের সময় লং পজিশন খুলুন এবং শর্ট সিগন্যালের সময় শর্ট পজিশন খুলুন।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল যে যুক্তিটি খুব সহজ এবং পরিষ্কার। শুধুমাত্র একটি সূচক দিয়ে, এটি সূচকের দিক পরিবর্তন উপর ভিত্তি করে প্রবণতা বিপরীত বিচার করে। কৌশলটি বোঝা এবং বাস্তবায়ন করা সহজ, শিক্ষানবিশদের জন্য উপযুক্ত।
এছাড়াও, চলমান গড়গুলি প্রবণতা অনুসরণকারী সূচকগুলির অন্তর্ভুক্ত, যা প্রবণতা পরিবর্তনগুলি কার্যকরভাবে ট্র্যাক করতে পারে এবং স্বল্পমেয়াদী বাজারের গোলমাল থেকে হস্তক্ষেপ এড়াতে পারে।
পরামিতিগুলি সামঞ্জস্য করে, এটি বিভিন্ন চক্র এবং বিভিন্ন পণ্যের সাথে খাপ খাইয়ে নিতে পারে।
প্রথমত, এই কৌশলটি কেবলমাত্র একটি সূচকের উপর নির্ভর করে, তাই মূল্যায়ন মানদণ্ডগুলি তুলনামূলকভাবে একক, যা আরও মিথ্যা সংকেত তৈরি করতে পারে।
এছাড়াও, প্রবণতা অনুসরণকারী সিস্টেম হিসাবে, এটি পরিসীমা-সীমাবদ্ধ এবং পাশের বাজারে ভালভাবে কাজ করে না।
এছাড়া, স্টপ লস বা লাভ নেওয়ার ব্যবস্থা না থাকলে ক্ষতি বাড়ার ঝুঁকি থাকে।
সমাধান হল অন্যান্য সূচককে অন্তর্ভুক্ত করা, মিথ্যা সংকেত হ্রাস করার জন্য পরামিতি সমন্বয়কে অনুকূল করা। ঝুঁকি নিয়ন্ত্রণ এবং ড্রাউনডাউনগুলি অনুকূল করার জন্য স্টপ লস এবং লাভ গ্রহণ যুক্ত করুন।
এখানে কৌশল অপ্টিমাইজ করার জন্য কিছু ধারণা দেওয়া হল:
চলমান গড়ের পরামিতিগুলি সামঞ্জস্য করুন, সময়ের সংখ্যাগুলি অনুকূল করুন, উদাহরণস্বরূপ 30 পেরিওড বা 50 পেরিওডের পরিবর্তন করুন।
বিভিন্ন ধরণের চলমান গড়, যেমন EMA, VIDYA ইত্যাদি ব্যবহার করে দেখুন।
সংমিশ্রণে অন্যান্য সূচক যোগ করুন, উদাহরণস্বরূপ ম্যাকডি শক্তি বিচার করতে; মিথ্যা সংকেত হ্রাস করতে আরএসআই।
স্টপ লস মেকানিজম যোগ করুন। একক ট্রেড ক্ষতির পরিমাণ নিয়ন্ত্রণ করতে নির্দিষ্ট শতাংশ বা ATR ভিত্তিক ট্রেলিং স্টপ লস সেট করুন।
মুনাফা গ্রহণের ব্যবস্থা যোগ করুন। মুনাফা সর্বাধিক করার জন্য লক্ষ্য মুনাফা শতাংশ সেট করুন।
এই অপ্টিমাইজেশানগুলি কৌশলটির কার্যকারিতাকে আরও স্থিতিশীল করে তুলতে পারে এবং অত্যধিক ড্রডাউন এড়াতে পারে।
এই নিবন্ধটি একটি 17 সময়ের চলমান গড়ের উপর ভিত্তি করে একটি সহজ ট্রেডিং কৌশল বিশ্লেষণ করে। কৌশলটি একটি সাধারণ প্রবণতা অনুসরণকারী সিস্টেমের অন্তর্গত সহজ সংকেত উত্স, সহজেই বোঝা এবং বাস্তবায়ন করে। কৌশলটির গভীরতর ব্যাখ্যা, এর উপকারিতা এবং বিপরীতগুলি বিশ্লেষণ করা হয়, এবং অপ্টিমাইজেশান ধারণাগুলির একাধিক মাত্রা প্রস্তাব করা হয়। এটি বিশ্বাস করা হয় যে অবিচ্ছিন্ন অপ্টিমাইজেশন এবং সমৃদ্ধির মাধ্যমে, এই কৌশলটি ধীরে ধীরে বিকশিত হতে পারে এবং লাইভ ট্রেডিংয়েও স্থিতিশীল রিটার্ন অর্জন করতে পারে।
/*backtest start: 2023-12-05 00:00:00 end: 2024-01-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Simple 17 BF 🚀", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Time Frame /////////////// testStartYear = input(2012, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true ///////////// Moving Average ///////////// source = input(title="MA Source", defval=ohlc4) maType = input(title="MA Type", defval="sma", options=["sma", "ema", "swma", "wma", "vwma", "rma"]) length = input(title="MA Length", defval=17) ///////////// Get MA Function ///////////// getMAType(maType, sourceType, maLen) => res = sma(close, 1) if maType == "ema" res := ema(sourceType, maLen) if maType == "sma" res := sma(sourceType, maLen) if maType == "swma" res := swma(sourceType) if maType == "wma" res := wma(sourceType, maLen) if maType == "vwma" res := vwma(sourceType, maLen) if maType == "rma" res := rma(sourceType, maLen) res MA = getMAType(maType, source, length) /////////////// Strategy /////////////// long = close > MA short = close < MA last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) /////////////// Execution /////////////// if testPeriod() strategy.entry("L", strategy.long, when=long_signal) strategy.entry("S", strategy.short, when=short_signal) /////////////// Plotting /////////////// p1 = plot(MA, color = long ? color.lime : color.red, linewidth=2) p2 = plot(close, linewidth=2) fill(p1, p2, color=strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80)