এই কৌশলটি একটি পরিমাণগত ট্রেডিং সিস্টেম যা বলিংজার ব্যান্ড, আপেক্ষিক শক্তি সূচক (আরএসআই) এবং গতিশীল ব্যয় গড় (ডিসিএ) একত্রিত করে। কৌশলটি বাজারের ওঠানামা চলাকালীন প্রতিষ্ঠিত অর্থ পরিচালনার নিয়মের মাধ্যমে স্বয়ংক্রিয় অবস্থান গঠনের বাস্তবায়ন করে, একই সাথে নিয়ন্ত্রিত ঝুঁকি কার্যকরকরণের জন্য ক্রয় / বিক্রয় সংকেত নির্ধারণের জন্য প্রযুক্তিগত সূচকগুলিকে একীভূত করে। ব্যবসায়ের পারফরম্যান্সের কার্যকর পর্যবেক্ষণ এবং পরিচালনার জন্য সিস্টেমে লাভ গ্রহণের যুক্তি এবং সমষ্টিগত লাভ ট্র্যাকিং কার্যকারিতা অন্তর্ভুক্ত রয়েছে।
কৌশলটি নিম্নলিখিত মূল উপাদানগুলির উপর ভিত্তি করে কাজ করেঃ
কৌশলটি প্রযুক্তিগত বিশ্লেষণ এবং অর্থ পরিচালনার পদ্ধতিগুলির সমন্বয়ের মাধ্যমে একটি বিস্তৃত ট্রেডিং সিস্টেম তৈরি করে। এর শক্তি একাধিক সংকেত নিশ্চিতকরণ এবং পুঙ্খানুপুঙ্খ ঝুঁকি ব্যবস্থাপনায় রয়েছে, যদিও এটি এখনও লাইভ ট্রেডিংয়ে বিস্তৃত পরীক্ষা এবং অপ্টিমাইজেশনের প্রয়োজন। প্যারামিটার সেটিংস এবং অতিরিক্ত সহায়ক সূচকগুলির ক্রমাগত উন্নতির মাধ্যমে কৌশলটি প্রকৃত ট্রেডিংয়ে স্থিতিশীল পারফরম্যান্সের প্রতিশ্রুতি দেখায়।
/*backtest start: 2023-11-27 00:00:00 end: 2024-11-26 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Combined BB RSI with Cumulative Profit, Market Change, and Futures Strategy (DCA)", shorttitle="BB RSI Combined DCA Strategy", overlay=true) // Input Parameters length = input.int(20, title="BB Length") // Adjusted BB length mult = input.float(2.5, title="BB Multiplier") // Adjusted BB multiplier rsiLength = input.int(14, title="RSI Length") // Adjusted RSI length rsiBuyLevel = input.int(25, title="RSI Buy Level") // Adjusted RSI Buy Level rsiSellLevel = input.int(75, title="RSI Sell Level") // Adjusted RSI Sell Level dcaPositionSizePercent = input.float(1, title="DCA Position Size (%)", tooltip="Percentage of equity to use in each DCA step") takeProfitPercentage = input.float(5, title="Take Profit (%)", tooltip="Take profit percentage for DCA strategy") // Calculate DCA position size equity = strategy.equity // Account equity dcaPositionSize = (equity * dcaPositionSizePercent) / 100 // DCA position size as percentage of equity // Bollinger Bands Calculation basis = ta.sma(close, length) dev = mult * ta.stdev(close, length) upper = basis + dev lower = basis - dev // RSI Calculation rsi = ta.rsi(close, rsiLength) // Plotting Bollinger Bands and RSI levels plot(upper, color=color.red, title="Bollinger Upper") plot(lower, color=color.green, title="Bollinger Lower") hline(rsiBuyLevel, "RSI Buy Level", color=color.green) hline(rsiSellLevel, "RSI Sell Level", color=color.red) // Buy and Sell Signals buySignal = (rsi < rsiBuyLevel and close <= lower) sellSignal = (rsi > rsiSellLevel and close >= upper) // DCA Strategy: Enter Long or Short based on signals with calculated position size if (buySignal) strategy.entry("DCA Buy", strategy.long) if (sellSignal) strategy.entry("DCA Sell", strategy.short) // Take Profit Logic if (strategy.position_size > 0) // If long strategy.exit("Take Profit Long", from_entry="DCA Buy", limit=close * (1 + takeProfitPercentage / 100)) if (strategy.position_size < 0) // If short strategy.exit("Take Profit Short", from_entry="DCA Sell", limit=close * (1 - takeProfitPercentage / 100)) // Plot Buy/Sell Signals on the chart plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white) plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white) // Alerts for Buy/Sell Signals alertcondition(buySignal, title="Buy Alert", message="Buy Signal Detected") alertcondition(sellSignal, title="Sell Alert", message="Sell Signal Detected") // Cumulative Profit Calculation var float buyPrice = na var float profit = na var float cumulativeProfit = 0.0 // Cumulative profit tracker if (buySignal) buyPrice := close if (sellSignal and not na(buyPrice)) profit := (close - buyPrice) / buyPrice * 100 cumulativeProfit := cumulativeProfit + profit // Update cumulative profit label.new(bar_index, high, text="P: " + str.tostring(profit, "#.##") + "%", color=color.blue, style=label.style_label_down) buyPrice := na // Reset buyPrice after sell // Plot cumulative profit on the chart var label cumulativeLabel = na if (not na(cumulativeProfit)) if not na(cumulativeLabel) label.delete(cumulativeLabel) cumulativeLabel := label.new(bar_index, high + 10, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "%", color=color.purple, style=label.style_label_up) // Market Change over 3 months Calculation threeMonthsBars = 3 * 30 * 24 // Approximation of 3 months in bars (assuming 1 hour per bar) priceThreeMonthsAgo = request.security(syminfo.tickerid, "D", close[threeMonthsBars]) marketChange = (close - priceThreeMonthsAgo) / priceThreeMonthsAgo * 100 // Plot market change over 3 months var label marketChangeLabel = na if (not na(marketChange)) if not na(marketChangeLabel) label.delete(marketChangeLabel) marketChangeLabel := label.new(bar_index, high + 20, text="Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.orange, style=label.style_label_up) // Both labels (cumulative profit and market change) are displayed simultaneously var label infoLabel = na if (not na(cumulativeProfit) and not na(marketChange)) if not na(infoLabel) label.delete(infoLabel) infoLabel := label.new(bar_index, high + 30, text="Cumulative Profit: " + str.tostring(cumulativeProfit, "#.##") + "% | Market Change (3 months): " + str.tostring(marketChange, "#.##") + "%", color=color.purple, style=label.style_label_upper_right)