SAR ডায়নামিক ট্র্যাকিং ব্রেকথ্রু থ্রি মুভিং এভারেজ স্ট্র্যাটেজি


সৃষ্টির তারিখ: 2023-11-08 11:53:09 অবশেষে সংশোধন করুন: 2023-11-08 11:53:09
অনুলিপি: 0 ক্লিকের সংখ্যা: 776
1
ফোকাস
1617
অনুসারী

SAR ডায়নামিক ট্র্যাকিং ব্রেকথ্রু থ্রি মুভিং এভারেজ স্ট্র্যাটেজি

ওভারভিউ

এটি একটি ব্রেক-আউট ট্রেডিং কৌশল যা প্যারালাইন এসএআর সূচককে তিনটি ভিন্ন পিরিয়ডের এসএমএমএ গড়ের সাথে একত্রিত করে। এটি তিনটি গড়ের বিস্তৃত উত্থানের সময় বেশি করে এবং তিনটি গড়ের বিস্তৃত পতনের সময় শূন্য করে এবং এসএআর সূচকের সাথে মিলিত হয়ে ট্রেন্ডের দিকনির্দেশনা দেয় এবং যখন এসএআর সূচকটি পরিবর্তিত হয় তখন বিপরীতভাবে পজিশন খোলার জন্য। এই কৌশলটি একই সাথে স্টপ লস এবং স্টপ স্টপকে সমর্থন করে।

কৌশল নীতি

এই কৌশলটি মূলত নিম্নলিখিত বিষয়গুলির উপর ভিত্তি করে তৈরি করা হয়েছেঃ

  1. প্যারালাইন এসএআর সূচক ব্যবহার করে বর্তমান প্রবণতা দিক নির্ণয় করুন। এসএআর সূচক গতিশীলভাবে দামের পরিবর্তনগুলি ট্র্যাক করতে পারে, মাল্টিহেড প্রবণতা এবং ফাঁকা প্রবণতা নির্ণয় করতে পারে।

  2. তিনটি ভিন্ন পিরিয়ডের এসএমএমএ গড়রেখা সেট করুনঃ দ্রুত লাইন 21 পিরিয়ড, মাঝারি লাইন 50 পিরিয়ড, এবং ধীর লাইন 200 পিরিয়ড। যখন তিনটি গড়রেখা সব উপরে উঠে যায়, তখন এটি একটি মাল্টিহেড প্রবণতা হিসাবে বিবেচিত হয়; যখন তিনটি গড়রেখা সব নিচে যায়, তখন এটি একটি ফাঁকা প্রবণতা হিসাবে বিবেচিত হয়।

  3. যখন SAR সূচকটি নিচে চলে যায়, তখন যদি তিনটি সমান্তরাল সার্বিকভাবে উঠে যায়, তবে অতিরিক্ত প্রবেশ করুন।

  4. যদি SAR সূচকটি উপরে চলে যায়, তবে যদি তিনটি সমান্তরাল লাইন সম্পূর্ণরূপে পড়ে যায়, তবে কমান্ডে প্রবেশ করুন।

  5. স্টপ লস এবং স্টপ স্টপ। স্টপ লস SAR সূচককে গতিশীল স্টপ লস হিসাবে ব্যবহার করে এবং স্টপ স্টপটি প্রবেশের দামের একটি নির্দিষ্ট অনুপাত হিসাবে সেট করে।

বিশেষত, কৌশলটি প্রথমে বিচার করে যে বর্তমান BAR এর SAR সূচকটি পরিবর্তিত হয়েছে কিনা। যদি SAR উপরে থেকে নীচে চলে যায় এবং তিনটি সমান্তরাল সম্পূর্ণরূপে উপরে থাকে তবে আরও বেশি করুন; যদি SAR নীচে থেকে উপরে চলে যায় এবং তিনটি সমান্তরাল সম্পূর্ণরূপে নিচে থাকে তবে শূন্য করুন।

পজিশন ধরে রাখার পর, স্টপ লিনাকে পরবর্তী BAR-এর SAR নির্দেশক মূল্য হিসেবে সেট করা হয়, যেখানে SAR-কে গতিশীল ট্র্যাকিং স্টপ হিসেবে ব্যবহার করা হয়। স্টপ লিনাকে প্রবেশের মূল্যের ১০% হিসেবে সেট করা হয়। যখন দাম স্টপ বা স্টপ লস লেভেল পৌঁছায়, তখন পজিশন থেকে বেরিয়ে আসা হয়।

সামর্থ্য বিশ্লেষণ

