এই কৌশলটির মূল ধারণা হ'ল এন্ট্রি পয়েন্টটি এলোমেলোভাবে নির্ধারণ করা এবং প্রতিটি ব্যবসায়ের ঝুঁকি পরিচালনা এবং লাভ এবং ক্ষতি নিয়ন্ত্রণের জন্য তিনটি লাভের পয়েন্ট এবং একটি স্টপ লস পয়েন্ট সেট করা।
এই কৌশলটি লং এন্ট্রি পয়েন্ট নির্ধারণের জন্য 11 থেকে 13 এর মধ্যে র্যান্ডম নম্বর rd_number_entry ব্যবহার করে এবং অবস্থান বন্ধ করার জন্য 20 থেকে 22 এর মধ্যে rd_number_exit ব্যবহার করে। লং যাওয়ার পরে স্টপ লসটি এন্ট্রি মূল্য বিয়োগ atr ((14) এ সেট করা হয়।slx. একই সময়ে, তিনটি লাভের পয়েন্ট সেট করা হয়. প্রথম লাভের পয়েন্টটি প্রবেশ মূল্য প্লাস atr ((14) ।tpx, দ্বিতীয় লাভের পয়েন্ট হল এন্ট্রি প্রাইস + 2tpx, এবং তৃতীয় লাভের পয়েন্ট হল প্রবেশ মূল্য + 3শর্ট নেওয়ার নীতি একই রকম, তবে এন্ট্রি সিদ্ধান্তটি বিভিন্ন rd_number_entry মান গ্রহণ করে এবং লাভ এবং স্টপ লসের দিক বিপরীত।
tpx (লাভ গ্রহণের সহগ) এবং slx (স্টপ লস সহগ) এর সমন্বয় করে ঝুঁকি নিয়ন্ত্রণ করা যায়।
এই কৌশলটির সুবিধাগুলির মধ্যে রয়েছেঃ
এই কৌশলটির ঝুঁকিগুলির মধ্যে রয়েছেঃ
লভ্যাংশ গ্রহণ এবং স্টপ লস সহগগুলি সামঞ্জস্য করে এবং র্যান্ডম এন্ট্রি লজিককে অনুকূল করে ঝুঁকিগুলি হ্রাস করা যেতে পারে।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
এই কৌশলটি এলোমেলো এন্ট্রি উপর ভিত্তি করে এবং একক বাণিজ্যের ঝুঁকি নিয়ন্ত্রণ করতে একাধিক লাভ এবং স্টপ লস পয়েন্ট সেট করে। উচ্চ এলোমেলোতার কারণে, বক্ররেখা ফিটিংয়ের সম্ভাবনা হ্রাস করা যেতে পারে। পরামিতি অপ্টিমাইজেশনের মাধ্যমে ট্রেডিং ঝুঁকি হ্রাস করা যেতে পারে। আরও অপ্টিমাইজেশন এবং গবেষণার জন্য এখনও অনেক জায়গা রয়েছে।
/*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 strategy("Random Strategy with 3 TP levels and SL", overlay=true,max_bars_back = 50) tpx = input(defval = 0.8, title = 'Atr multiplication for TPs?') slx = input(defval = 1.2, title = 'Atr multiplication for SL?') isLong = false isLong := nz(isLong[1]) isShort = false isShort := nz(isShort[1]) entryPrice = 0.0 entryPrice := nz(entryPrice[1]) tp1 = true tp1 := nz(tp1[1]) tp2 = true tp2 := nz(tp2[1]) sl_price = 3213.0 sl_price := nz(sl_price[1]) sl_atr = atr(14)*slx tp_atr = atr(14)*tpx rd_number_entry = 1.0 rd_number_entry := (16708 * nz(rd_number_entry[1], 1) % 2147483647)%17 rd_number_exit = 1.0 rd_number_exit := ((16708 * time % 2147483647) %17) //plot(rd_number_entry) shortCondition = (rd_number_entry == 13? true:false) and (year >= 2017) and not isLong and not isShort longCondition = (rd_number_entry == 11 ? true:false) and (year >= 2017) and not isShort and not isShort //Never exits a trade: exitLong = (rd_number_exit == 22?true:false) and (year >= 2018) and not isShort exitShort = (rd_number_exit == 22?true:false) and (year >= 2018) and not isLong //shortCondition = crossunder(sma(close, 14), sma(close, 28)) and year >= 2017 //longCondition = crossover(sma(close, 14), sma(close, 28)) and year >= 2017 //exitLong = crossunder(ema(close, 14), ema(close, 28)) and year >= 2017 //exitShort = crossover(ema(close, 14), ema(close, 28)) and year >= 2017 if (longCondition and not isLong) strategy.entry('Long1', strategy.long) strategy.entry('Long2', strategy.long) strategy.entry('Long3', strategy.long) isLong := true entryPrice := close isShort := false tp1 := false tp2 := false sl_price := close-sl_atr if (shortCondition and not isShort) strategy.entry('Short1', strategy.short) strategy.entry('Short2', strategy.short) strategy.entry('Short3', strategy.short) isShort := true entryPrice := close isLong := false tp1 := false tp2 := false sl_price := close+sl_atr if (exitShort and isShort) strategy.close('Short1') strategy.close('Short2') strategy.close('Short3') isShort := false if (exitLong and isLong) strategy.close('Long1') strategy.close('Long2') strategy.close('Long3') isLong := false if isLong if (close > entryPrice + tp_atr) and not tp1 strategy.close('Long1') tp1 := true sl_price := close - tp_atr if (close > entryPrice + 2*tp_atr) and not tp2 strategy.close('Long2') tp2 := true sl_price := close - tp_atr if (close > entryPrice + 3*tp_atr) strategy.close('Long3') isLong := false if (close < sl_price) strategy.close('Long1') strategy.close('Long2') strategy.close('Long3') isLong := false if isShort if (close < entryPrice - tp_atr) and not tp1 strategy.close('Short1') sl_price := close + tp_atr tp1 := true if (close < entryPrice - 2*tp_atr) and not tp2 strategy.close('Short2') sl_price := close + tp_atr tp2 := true if (close < entryPrice - 3*tp_atr) strategy.close('Short3') isShort := false if (close > sl_price) strategy.close('Short1') strategy.close('Short2') strategy.close('Short3') isShort := false plot(atr(14)*slx) plot(sl_price)