ডাবল মুভিং মিডিয়ার বিপরীতমুখী কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৩-১০-২৪ 10:56:08
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি মূলত প্রবণতা বিপরীত থেকে লাভ করার জন্য ক্রয় এবং বিক্রয় সংকেত হিসাবে দ্বৈত চলমান গড় ব্যবহার করে। যখন স্বল্পমেয়াদী চলমান গড় দীর্ঘমেয়াদী চলমান গড়ের উপরে অতিক্রম করে তখন এটি দীর্ঘ হয় এবং যখন স্বল্পমেয়াদী চলমান গড় দীর্ঘমেয়াদী চলমান গড়ের নীচে অতিক্রম করে তখন এটি সংক্ষিপ্ত হয়। এটি একটি সাধারণ ট্রেলিং স্টপ লস কৌশল অন্তর্গত।

কৌশলগত যুক্তি

কৌশলটি প্রথমে দুটি চলমান গড়, একটি স্বল্পমেয়াদী ২০ দিনের এমএ এবং একটি দীর্ঘমেয়াদী ৬০ দিনের এমএ সেট করে। তারপর এটি প্রবেশ নির্ধারণের জন্য দুটি এমএ এর মধ্যে ক্রসিং পরিস্থিতি বিচার করে।

বিশেষত, যখন স্বল্পমেয়াদী এমএ দীর্ঘমেয়াদী এমএ এর উপরে অতিক্রম করে, এটি একটি আপট্রেন্ডের সংকেত দেয়, তাই দীর্ঘ যান। যখন স্বল্পমেয়াদী এমএ দীর্ঘমেয়াদী এমএ এর নীচে অতিক্রম করে, এটি একটি ডাউনট্রেন্ডের সংকেত দেয়, তাই শর্ট যান।

লং বা শর্ট হওয়ার পর স্টপ লস পদ্ধতি হল সর্বোচ্চ মুনাফা অর্জন করতে সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্যের উপর ভিত্তি করে ট্রেইলিং স্টপ।

কোডের মূল যুক্তি হল:

  1. ২০ দিনের EMA এবং ৬০ দিনের EMA গণনা করুন
  2. ২০ দিনের ইএমএ ৬০ দিনের ইএমএ অতিক্রম করে কিনা তা বিচার করুন, যদি হ্যাঁ হয় তবে দীর্ঘ যান
  3. যদি ২০ দিনের EMA ৬০ দিনের EMA এর নিচে চলে যায় তাহলে বিচার করুন, যদি হ্যাঁ হয় তবে শর্ট হয়ে যায়
  4. লং যাওয়ার পর, সর্বোচ্চ মূল্যের 3% এর নিচে স্টপ লস সেট করুন
  5. শর্ট হওয়ার পরে, সর্বনিম্ন মূল্যের 3% উপরে স্টপ লস সেট করুন
  6. স্টপ লস পজিশনে নিয়মিত সামঞ্জস্য করুন

সুবিধা বিশ্লেষণ

এই কৌশলটির সুবিধাগুলো হল:

  1. সহজ যুক্তি বাস্তবায়ন করা সহজ।
  2. ডাবল এমএ কার্যকরভাবে মিথ্যা বিরতি ফিল্টার করতে পারে।
  3. সর্বাধিক লাভের জন্য ট্রেইলিং স্টপ লক।
  4. প্রবণতা পরিবর্তনের সময় সময়মত সংকেত ধরতে পারে।
  5. যথাযথ ড্রাউন কন্ট্রোল, তুলনামূলকভাবে স্থিতিশীল।

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

এছাড়াও কিছু ঝুঁকি আছেঃ

  1. প্রবণতা অস্পষ্ট হলে প্রায়শই এমএগুলির মধ্যে ক্রসিং হয়, যার ফলে ক্ষতির পরিমাণ বেশি হয়।
  2. ভুল স্টপ লস সেটিং খুব লস বা খুব আক্রমণাত্মক হতে পারে।
  3. ভুল প্যারামিটার সেটিং যেমন সময়ের দৈর্ঘ্য মূল সংকেত মিস করতে পারে।
  4. উচ্চ ট্রেডিং খরচ লাভের মার্জিন হ্রাস করে।

ঝুঁকি মোকাবেলা করতেঃ

  1. অন্ধভাবে ট্রেডিং এড়ানোর জন্য প্রবণতা অস্পষ্ট হলে ফিল্টারগুলি গ্রহণ করুন।
  2. সঠিক সেটিং জন্য পরীক্ষা এবং স্টপ ক্ষতি পরিসীমা অপ্টিমাইজ করুন.
  3. ব্যাকটেস্ট এবং টিউনিং এর মাধ্যমে সর্বোত্তম পরামিতি খুঁজে বের করুন।
  4. ট্রেডিং খরচ কমাতে পজিশনের আকার কমানো।

অপ্টিমাইজেশান আইডিয়া

কৌশলটি নিম্নলিখিত ক্ষেত্রে আরও অপ্টিমাইজ করা যেতে পারেঃ

  1. মাল্টি-কন্ডিশন এন্ট্রি জন্য RSI মত অন্যান্য ফিল্টার যোগ করুন, মিথ্যা বিরতি এড়াতে।

  2. সর্বোত্তম পরামিতি মিশ্রণ খুঁজে পেতে এমএ সময়কাল অপ্টিমাইজ করুন। ইনক্রিমেন্টাল ওয়াক ফরওয়ার্ড দ্বারা বিভিন্ন সময়কাল পরীক্ষা করতে পারেন।

  3. সর্বোত্তম পরিসীমা খুঁজে পেতে ব্যাকটেস্ট গণনার মাধ্যমে স্টপ লস পরিসীমা অপ্টিমাইজ করুন। ডায়নামিক স্টপ লসও ব্যবহার করতে পারেন।

  4. ট্রেডিং ফ্রিকোয়েন্সি কমাতে স্টপ লস আউট হওয়ার পর রি-এন্ট্রি লজিক সেট করুন।

  5. প্রবণতা অনিশ্চিত হলে ট্রেডিং বন্ধ করার জন্য প্রবণতা সূচকের সাথে একত্রিত করুন।

  6. বাজারের অবস্থার উপর ভিত্তি করে পজিশনের আকার এবং গতিশীল স্টপ লস যোগ করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Scalper Strategy v1.4", shorttitle = "Scalper str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
needdb = input(true, defval = true, title = "Double Body")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = needdb == false ? ema(body, 30) : ema(body, 30) * 2
candle = high - low

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

আরো