
এই নিবন্ধে একটি ট্রেডিং কৌশল আলোচনা করা হয়েছে যা সরল চলমান গড়ের উপর ভিত্তি করে। এই কৌশলটি 17 এর দৈর্ঘ্যের চলমান গড়ের সাথে সমাপ্তির দামের তুলনা করে, যখন সমাপ্তির দাম চলমান গড়ের উপর দিয়ে যায় তখন বেশি করে এবং নীচে যাওয়ার সময় শূন্য করে।
এই কৌশলটি নিম্নলিখিত প্যারামিটারগুলি ব্যবহার করে চলমান গড় গণনা করেঃ
এই প্যারামিটারগুলির উপর ভিত্তি করে, getMAType () ফাংশনটি 17 টি চক্রের সমাপ্তির মূল্যের এসএমএ গণনা করে।
এবং তারপরে বন্ধের দামের সাথে চলমান গড়ের সম্পর্কটি তুলনা করুনঃ
মুভিং এভারেজের নিচে থেকে যখন ক্লোজিং প্রাইস পার হয়, তখন পলিসি সিগন্যাল তৈরি হয়; উপরে থেকে নিচে পার হলে, ডাইস সিগন্যাল তৈরি হয়।
রিটার্নিং চক্রের মধ্যে, যদি একাধিক সংকেত পাওয়া যায় তবে একাধিক পজিশন খোলা হবে, যদি খালি সংকেত পাওয়া যায় তবে খালি পজিশন খোলা হবে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ’ল ধারণাটি খুব সহজ এবং পরিষ্কার। কেবলমাত্র একটি সূচক, তার দিকের পরিবর্তন দ্বারা প্রবণতার পরিবর্তনগুলি বিচার করা যায়। কৌশলটি সহজেই বোঝা যায়, সহজেই বাস্তবায়ন করা যায় এবং শিক্ষানবিশদের জন্য উপযুক্ত।
এছাড়াও, মুভিং এভারেজগুলি প্রবণতা-অনুসরণকারী সূচক, যা বাজারের স্বল্পমেয়াদী গোলমাল থেকে বিরত না হয়ে কার্যকরভাবে প্রবণতা পরিবর্তনের উপর নজর রাখতে পারে।
প্যারামিটার সমন্বয় করে, বিভিন্ন সময়কাল এবং বিভিন্ন জাতের সাথে মানিয়ে নিতে পারে।
প্রথমত, এই কৌশলটি কেবলমাত্র একটি সূচকের উপর ভিত্তি করে তৈরি করা হয়েছে, যা একটি একক মানদণ্ডের উপর ভিত্তি করে তৈরি করা হয়েছে, যা আরও ভুল সংকেত তৈরি করতে পারে।
এবং এই কৌশলটি একটি প্রবণতা ট্র্যাকিং সিস্টেম, যা সংযোজন এবং অস্থির বাজারে কাজ করতে পারে না।
এছাড়াও, স্টপ লস স্টপ সেট না করে, ক্ষতির বিস্তারের ঝুঁকি রয়েছে।
সমাধানটি হল অন্যান্য সূচকগুলির সাথে মিলিত হওয়া, প্যারামিটার সমন্বয়কে অপ্টিমাইজ করা, ভুল সংকেত হ্রাস করা। স্টপ লস স্টপ সেট করা, ঝুঁকি নিয়ন্ত্রণ করা এবং প্রত্যাহারের অপ্টিমাইজ করা।
নিম্নলিখিত বিষয়গুলি কৌশলগতভাবে অপ্টিমাইজ করার জন্য বিবেচনা করা যেতে পারেঃ
চলমান গড়ের প্যারামিটারগুলি সামঞ্জস্য করুন, চক্রের সংখ্যা অনুকূলিত করুন যেমন 30 চক্র বা 50 চক্র ইত্যাদি
বিভিন্ন ধরনের মুভিং এভারেজ যেমন ইএমএ, ভিড্যা ইত্যাদি ব্যবহার করে দেখুন। এগুলি দামের পরিবর্তনের প্রতি বিভিন্নভাবে সংবেদনশীল।
অন্যান্য সূচকগুলির সাথে যুক্ত করুন। উদাহরণস্বরূপ, MACD এর সাথে মিলিত, এটি শক্তিশালী এবং দুর্বলতা নির্ধারণ করতে পারে। অথবা RSI এর সাথে মিলিত, ভুল সংকেত হ্রাস করতে পারে।
ক্রমবর্ধমান স্টপ ম্যানেজমেন্ট। স্থির শতাংশ বা এটিআর মানের চলমান স্টপ সেট করুন। একক ক্ষতি নিয়ন্ত্রণ করুন।
ক্যাশব্যাক ব্যবস্থা বাড়ানো। লক্ষ্যমাত্রার লাভের শতাংশ নির্ধারণ করা। লাভের সর্বাধিকীকরণ করা।
এই অপ্টিমাইজেশানগুলি কৌশলটির কার্যকারিতা আরও স্থিতিশীল করে তোলে এবং অত্যধিক প্রত্যাহার এড়াতে পারে।
এই নিবন্ধটি 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)