রিসোর্স লোড হচ্ছে... লোডিং...

মাল্টি এমএ লিমিট অর্ডার ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-০৯-২২ 14:16:20
ট্যাগঃ

সারসংক্ষেপ

এটি একটি ট্রেডিং কৌশল যা একাধিক চলমান গড়ের উপর ভিত্তি করে সীমা অর্ডার সেট করে। যখন দাম বিভিন্ন এমএ স্তরগুলি ভেঙে যায় তখন এটি বিভিন্ন সংখ্যক দীর্ঘ বা সংক্ষিপ্ত সীমা অর্ডার সেট করবে, একটি পিরামিড আকৃতির মাল্টি-পজিশন গঠন করবে। যখন দাম আবার এমএ দিয়ে ভেঙে যায়, তখন বিপরীত সীমা অর্ডার খোলা হবে। অবস্থানগুলি ধরে রাখার সময়, যদি দাম মধ্যম এমএ ভেঙে যায় তবে অবস্থানগুলি বিপরীত বাজার অর্ডার দ্বারা বন্ধ হয়ে যাবে।

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

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

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

সমগ্র কৌশলটি ট্রেডিং লজিক গঠনের জন্য পিরামিড-স্টাইল খোলার সাথে অগ্রগতি-স্টাইল বন্ধের সংমিশ্রণ করে। এটি খরচ কমাতে ভাল গড় মূল্যে পজিশন খোলার লক্ষ্য রাখে এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস জন্য মাঝারি এমএ ব্যবহার করে।

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

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

  1. প্রবণতা নির্ধারণের জন্য এমএ ব্যবহার করে, সহজ এবং স্বজ্ঞাত অপারেট।

  2. পিরামিড স্টাইলের ওপেনিং ট্রেন্ডের প্রথম পর্যায়ে ভালো গড় মূল্য পেতে পারে।

  3. মাঝারি এমএ স্টপ লস হ্রাস এবং ঝুঁকি নিয়ন্ত্রণ করতে পারে।

  4. সীমাবদ্ধ আদেশ স্লিপ এড়াতে.

  5. কাস্টমাইজযোগ্য প্যারামিটারগুলি বিভিন্ন পণ্যের সাথে খাপ খায়।

  6. পরিষ্কার কাঠামো, সহজেই বোঝা যায় এবং প্রসারিত করা যায়।

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

কৌশলটির ঝুঁকিগুলির মধ্যে রয়েছেঃ

  1. এমএ বিলম্বিত হলে ভুল বিচার হতে পারে।

  2. সীমাবদ্ধ আদেশ ব্যর্থ হলে প্রবেশের সুযোগ হারাতে পারে।

  3. মাঝারি এমএ স্টপ লস খুব খাঁটি হতে পারে।

  4. অনুপযুক্ত প্যারামিটার সেটিংস খুব বড় অবস্থান হতে পারে।

  5. ব্যাকটেস্টের পর্যাপ্ত সময়সীমা না থাকায় অতিরিক্ত ফিটিং হতে পারে।

  6. লেনদেনের খরচ বিবেচনা করা হয় না।

সমাধানগুলো হল:

  1. নিশ্চিতকরণের জন্য অন্যান্য সূচক যোগ করুন, প্যারামিটার অপ্টিমাইজ করুন।

  2. মেয়াদ শেষ হওয়ার তারিখ নির্ধারণ করুন, সীমা মূল্য সামঞ্জস্য করুন।

  3. মধ্যম এমএ স্টপ লস এ লাভ গ্রহণ বা যুক্তি যোগ করুন।

  4. প্যারামিটার অপ্টিমাইজ করুন, ঝুঁকি-প্রতিদান অনুপাত মূল্যায়ন করুন।

  5. ব্যাকটেস্টের সময় বাড়ানো, মাল্টি মার্কেট ব্যাকটেস্ট।

  6. লেনদেনের খরচ এবং স্লিপ লজিক যোগ করুন।

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

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

  1. মেশিন লার্নিং পদ্ধতি ব্যবহার করে আরও পণ্যের জন্য প্যারামিটার অপ্টিমাইজ করুন।

  2. নিশ্চিতকরণের জন্য অন্যান্য সূচক যোগ করুন, যেমন MACD, KDJ ইত্যাদি।

  3. মধ্যম MA রেখায় লাভ গ্রহণের যুক্তি যোগ করুন।

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

  5. আরও ভাল এন্ট্রি খরচ জন্য সীমা মূল্য অপ্টিমাইজ করুন, উদাহরণস্বরূপ অস্থিরতা উপর ভিত্তি করে।

  6. অতিরিক্ত প্রবণতা এড়ানোর জন্য খরচ পরিচালনা করুন।

  7. প্যারামিটার পুল তৈরির জন্য বিভিন্ন পণ্যের উপর পরীক্ষামূলক পরামিতি।

সিদ্ধান্ত

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


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

//Noro
//2019

//@version=4
strategy(title = "Robot WhiteBox MultiMA", shorttitle = "Robot WhiteBox MultiMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
s = input(defval = "7. OHLC4", options = ["1. Open", "2. High", "3. Low", "4. Close", "5. HL2", "6. HLC3", "7. OHLC4", "8. OC2", "9. PCMA"], title = "Data")
short3 = input(true, title = "short 3")
short2 = input(true, title = "short 2")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
long2 = input(true, title = "long 2")
long3 = input(true, title = "long 3")
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
needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)

//MA
oc2 = (open + close) / 2
pcma = (highest(high, len) + lowest(low, len)) / 2
src = s == "1. Open" ? open : s == "2. High" ? high : s == "3. Low" ? low : s == "4. Close" ? close : s == "5. HL2" ? hl2 : s == "6. HLC3" ? hlc3 : s == "7. OHLC4" ? ohlc4 : s == "8. OC2" ? oc2: close
sma = sma(src, len)
ma = s == "9. PCMA" ? round(pcma * mult) / mult : round(sma * mult) / mult

//Levels
longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 = long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close
longline3 = long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close
shortline1 = short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 = short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close
shortline3 = short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close

//Lines
colorlong1 = long1 ? color.lime : na
colorlong2 = long2 ? color.lime : na
colorlong3 = long3 ? color.lime : na
colorshort1 = short1 ? color.red : na
colorshort2 = short2 ? color.red : na
colorshort3 = short3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort3, title = "Short line 3")
plot(shortline2, offset = offset, color = colorshort2, title = "Short line 2")
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")
plot(longline2, offset = offset, color = colorlong2, title = "Long line 2")
plot(longline3, offset = offset, color = colorlong3, title = "Long line 3")

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long3 and needtime))
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short3 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()

আরো