এই কৌশলটি বোলিংজার ব্যান্ডস সূচক এবং আপেক্ষিক শক্তি সূচক (আরএসআই) সূচকের উপর ভিত্তি করে একটি পরিমাণগত ট্রেডিং কৌশল। এই কৌশলটি পাইথন ভাষা ব্যবহার করে প্রায় 1 বছরের historicalতিহাসিক ডেটা ব্যাকটেস্ট এবং প্যারামিটারগুলি অনুকূল প্যারামিটার সংমিশ্রণ খুঁজে পেতে মেশিন লার্নিং পদ্ধতি ব্যবহার করে।
এই কৌশলটির ট্রেডিং সংকেতগুলি ডাবল বোলিংজার ব্যান্ড এবং আরএসআই সূচকগুলির সমন্বিত বিচার থেকে আসে। তাদের মধ্যে, বোলিংজার ব্যান্ড সূচকটি দামের মান বিচ্যুতির উপর ভিত্তি করে গণনা করা অস্থিরতা চ্যানেল। এটি যখন দামটি চ্যানেলের কাছে বা স্পর্শ করে তখন এটি ট্রেডিং সংকেত উত্পন্ন করে। আরএসআই সূচক দামের অতিরিক্ত ক্রয় এবং oversold পরিস্থিতি বিচার করে।
বিশেষত, যখন ক্লোজিং মূল্য 1.0 স্ট্যান্ডার্ড ডিভিয়েশনগুলির নিম্ন রেলের নীচে থাকে এবং RSI একই সাথে 42 এর বেশি হয় তখন একটি ক্রয় সংকেত উত্পন্ন হয়। যখন ক্লোজিং মূল্য 1.0 স্ট্যান্ডার্ড ডিভিয়েশনগুলির উপরের রেলের উপরে থাকে এবং RSI একই সাথে 70 এর বেশি হয় তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। এছাড়াও, এই কৌশলটি বিবি এবং আরএসআই পরামিতিগুলির দুটি সেটও সেট করে, যা যথাক্রমে প্রবেশ এবং স্টপ লস বন্ধের অবস্থানের জন্য ব্যবহৃত হয়। এই পরামিতিগুলি ব্যাপক ব্যাকটেস্টিং এবং মেশিন লার্নিংয়ের মাধ্যমে প্রাপ্ত সর্বোত্তম মান।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল পরামিতিগুলির নির্ভুলতা। মেশিন লার্নিং পদ্ধতির মাধ্যমে, সর্বোত্তম শার্প অনুপাত অর্জনের জন্য প্রতিটি পরামিতি ব্যাপক ব্যাকটেস্টিংয়ের মাধ্যমে প্রাপ্ত হয়। এটি কৌশলটির রিটার্ন রেট এবং ঝুঁকি উভয়ই নিশ্চিত করে। এছাড়াও, ডাবল সূচকগুলির সংমিশ্রণটি সংকেতগুলির নির্ভুলতা এবং জয় হারকেও উন্নত করে।
এই কৌশলটির মূল ঝুঁকি স্টপ লস পয়েন্টগুলি সেট করা থেকে আসে। যদি স্টপ লস পয়েন্টটি খুব বড় সেট করা হয় তবে এটি কার্যকরভাবে ক্ষতিগুলি নিয়ন্ত্রণ করবে না। এছাড়াও, যদি স্টপ লস পয়েন্টটি কমিশন এবং স্লিপজের মতো অন্যান্য ট্রেডিং ব্যয়গুলি সঠিকভাবে গণনা না করে তবে এটি ঝুঁকিগুলিও বাড়িয়ে তুলবে। ঝুঁকি হ্রাস করার জন্য, যুক্তিসঙ্গত স্টপ লস অবস্থান গণনা করার সময়, ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করার জন্য স্টপ লস আকারের পরামিতিটি সামঞ্জস্য করার পরামর্শ দেওয়া হয়।
এই কৌশলটির আরও অপ্টিমাইজেশনের জন্য এখনও জায়গা রয়েছে। উদাহরণস্বরূপ, আপনি বোলিংজার ব্যান্ডগুলির দৈর্ঘ্যের পরামিতিগুলি পরিবর্তন করার চেষ্টা করতে পারেন, বা আরএসআইয়ের ওভারক্রয় এবং ওভারসোল্ড থ্রেশহোল্ডগুলি সামঞ্জস্য করতে পারেন। আপনি মাল্টি-ইনডিকেটর সংমিশ্রণ তৈরি করতে অন্যান্য সূচকগুলি প্রবর্তনের চেষ্টা করতে পারেন। এটি কৌশলটির লাভের স্থান এবং স্থিতিশীলতা বাড়িয়ে তুলতে পারে।
এই কৌশলটি ডাবল বিবি সূচক এবং আরএসআই সূচকগুলির সংমিশ্রণ করে এবং উচ্চ রিটার্ন এবং নিয়ন্ত্রণযোগ্য ঝুঁকি স্তর অর্জনের জন্য মেশিন লার্নিং পদ্ধতির মাধ্যমে সর্বোত্তম পরামিতি অর্জন করে। এটিতে সংমিশ্রিত সূচক বিচার এবং পরামিতি অপ্টিমাইজেশনের সুবিধা রয়েছে। ক্রমাগত উন্নতির সাথে, এই কৌশলটির একটি দুর্দান্ত পরিমাণগত ট্রেডিং কৌশল হওয়ার সম্ভাবনা রয়েছে।
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Bunghole 2020 strategy(overlay=true, shorttitle="Flawless Victory Strategy" ) // Stoploss and Profits Inputs v1 = input(true, title="Version 1 - Doesn't Use SL/TP") v2 = input(false, title="Version 2 - Uses SL/TP") stoploss_input = input(6.604, title='Stop Loss %', type=input.float, minval=0.01)/100 takeprofit_input = input(2.328, title='Take Profit %', type=input.float, minval=0.01)/100 stoploss_level = strategy.position_avg_price * (1 - stoploss_input) takeprofit_level = strategy.position_avg_price * (1 + takeprofit_input) //SL & TP Chart Plots plot(v2 and stoploss_input and stoploss_level ? stoploss_level: na, color=color.red, style=plot.style_linebr, linewidth=2, title="Stoploss") plot(v2 and takeprofit_input ? takeprofit_level: na, color=color.green, style=plot.style_linebr, linewidth=2, title="Profit") // Bollinger Bands 1 length = 20 src1 = close mult = 1.0 basis = sma(src1, length) dev = mult * stdev(src1, length) upper = basis + dev lower = basis - dev // Bollinger Bands 2 length2 = 17 src2 = close mult2 = 1.0 basis2 = sma(src1, length2) dev2 = mult2 * stdev(src2, length2) upper2 = basis2 + dev2 lower2 = basis2 - dev2 // RSI len = 14 src = close up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) // Strategy Parameters RSILL= 42 RSIUL= 70 RSILL2= 42 RSIUL2= 76 rsiBuySignal = rsi > RSILL rsiSellSignal = rsi > RSIUL rsiBuySignal2 = rsi > RSILL2 rsiSellSignal2 = rsi > RSIUL2 BBBuySignal = src < lower BBSellSignal = src > upper BBBuySignal2 = src2 < lower2 BBSellSignal2 = src2 > upper2 // Strategy Long Signals Buy = rsiBuySignal and BBBuySignal Sell = rsiSellSignal and BBSellSignal Buy2 = rsiBuySignal2 and BBBuySignal2 Sell2 = rsiSellSignal2 and BBSellSignal2 if v1 == true strategy.entry("Long", strategy.long, when = Buy, alert_message = "v1 - Buy Signal!") strategy.close("Long", when = Sell, alert_message = "v1 - Sell Signal!") if v2 == true strategy.entry("Long", strategy.long, when = Buy2, alert_message = "v2 - Buy Signal!") strategy.close("Long", when = Sell2, alert_message = "v2 - Sell Signal!") strategy.exit("Stoploss/TP", "Long", stop = stoploss_level, limit = takeprofit_level)