इस रणनीति का मुख्य विचार प्रवेश बिंदु को यादृच्छिक रूप से निर्धारित करना और जोखिमों को प्रबंधित करने और प्रत्येक व्यापार के लाभ और हानि को नियंत्रित करने के लिए तीन लाभ लेने के बिंदु और एक स्टॉप लॉस बिंदु निर्धारित करना है।
यह रणनीति लॉन्ग एंट्री पॉइंट निर्धारित करने के लिए 11 और 13 के बीच रैंडम नंबर rd_number_entry का उपयोग करती है, और बंद होने की स्थिति निर्धारित करने के लिए 20 और 22 के बीच rd_number_exit का उपयोग करती है। लॉन्ग जाने के बाद स्टॉप लॉस को एंट्री प्राइस माइनस atr ((14) पर सेट किया जाता है।एक ही समय में, तीन ले लाभ अंक निर्धारित कर रहे हैं. पहला ले लाभ बिंदु प्रवेश मूल्य प्लस atr ((14) है.tpx, दूसरा ले लाभ बिंदु प्रवेश मूल्य प्लस 2 हैtpx, और तीसरा ले लाभ बिंदु प्रवेश मूल्य प्लस 3 हैtpx. शॉर्ट जाने का सिद्धांत समान है, सिवाय इसके कि प्रवेश निर्णय अलग-अलग 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)