গতি দ্বিগুণ চলমান গড় ট্রেডিং কৌশল

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

img

সারসংক্ষেপ

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

কৌশল নীতি

কৌশলটি মূলত নিম্নলিখিত মূল্যায়ন সূচকগুলির উপর ভিত্তি করে ট্রেডিং সিদ্ধান্ত নেয়ঃ

  1. মূল্য চ্যানেলঃ চ্যানেলের পরিসীমা নির্ধারণের জন্য গত 30টি মোমবাতিগুলির সর্বোচ্চ এবং সর্বনিম্ন মূল্য গণনা করুন। চ্যানেলের মাঝামাঝি পয়েন্টের উপরে বন্ধের মূল্যকে উত্থান বলে মনে করা হয়। চ্যানেলের মাঝামাঝি পয়েন্টের নীচে বন্ধের মূল্যকে হ্রাস বলে মনে করা হয়।

  2. দ্রুত আরএসআইঃ সর্বশেষ 2 মোমবাতিগুলির আরএসআই মান গণনা করুন। 25 এর নিচে আরএসআইকে ওভারসোল্ড এবং 75 এর উপরে আরএসআইকে ওভারক্রয় বলে মনে করা হয়।

  3. ইয়িন ইয়াং লাইন: সর্বশেষ ২টি মোমবাতিগুলির সত্তা আকার গণনা করুন। দুটি লাল মোমবাতি একটি bearish সংকেত প্রস্তাব করে যখন দুটি সবুজ মোমবাতি একটি bullish সংকেত প্রস্তাব করে।

  4. স্টপ লস শর্তঃ ক্ষতির পরিমাণ সীমিত করার জন্য ক্ষতির পরিমাণ একটি নির্দিষ্ট শতাংশে পৌঁছলে ফোর্স লিকুইডেশন।

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

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

এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ

  1. একাধিক সূচককে একত্রিত করে সংকেতের নির্ভুলতা উন্নত করা হয়েছে, যা মিথ্যা সংকেতগুলি ফিল্টার করতে সহায়তা করে।

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

  3. ব্যাকটেস্টের সময় কঠোর প্যারামিটার অপ্টিমাইজেশনের জন্য বিভিন্ন পণ্য এবং সময়সীমার মধ্যে উচ্চ নির্ভরযোগ্যতা।

  4. প্রত্যাশার বাইরে সম্ভাব্য ক্ষতি নিয়ন্ত্রণের জন্য স্বয়ংক্রিয় স্টপ লস প্রক্রিয়া।

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

এই কৌশলটির কিছু ঝুঁকিঃ

  1. ভুল মূল্য চ্যানেল প্যারামিটার সেটিং শক সৃষ্টি করতে পারে। খুব সংকীর্ণ চ্যানেল মিথ্যা ব্রেকআউট সক্রিয় করতে পারে।

  2. শক্তিশালী প্রবণতার সময় একতরফা পজিশন ধরে রাখার সময়টি খুব দীর্ঘ হতে পারে, যা অনুমানগুলি অতিক্রম করে।

  3. ভুল স্টপ লস পয়েন্ট সেটিং ক্ষতি বাড়িয়ে তুলতে পারে। এই পরামিতিটি সতর্কতার সাথে কনফিগার করা দরকার - খুব বেশি বা খুব কম অনুকূল হতে পারে।

আমরা চ্যানেলের পরামিতিগুলি সামঞ্জস্য করে, প্রবেশের সময়গুলি অনুকূল করে, গতিশীলভাবে স্টপ লস পয়েন্টগুলি সামঞ্জস্য করে ইত্যাদি এই ঝুঁকিগুলি হ্রাস এবং হ্রাস করতে পারি।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি আরও অনুকূল করতে পারে এমন কিছু দিকঃ

  1. স্বয়ংক্রিয় প্যারামিটার অপ্টিমাইজেশান অর্জনের জন্য মেশিন লার্নিং অ্যালগরিদম অন্তর্ভুক্ত করুন, অভিযোজনযোগ্যতা বাড়ান।

  2. ট্রেডিং সিদ্ধান্ত এবং সিগন্যালের নির্ভুলতা উন্নত করতে সংবাদের মতো আরও তথ্য উত্স একত্রিত করুন।

  3. ঝুঁকি নিয়ন্ত্রণের জন্য বাজারের অবস্থার উপর ভিত্তি করে গতিশীল পজিশন সাইজিং প্রক্রিয়া তৈরি করা।

  4. পরম ফলন আরও বাড়াতে ফিউচার আরবিট্রেজ ট্রেডিংয়ের ক্ষেত্রে প্রযোজ্যতা বাড়ানো।

সিদ্ধান্ত

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


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

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.2", shorttitle = "Price Channel str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 100000, title = "capital, %")
uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")
usersi = input(true, defval = true, title = "Use RSI strategy")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel Period")
showcl = input(true, defval = true, title = "Price Channel")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
trend = low > center ? 1 : high < center ? -1 : trend[1]
col = showcl ? blue : na
col2 = showcl ? black : na
plot(lasthigh, color = col2, linewidth = 2)
plot(lastlow, color = col2, linewidth = 2)
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Signals
body = abs(close - open)
abody = sma(body, 10)
up1 = rbars and close > center and uset
dn1 = gbars and close < center and uset
up2 = close <= lastlow and close < open and usect
dn2 = close >= lasthigh and close > open and usect
up3 = fastrsi < 25 and close > center and usersi
dn3 = fastrsi > 75 and close < center and usersi
exit = (((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2)
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Trading
if up1 or up2 or up3
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2 or dn3
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

আরো