এই কৌশলটি প্রবণতা নির্ধারণের সূচক এবং বহু-সময়কালীন গড়ের সুবিধাগুলি একত্রিত করে, যখন প্রবণতা পরিবর্তিত হয় তখন সময়মতো প্রবেশ করতে পারে, এবং একই সাথে গড়ের ফিল্টারিংয়ের মাধ্যমে মিথ্যা বিরতি দেয়। প্রধান সুবিধাগুলি হলঃ

  1. SAR সূচকগুলি গতিশীলভাবে ট্রেন্ডের পরিবর্তনগুলি নির্ধারণ করতে এবং ট্রেন্ডের পরিবর্তনের সুযোগগুলি দ্রুত ধরতে সক্ষম।

  2. তিনটি সমান্তরাল লাইন কার্যকরভাবে বাজারের শব্দ ফিল্টার করে এবং মিথ্যা ব্রেকিং এড়ায়।

  3. এসএমএমএ গড়রেখা ব্যবহার করা হয়েছে, যাতে গড়রেখার ঝাঁকুনির ফলে ট্রেডিংয়ের ঝামেলা কম হয়।

  4. স্টপ লস স্টপ সেটআপের সাথে, একক ক্ষতি নিয়ন্ত্রণ করা যায় এবং একই সাথে মুনাফার কিছু অংশ লক করা যায়।

  5. কৌশলগত প্যারামিটার সেটিং নমনীয়, বিভিন্ন বাজারের জন্য প্যারামিটারগুলি সামঞ্জস্য করতে পারে, কৌশলগত প্রভাবকে অনুকূলিত করতে পারে।

ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছে, যার মধ্যে রয়েছেঃ

  1. অস্থির প্রবণতায়, SAR সূচকটি একাধিকবার ঘন ঘন ঘুরতে পারে, যার ফলে খুব ঘন ঘন লেনদেনের ফলে লেনদেনের ফি বৃদ্ধি পায়।

  2. তিনটি সমান্তরাল Settings সব জাতের জন্য পুরোপুরি উপযুক্ত নাও হতে পারে এবং নির্দিষ্ট জাতের পরিস্থিতি অনুসারে সামঞ্জস্য করা প্রয়োজন।

  3. স্টপ লস সেট করা হয় পরবর্তী BAR এর SAR মূল্যের সাথে, যার ফলে ক্ষতির পরিমাণ বাড়তে পারে।

  4. স্থিতিশীল প্রবণতায় ভুয়া ব্রেকআউট এসএআরকে ঘুরিয়ে দেয় এমন সমস্যাটি প্যারামিটারগুলি সমতল এসএআর কার্ভকে সামঞ্জস্য করে প্রশমিত করা যেতে পারে।

  5. ভুল গড় সেটিংসের ফলে ট্রেন্ড মিস হতে পারে অথবা ভুল সংকেত তৈরি হতে পারে, যার জন্য সতর্কতার সাথে পরীক্ষা এবং অপ্টিমাইজেশান করা প্রয়োজন।

ঝুঁকি মোকাবেলায়, নিম্নলিখিত পয়েন্টগুলি থেকে অপ্টিমাইজেশন করা যেতে পারেঃ

  1. SAR প্যারামিটারগুলি বিভিন্ন জাতের পরিবর্তনের সাথে সামঞ্জস্য করে যাতে ঘন ঘন ঘুরার সম্ভাবনা কম হয়।

  2. তিনটি সমান্তরাল রেখার প্যারামিটারগুলিকে বিভিন্ন জাতের বৈশিষ্ট্যগুলির সাথে আরও মিলিয়ে সাজানো হয়েছে।

  3. অপ্টিমাইজড স্টপ-অফ কৌশল যেমন ছোট স্টপ-অফ, মোবাইল স্টপ-অফ ইত্যাদি।

  4. ট্রেডিং ফ্রিকোয়েন্সি মার্কেটে স্টপ লস ব্যবহার করুন, যাতে স্লাইড পয়েন্ট ক্ষতির বিস্তার না করে।

  5. প্যারামিটার অপ্টিমাইজেশান টেস্ট করুন, গড় লাইন এবং SAR প্যারামিটারগুলির প্রভাব কৌশল কার্যকারিতার উপর মূল্যায়ন করুন।

অপ্টিমাইজেশান দিক

