Myo_LS_D পরিমাণগত কৌশল হল দীর্ঘ এবং সংক্ষিপ্ত অবস্থানের উপর ভিত্তি করে একটি দ্বৈত-ট্র্যাকিং স্টপ-লাভ কৌশল। কৌশলটি ট্রেডিং সংকেত তৈরি করতে চলমান গড়, মূল্যের অগ্রগতি এবং ঝুঁকি-ফেরতের অনুপাতের মতো একাধিক সূচককে একত্রিত করে। এটি সঠিক প্রবণতা বিচারের ভিত্তিতে একটি উচ্চ জয় হার এবং মুনাফা হার অর্জন করে।
কৌশলটি মূলত একটি ট্রেন্ড বিচার মডিউল, লং পজিশন মডিউল, শর্ট পজিশন মডিউল, ট্র্যাকিং স্টপ লাভ মডিউল ইত্যাদি নিয়ে গঠিত।
প্রবণতা বিচার মডিউল সামগ্রিক প্রবণতা দিক নির্ধারণের জন্য ডনচেইন চ্যানেল ব্যবহার করে। দীর্ঘ যেতে পূর্বশর্ত একটি আপ ট্রেন্ড, যখন সংক্ষিপ্ত যেতে একটি ডাউন ট্রেন্ড প্রয়োজন।
লং পজিশন মডিউল নতুন উচ্চ, নিম্ন, দীর্ঘ চলমান গড় পজিশন ইত্যাদির মতো কারণগুলি বিবেচনা করে। শর্ট পজিশন মডিউল নতুন উচ্চ, নিম্ন, সংক্ষিপ্ত চলমান গড় পজিশন এবং অন্যান্য কারণগুলি বিবেচনা করে। এটি সমালোচনামূলক মূল্য পয়েন্টগুলি উপরে বা নীচে ভাঙার সময় পজিশনগুলি খোলার বিষয়টি নিশ্চিত করে।
ট্র্যাকিং স্টপ মুনাফা মডিউলটি রিয়েল টাইমে দামের পরিবর্তনগুলি ট্র্যাক করতে বিভিন্ন চক্রের দুটি এসএমএ চলমান গড় ব্যবহার করে। যখন দাম চলমান গড় রেখাটি ভেঙে যায়, তখন মুনাফার জন্য অবস্থানটি বন্ধ হয়ে যায়। এই ধরণের রিয়েল-টাইম ট্র্যাকিং প্রবণতা থেকে মুনাফা সর্বাধিক করতে পারে।
স্টপ লস সেটিংটি স্টপ লস পয়েন্টকে সমর্থন স্তর থেকে দূরে রাখতে এবং নোক আউট হতে এড়াতে বর্ধিত স্টপ লস বিবেচনা করে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হল পৃথক লং এবং শর্ট পজিশন বিল্ডিং এবং ট্র্যাকিং স্টপ মুনাফা কৌশল। বিশেষ করে এটি প্রধানত নিম্নলিখিতগুলির মধ্যে অন্তর্নিহিতঃ
একতরফা ট্রেন্ড ট্রেডিংয়ের সুযোগগুলি ক্যাপচার করে পৃথক লং এবং শর্ট পজিশনগুলি লাভের সুযোগগুলি সর্বাধিক করতে পারে।
স্টপ প্রফিট ট্র্যাকিং রিয়েল টাইম অ্যাডজাস্টমেন্টের মাধ্যমে উচ্চতর মুনাফা মার্জিন অর্জন করতে পারে। ঐতিহ্যগত স্টপ প্রফিট পদ্ধতির তুলনায় আয় উল্লেখযোগ্যভাবে উন্নত হতে পারে।
দীর্ঘস্থায়ী স্টপগুলি knockout হওয়ার সম্ভাবনা হ্রাস করতে পারে এবং ক্ষতির ঝুঁকি হ্রাস করতে পারে।
এই কৌশলটির প্রধান ঝুঁকিগুলি নিম্নলিখিত পয়েন্টগুলিতে কেন্দ্রীভূতঃ
ভুল প্রবণতা বিচার বিপরীত অবস্থান এবং ক্ষতি হতে পারে। ডনচেইন পরামিতিগুলি যথাযথভাবে সামঞ্জস্য করে বা বিচার করার জন্য অন্যান্য সূচক যুক্ত করে অপ্টিমাইজেশন অর্জন করা যেতে পারে।
স্টপ লাভের ট্র্যাকিং খুব আক্রমণাত্মক এবং লাভ বজায় রাখতে সক্ষম না হয়ে অকালে লাভ বন্ধ করতে পারে। স্টপ লাভের চলমান গড়ের মধ্যে ব্যবধান যথাযথভাবে বাড়িয়ে অপ্টিমাইজেশন অর্জন করা যেতে পারে।
স্টপ লস পরিসীমা খুব ছোট, যা বাদ পড়ার সম্ভাবনা বাড়িয়ে তুলতে পারে। যথাযথভাবে স্টপ লসের মাত্রা প্রসারিত করা ঝুঁকিগুলি হ্রাস করতে পারে।
এই কৌশলটির মূল অপ্টিমাইজেশান দিকগুলি হলঃ
মূল্যায়নের নির্ভুলতা উন্নত করতে ট্রেন্ড বিচার মডিউলটি অনুকূল করুন। এমএসিডি এর মতো আরও সূচক একত্রিত করার বিষয়টি বিবেচনা করুন।
লাভের স্থান আরও প্রসারিত করার জন্য স্টপ লাভের পদ্ধতিটি সামঞ্জস্য করুন। উদাহরণস্বরূপ, অনুপাতে স্টপ লাভের লাইনগুলি সরানো।
স্টপ লস পরিসীমা বাড়ানো বা সঙ্কুচিত স্টপগুলি বিবেচনা করা Knockout হওয়ার সম্ভাবনাকে আরও হ্রাস করতে পারে।
বিভিন্ন জাতের বিভিন্ন পরামিতি রয়েছে। কৌশল রিটার্ন আরও উন্নত করার জন্য প্রশিক্ষণের মাধ্যমে সর্বোত্তম পরামিতি সংমিশ্রণ অর্জন করা যেতে পারে।
সাধারণভাবে, Myo_LS_D কৌশলটি একটি তুলনামূলকভাবে পরিপক্ক এবং স্থিতিশীল দ্বৈত-ট্র্যাক ট্র্যাকিং স্টপ-লাভ পরিমাণগত কৌশল। এর সুস্পষ্ট সুবিধা এবং নিয়ন্ত্রণযোগ্য ঝুঁকি রয়েছে। এটি দীর্ঘমেয়াদে ধরে রাখার মতো পরিমাণগত সমাধানগুলির মধ্যে একটি। ভবিষ্যতের অপ্টিমাইজেশানগুলি এটিকে আরও উন্নত পরিমাণগত কৌশল তৈরি করতে ক্রমাগত কর্মক্ষমতা উন্নতি করতে সক্ষম করতে পারে।
/*backtest start: 2023-12-15 00:00:00 end: 2024-01-14 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © agresiynin //@version=5 // ©Myo_Pionex strategy( title = "Myo_simple strategy_LS_D", shorttitle = "Myo_LS_D", overlay = true ) // var lowest_price = ta.lowest(low, 200) highest_price = ta.highest(high, 200) min_800 = ta.lowest(low, 800) max_800 = ta.highest(high, 800) tp_target_L = min_800 + (max_800 - min_800) * math.rphi tp_target_S = max_800 - (max_800 - min_800) * math.rphi sl_length_L = input.int(100, "做多的止損長度", minval = 50, maxval = 300, step = 50) sl_length_S = input.int(100, "做空的止損長度", minval = 50, maxval = 300, step = 50) sl_L = lowest_price * (1 - 0.005) sl_S = highest_price * (1 + 0.005) rrr_L = tp_target_L - sl_L / sl_L rrr_S = ta.lowest(low, 800) + ta.highest(high, 800) - ta.lowest(low, 800) * math.rphi / ta.highest(high, 200) + 0.005 * ta.highest(high, 200) - ta.lowest(low, 200) - 0.005 * ta.lowest(low, 200) smalen1 = input.int(10, "做多追蹤止盈SMA長度1", options = [5, 10, 20, 40, 60, 80]) smalen2 = input.int(20, "做多追蹤止盈SMA長度2", options = [5, 10, 20, 40, 60, 80]) smalen1_S = input.int(5, "做空追蹤止盈SMA長度1", options = [5, 10, 20, 40, 60, 80]) smalen2_S = input.int(10, "做空追蹤止盈SMA長度2", options = [5, 10, 20, 40, 60, 80]) TrendLength_L = input.int(400, "做多趨勢線", options = [100, 200, 300, 400, 500]) TrendLength_S = input.int(300, "做空趨勢線", options = [100, 200, 300, 400, 500]) SMA1 = ta.sma(close, smalen1) SMA2 = ta.sma(close, smalen2) SMA1_S = ta.sma(close, smalen1_S) SMA2_S = ta.sma(close, smalen2_S) shortlength = input.int(20, "短期均價K線數量") midlength = input.int(60, "中期均價K線數量") longlength = input.int(120, "長期均價K線數量") ShortAvg = math.sum(close, shortlength)/shortlength MidAvg = math.sum(close, midlength)/midlength LongAvg = math.sum(close, longlength)/longlength // Trend basePeriods = input.int(8, minval=1, title="趨勢基準線") basePeriods_Short = input.int(26, "做空基準線") donchian(len) => math.avg(ta.lowest(len), ta.highest(len)) baseLine = donchian(basePeriods) baseLine_Short = donchian(basePeriods_Short) trend = request.security(syminfo.tickerid, "D", baseLine) isUptrend = false isDowntrend = false baseLine_D = request.security(syminfo.tickerid, "D", baseLine) plot(baseLine_D, color=#B71C1C, title="趨勢基準線") if close[0] > baseLine_D isUptrend := true if close[0] < baseLine_Short isDowntrend := true // Long // Condition // entry con_a = low > lowest_price ? 1 : 0 con_b = high > highest_price ? 1 : 0 con_c = close[0] > ta.sma(close, TrendLength_L) ? 1 : 0 con_d = isUptrend ? 1 : 0 con_e = rrr_L > 3 ? 1 : 0 con_a1 = close[0] > ShortAvg[shortlength] ? 1 : 0 con_b1 = close[0] > MidAvg[midlength] ? 1 : 0 // close con_f = ta.crossunder(close, SMA1) and ta.crossunder(close, SMA2) ? 1 : 0 con_g = close < ta.lowest(low, sl_length_L)[1] * (1 - 0.005) ? 1 : 0 // exit con_h = tp_target_L // Main calculation LongOpen = false AddPosition_L = false if con_a + con_b + con_c + con_e + con_a1 + con_b1 >= 4 and con_d >= 1 LongOpen := true // Short // Condition // entry con_1 = high < highest_price ? 1 : 0 con_2 = low < lowest_price ? 1 : 0 con_3 = close[0] < ta.sma(close, TrendLength_S) ? 1 : 0 con_4 = isDowntrend ? 1 : 0 con_5 = rrr_S > 3 ? 1 : 0 con_11 = close[0] < ShortAvg[shortlength] ? 1 : 0 con_12 = close[0] < MidAvg[midlength] ? 1 : 0 // close con_6 = ta.crossover(close, SMA1_S) and ta.crossover(close, SMA2_S) ? 1 : 0 con_7 = close > ta.highest(high, sl_length_S)[1] * (1 + 0.005) ? 1 : 0 // exit con_8 = tp_target_S // Main calculation ShortOpen = false AddPosition_S = false if con_1 + con_2 + con_3 + con_4 + con_5 + con_11 + con_12 >= 5 ShortOpen := true // // execute // strategy.initial_capital = 50000 if strategy.position_size == 0 if LongOpen strategy.entry("Long Open" , strategy.long , comment= "Long Open " + str.tostring(close[0]), qty=strategy.initial_capital/close[0]) if strategy.position_size > 0 if (con_f > 0 or con_g > 0 or ShortOpen) and close <= baseLine_D strategy.close_all(comment="Close Long " + str.tostring(close[0])) if strategy.position_size == 0 if ShortOpen strategy.entry("Short Open" , strategy.short , comment= "Short Open " + str.tostring(close[0]), qty=strategy.initial_capital/close[0]) if strategy.position_size < 0 if (con_6 > 0 or con_7 > 0 or LongOpen) and close >= baseLine_D strategy.close_all(comment="Close Short " + str.tostring(close[0])) plot(ta.sma(close, TrendLength_L), color=#e5c212, title="LTradeTrend") plot(ta.sma(close, TrendLength_S), color=#1275e5, title="STradeTrend") plot(SMA1, "SMA1", color = color.lime, linewidth = 2) plot(SMA2, "SMA2", color = color.rgb(255, 0, 255), linewidth = 2)