মাল্টি-লেভেল মুভিং এভারেজ ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-09-23 15:55:20 অবশেষে সংশোধন করুন: 2023-09-23 15:55:20
অনুলিপি: 0 ক্লিকের সংখ্যা: 686
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

কৌশল নীতি

  1. পরিমাপ প্যারামিটারে src উৎস মূল্যের len-চক্রের সরল চলমান গড়, একটি বেঞ্চমার্ক গড় হিসাবে

  2. long এবং short পরামিতি অনুসারে সংশ্লিষ্ট দীর্ঘ এবং সংক্ষিপ্ত লাইনের সংখ্যা নির্ধারণ করুন।

  3. longline1 ইত্যাদি দীর্ঘ লাইনটি longlevel1 ইত্যাদি প্যারামিটারগুলির দ্বারা সেট করা অনুপাত অনুসারে বেসলাইন গড়ের জন্য বিচ্যুতি দেয়। Shortline1 ইত্যাদি সংক্ষিপ্ত লাইন একই।

  4. ট্রেডেবল টাইমে, মূল্য এবং গড়ের মধ্যে সম্পর্ক নির্ণয় করে, মাল্টি-লেভেল এন্ট্রি অর্জন করা যায়।

  5. যখন দাম বেঞ্চমার্ক গড়ের কাছাকাছি আসে তখন স্টপ লস কার্যকর করা হয়।

  6. শেষের দিকে বাধ্যতামূলকভাবে পলিশ করা।

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

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

  1. মাল্টি-লেভেল এন্ট্রি, বিভিন্ন পর্যায়ে প্রবণতা অর্জন এবং মুনাফা অর্জন করা যায়।

  2. বিভিন্ন প্রজাতি এবং ট্রেডিং স্টাইল অনুযায়ী কাস্টমাইজ করা যায়।

  3. সমান্তরাল সিস্টেমের উপর ভিত্তি করে, এটি একটি বিরোধী বিচারের জন্য আরো নির্ভরযোগ্য।

  4. এই সময়সীমার মাধ্যমে, গুরুত্বপূর্ণ তথ্য প্রকাশের মতো প্রভাবশালী সময়গুলো এড়ানো যায়।

  5. একক ক্ষতি নিয়ন্ত্রণের জন্য একটি ক্ষতিরোধ ব্যবস্থা রয়েছে।

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

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. একাধিকবার আমানত বাড়ানো ঝুঁকিপূর্ণ এবং এর জন্য পর্যাপ্ত আর্থিক সহায়তা প্রয়োজন।

  2. প্যারামিটার সেটিং ভুল হলে অতি সংক্ষিপ্ত লাইন অপারেশন হতে পারে, প্যারামিটারগুলি যথাযথভাবে সেট করুন।

  3. ফিক্সড আউট টাইম ট্রেন্ডের শেষ ধাপের মুনাফা মিস করতে পারে। স্টপ লস ট্র্যাকিং অপ্টিমাইজ করার জন্য সেট করা যেতে পারে।

  4. রাতের ডিস্ক এবং রাতারাতি হোল্ডিংয়ের ক্ষেত্রে বিবেচনা করা হয় না। আপনি হোল্ডিং খরচ নিয়ন্ত্রণ যোগ করতে পারেন।

  5. পজিশনের সংখ্যা নিয়ন্ত্রণ না করে, একতরফা পজিশনের আকার বাড়িয়ে দিতে পারে।

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

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  1. স্থির সময়সীমার পরিবর্তে মোবাইল স্টপ লস যুক্ত করা হয়েছে।

  2. রাতারাতি পজিশন রাখার বিষয়টি বিবেচনা করুন, পজিশন হোল্ডিং ফি এবং স্লাইড পয়েন্ট কন্ট্রোল যোগ করুন।

  3. শেষ ধাপের মুনাফা অর্জনের জন্য ট্র্যাকিং স্টপ-এ যোগ দিন।

  4. পজিশনের উপর ভিত্তি করে একক হাতের সংখ্যা সামঞ্জস্য করুন, একক দিকে পজিশন নিয়ন্ত্রণ করুন।

  5. বিভিন্ন প্রজাতির উপর বিভিন্ন পরামিতিগুলির প্রভাব পরীক্ষা করা, পরামিতি অপ্টিমাইজেশান প্রক্রিয়া স্থাপন করা।

  6. অপ্রয়োজনীয় ক্ষতি হ্রাস করার জন্য পরীক্ষার স্টপ পয়েন্টের অপ্টিমাইজেশন।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-09-16 00:00:00
end: 2023-09-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.1", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
long = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for long")
short = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
src = input(ohlc4, title = "MA Source")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
fromyear = input(1900, defval = 1900, 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")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = long >= 1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 = long >= 2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close
longline3 = long >= 3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close
shortline1 = short >= 1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 = short >= 2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close
shortline3 = short >= 3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close

//Lines
colorlong1 = long >= 1 ? color.lime : na
colorlong2 = long >= 2 ? color.lime : na
colorlong3 = long >= 3 ? color.lime : na
colorshort1 = short >= 1 ? color.red : na
colorshort2 = short >= 2 ? color.red : na
colorshort3 = short >= 3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort1)
plot(shortline2, offset = offset, color = colorshort2)
plot(shortline1, offset = offset, color = colorshort3)
plot(ma, offset = offset, color = color.blue)
plot(longline1, offset = offset, color = colorlong1)
plot(longline2, offset = offset, color = colorlong2)
plot(longline3, offset = offset, color = colorlong3)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long >= 3 and needtime))
    
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short >= 3 and needtime))
if size > 0
    strategy.entry("TPL", strategy.short, 0, limit = ma)
if size < 0
    strategy.entry("TPS", strategy.long, 0, limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()