উপরের বিশ্লেষণের ভিত্তিতে, এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. এসএআর প্যারামিটার সেটিং অপ্টিমাইজ করুন, এসএআর কার্ভকে মসৃণ করুন, কার্ভের ঘূর্ণন কম করুন এবং অতিরিক্ত লেনদেন এড়ান।

  2. ট্রেডিং প্রজাতির বৈশিষ্ট্যগুলির সাথে সামঞ্জস্য রেখে তিনটি সমান্তরাল রেখার দৈর্ঘ্যকে সমন্বয় করুন, যাতে এটি আরও ভাল ট্রেন্ড ফিল্টারিং করতে পারে।

  3. গতিশীল স্টপ স্ট্র্যাটেজি ব্যবহার করুন, যেমন সরানো স্টপ, ছোট স্টপ স্টপ ইত্যাদি, স্টপ স্টপের ক্ষতি হ্রাস করুন।

  4. স্টপ লস হ্রাস করার জন্য উচ্চ ফ্রিকোয়েন্সি ট্রেডিং মার্কেটে সীমিত মূল্যের স্টপ লস ব্যবহার করুন।

  5. অন্যান্য সূচক যেমন আরএসআই, কেডি ইত্যাদি যুক্ত করুন, সংকেতের গুণমান উন্নত করুন এবং মিথ্যা ভাঙ্গার সম্ভাবনা হ্রাস করুন।

  6. প্রবেশের অবস্থার অনুকূলিতকরণ, এসএআর ঘুরানোর সময় একই সাথে কে লাইন আকৃতি পরীক্ষা করার কথা বিবেচনা করা যেতে পারে, যাতে নিম্নমানের সংকেত এড়ানো যায়।

  7. পুনরায় প্রবেশের শর্ত যুক্ত করুন, যখন মূল্য বন্ধের পরে লাভজনক দিকে চলতে থাকে তখন পুনরায় প্রবেশ করুন

  8. মুনাফা অর্জনের জন্য স্টপ স্টপিং কৌশল উন্নত করুন, যেমন, মুভিং স্টপ, পার্ট স্টপ, লেভেল ডিফারেনশিয়াল স্টপ ইত্যাদি

  9. প্রতিক্রিয়া ফলাফলের উপর ভিত্তি করে প্যারামিটারগুলিকে অপ্টিমাইজ করা, সামগ্রিক কৌশল কার্যকারিতার উপর প্যারামিটারগুলির প্রভাব মূল্যায়ন করা।

সারসংক্ষেপ

সামগ্রিকভাবে, এটি একটি সহজ এবং ব্যবহারিক বিরতি কৌশল যা ট্রেন্ড ট্র্যাকিং সূচক এসএআর এবং সমান্তরালের সাথে মিলিত। এটি এসএআর ব্যবহার করে প্রবণতা পরিবর্তনের সংবেদনশীলতা এবং সমান্তরালের তরঙ্গের কার্যকারিতা নির্ধারণ করে এবং প্রবণতা বিপরীত বিন্দুতে দ্রুত প্রবেশ করে। ঝুঁকি নিয়ন্ত্রণ এবং মুনাফা লক করার জন্য একটি স্টপ লস স্টপ সেট আপ করা হয়। প্যারামিটার সেটিংগুলি সামঞ্জস্য করে এবং প্রবেশের ও আউটপুট শর্তগুলি অনুকূলিত করে কৌশলগত কার্যকারিতা অর্জন করা যেতে পারে। তবে ব্যবসায়ীদের অত্যধিক লেনদেন এবং মিথ্যা বিরতি নিয়ন্ত্রণের বিষয়ে সতর্কতা অবলম্বন করতে হবে, বিভিন্ন জাতের জন্য প্যারামিটার অপ্টিমাইজেশন এবং কৌশল পরীক্ষা করে, যার ফলে একটি স্থিতিশীল ট্রেডিং সিস্টেম পাওয়া যায়।

কৌশল সোর্স কোড
/*backtest
start: 2023-10-08 00:00:00
end: 2023-11-07 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="SAR + 3SMMA with SL & TP", overlay=true, calc_on_order_fills=false, calc_on_every_tick=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.USD, commission_type= strategy.commission.percent, commission_value=0.03)
start = input.float(0.02, step=0.01, group="SAR")
increment = input.float(0.02, step=0.01, group="SAR")
maximum = input.float(0.2, step=0.01, group="SAR")

//Take Profit Inputs     
take_profit = input.float(title="Take Profit (%)", minval=0.0, step=0.1, defval = 0.1, group="Stop Loss and Take Profit", inline="TP") * 0.01

//Stop Loss Inputs
stop_loss = input.float(title="StopLoss (%)", minval=0.0, step=0.1, defval=1, group="Stop Loss and Take Profit", inline="SL") * 0.01

// Smooth Moving Average
fastSmmaLen = input.int(21, minval=1, title="Fast Length", group = "Smooth Moving Average")
midSmmaLen = input.int(50, minval=1, title="Mid Length", group = "Smooth Moving Average")
slowSmmaLen = input.int(200, minval=1, title="Slow Length", group = "Smooth Moving Average")

src = input(close, title="Source", group = "Smooth Moving Average")

smma(ma, src, len) => 
    smma = 0.0
    smma := na(smma[1]) ? ma : (smma[1] * (len - 1) + src) / len
    smma

fastSma = ta.sma(src, fastSmmaLen)
midSma = ta.sma(src, midSmmaLen)
slowSma = ta.sma(src, slowSmmaLen)

fastSmma = smma(fastSma, src, fastSmmaLen)
midSmma = smma(midSma, src, midSmmaLen)
slowSmma = smma(slowSma, src, slowSmmaLen)

isSmmaUpward = ta.rising(fastSmma, 1) and ta.rising(midSmma, 1) and ta.rising(slowSmma, 1)

var bool uptrend = na
var float EP = na
var float SAR = na
var float AF = start
var float nextBarSAR = na

if bar_index > 0
	firstTrendBar = false
	SAR := nextBarSAR
	if bar_index == 1
		float prevSAR = na
		float prevEP = na
		lowPrev = low[1]
		highPrev = high[1]
		closeCur = close
		closePrev = close[1]
		if closeCur > closePrev
			uptrend := true
			EP := high
			prevSAR := lowPrev
			prevEP := high
		else
			uptrend := false
			EP := low
			prevSAR := highPrev
			prevEP := low
		firstTrendBar := true
		SAR := prevSAR + start * (prevEP - prevSAR)
	if uptrend
		if SAR > low
			firstTrendBar := true
			uptrend := false
			SAR := math.max(EP, high)
			EP := low
			AF := start
	else
		if SAR < high
			firstTrendBar := true
			uptrend := true
			SAR := math.min(EP, low)
			EP := high
			AF := start
	if not firstTrendBar
		if uptrend
			if high > EP
				EP := high
				AF := math.min(AF + increment, maximum)
		else
			if low < EP
				EP := low
				AF := math.min(AF + increment, maximum)
	if uptrend
		SAR := math.min(SAR, low[1])
		if bar_index > 1
			SAR := math.min(SAR, low[2])
	else
		SAR := math.max(SAR, high[1])
		if bar_index > 1
			SAR := math.max(SAR, high[2])
	nextBarSAR := SAR + AF * (EP - SAR)

sarIsUpTrend = uptrend ? true : false

sarFlippedDown = sarIsUpTrend and not sarIsUpTrend[1] ? true : false
sarFlippedUp = not sarIsUpTrend and sarIsUpTrend[1] ? true : false


longEntryCondition = isSmmaUpward and sarFlippedDown
shortEntryCondition = not isSmmaUpward and sarFlippedUp

if(longEntryCondition)
    strategy.entry("L", strategy.long, stop=nextBarSAR, comment="L")

if(shortEntryCondition)
    strategy.entry("S", strategy.short, stop=nextBarSAR, comment="S")


strategy.exit("CL", when=strategy.position_size > 0, limit=strategy.position_avg_price * (1+take_profit), stop=strategy.position_avg_price*(1-stop_loss))
strategy.exit("CS", when=strategy.position_size < 0, limit=strategy.position_avg_price * (1-take_profit), stop=strategy.position_avg_price*(1+stop_loss))


plot(SAR, style=plot.style_cross, linewidth=1, color=color.orange)
plot(nextBarSAR, style=plot.style_cross, linewidth=1, color=color.aqua)
plot(series = fastSmma, title="fastSmma", linewidth=1)
plot(series = midSmma, title="midSmma", linewidth=2)
plot(series = slowSmma, title="slowSmma", linewidth=3)
plotchar(series = isSmmaUpward, title="isSmmaUpward", char='')
plotchar(series=sarIsUpTrend, title="sarIsUpTrend", char='')
plotchar(series=sarFlippedUp, title="sarFlippedUp", char='')
plotchar(series=sarFlippedDown, title="sarFlippedDown", char='')
plotchar(series=longEntryCondition, title="longEntryCondition", char='')
plotchar(series=shortEntryCondition, title="shortEntryCondition", char='')
plotchar(series=strategy.position_size > 0, title="inLong", char='')
plotchar(series=strategy.position_size < 0, title="inShort", char='')


//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)