স্পার্ক কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা গতিশীল অবস্থান সাইজিংকে দ্বৈত সূচক নিশ্চিতকরণের সাথে একত্রিত করে। কৌশলটি একটি গতিশীল অবস্থান সাইজিং প্রক্রিয়া ব্যবহার করে মূলধন বরাদ্দের অনুকূল করার জন্য সম্ভাব্য প্রবেশ এবং প্রস্থান পয়েন্টগুলি সনাক্ত করতে সুপারট্রেন্ড সূচক এবং আপেক্ষিক শক্তি সূচক (আরএসআই) ব্যবহার করে। কৌশলটি নমনীয় লাভ এবং স্টপ লস সেটিংস, পাশাপাশি ন্যূনতম ট্রেডিং ফ্রিকোয়েন্সি এবং দিকনির্দেশক পছন্দগুলির মতো কাস্টমাইজযোগ্য পরামিতি সরবরাহ করে।
স্পার্ক কৌশলটির মূলটি সুপারট্রেন্ড সূচক এবং আরএসআই সূচকের সমন্বিত প্রয়োগে রয়েছে। সুপারট্রেন্ড সূচকটি গতিশীল সমর্থন এবং প্রতিরোধের স্তরের সাথে বন্ধের দামের তুলনা করে প্রবণতার দিক নির্ধারণ করে, যখন আরএসআই সূচকটি অতিরিক্ত ক্রয় এবং অতিরিক্ত বিক্রয় বাজার পরিস্থিতি সনাক্ত করতে ব্যবহৃত হয়। যখন সুপারট্রেন্ড এবং আরএসআই সূচক উভয়ই একযোগে নির্দিষ্ট মানদণ্ড পূরণ করে, তখন কৌশলটি একটি প্রবেশ সংকেত উত্পন্ন করে।
কৌশলটি প্রতিটি ব্যবসায়ের জন্য মূলধন বরাদ্দ অপ্টিমাইজ করার জন্য একটি গতিশীল অবস্থান আকারের প্রক্রিয়া ব্যবহার করে। একটি পোর্টফোলিও শতাংশ এবং লিভারেজ অনুপাত সেট করে, কৌশলটি স্বয়ংক্রিয়ভাবে বর্তমান বাজার পরিস্থিতি এবং অ্যাকাউন্ট ব্যালেন্সের উপর ভিত্তি করে সর্বোত্তম অবস্থানের আকার গণনা করে। উপরন্তু, কৌশলটি নমনীয় লাভ এবং স্টপ লস সেটিংস সরবরাহ করে, ব্যবহারকারীদের স্থির শতাংশ বা গতিশীলভাবে গণনা স্তরের মধ্যে চয়ন করতে দেয়।
স্পার্ক কৌশলটি সুপারট্রেন্ড এবং আরএসআই সূচকগুলিকে একত্রিত করে, একটি গতিশীল অবস্থান আকারের প্রক্রিয়া ব্যবহার করে এবং নমনীয় ঝুঁকি ব্যবস্থাপনা সরঞ্জাম সরবরাহ করে ব্যবসায়ীদের একটি বিস্তৃত পরিমাণগত ট্রেডিং সমাধান সরবরাহ করে। যদিও কৌশলটি নির্দিষ্ট ঝুঁকিগুলির মুখোমুখি হতে পারে, ক্রমাগত অপ্টিমাইজেশন এবং পরিমার্জনের সাথে, স্পার্ক কৌশলটি বিভিন্ন বাজারের অবস্থার মধ্যে ধারাবাহিক পারফরম্যান্স সরবরাহ করার সম্ভাবনা রয়েছে।
/*backtest start: 2024-03-12 00:00:00 end: 2024-04-11 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SPARK", shorttitle="SPARK", overlay=true) // Choose whether to activate the minimal bars in trade feature minBarsEnabled = input(true, title="Activate Minimal Bars in Trade") portfolioPercentage = input(10, title="Portfolio Percentage", minval=1, maxval=100) // Leverage Input leverage = input(1, title="Leverage", minval=1) // Calculate position size according to portfolio percentage and leverage positionSizePercent = portfolioPercentage / 100 * leverage positionSize = (strategy.initial_capital / close) * positionSizePercent // Take Profit and Stop Loss settings useFixedTPSL = input(1, title="Use Fixed TP/SL", options=[1, 0]) tp_sl_step = 0.1 fixedTP = input(2.0, title="Fixed Take Profit (%)", step=tp_sl_step) fixedSL = input(1.0, title="Fixed Stop Loss (%)", step=tp_sl_step) // Calculate Take Profit and Stop Loss Levels takeProfitLong = close * (1 + fixedTP / 100) takeProfitShort = close * (1 - fixedTP / 100) stopLossLong = close * (1 - fixedSL / 100) stopLossShort = close * (1 + fixedSL / 100) // Plot TP and SL levels on the chart plotshape(series=takeProfitLong, title="Take Profit Long", color=color.green, style=shape.triangleup, location=location.abovebar) plotshape(series=takeProfitShort, title="Take Profit Short", color=color.red, style=shape.triangledown, location=location.belowbar) plotshape(series=stopLossLong, title="Stop Loss Long", color=color.red, style=shape.triangleup, location=location.abovebar) plotshape(series=stopLossShort, title="Stop Loss Short", color=color.green, style=shape.triangledown, location=location.belowbar) // Minimum Bars Between Trades Input minBarsBetweenTrades = input(5, title="Minimum Bars Between Trades") // Inputs for selecting trading direction tradingDirection = input("Both", "Choose Trading Direction", options=["Long", "Short", "Both"]) // SuperTrend Function trendFlow(src, atrLength, multiplier) => atr = atr(atrLength) up = hl2 - (multiplier * atr) dn = hl2 + (multiplier * atr) trend = 1 trend := nz(trend[1], 1) up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ? max(up, nz(up[1], 0)) : up dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? min(dn, nz(dn[1], 0)) : dn trend := src > nz(dn[1], 0) ? 1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1) [up, dn, trend] // Inputs for SuperTrend settings atrLength1 = input(7, title="ATR Length for Trend 1") multiplier1 = input(4.0, title="Multiplier for Trend 1") atrLength2 = input(14, title="ATR Length for Trend 2") multiplier2 = input(3.618, title="Multiplier for Trend 2") atrLength3 = input(21, title="ATR Length for Trend 3") multiplier3 = input(3.5, title="Multiplier for Trend 3") atrLength4 = input(28, title="ATR Length for Trend 4") multiplier4 = input(3.382, title="Multiplier for Trend 4") // Calculate SuperTrend [up1, dn1, trend1] = trendFlow(close, atrLength1, multiplier1) [up2, dn2, trend2] = trendFlow(close, atrLength2, multiplier2) [up3, dn3, trend3] = trendFlow(close, atrLength3, multiplier3) [up4, dn4, trend4] = trendFlow(close, atrLength4, multiplier4) // Entry Conditions based on SuperTrend and Elliott Wave-like patterns longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1 shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == -1 // Calculate bars since last trade barsSinceLastTrade = barssince(tradingDirection == "Long" ? longCondition : shortCondition) // Strategy Entry logic based on selected trading direction and minimum bars between trades if tradingDirection == "Long" or tradingDirection == "Both" if longCondition and (not minBarsEnabled or barsSinceLastTrade >= minBarsBetweenTrades) strategy.entry("Long", strategy.long, qty=positionSize) strategy.exit("TP/SL Long", from_entry="Long", stop=stopLossLong, limit=takeProfitLong) if tradingDirection == "Short" or tradingDirection == "Both" if shortCondition and (not minBarsEnabled or barsSinceLastTrade >= minBarsBetweenTrades) strategy.entry("Short", strategy.short, qty=positionSize) strategy.exit("TP/SL Short", from_entry="Short", stop=stopLossShort, limit=takeProfitShort) // Color bars based on position var color barColor = na barColor := strategy.position_size > 0 ? color.green : strategy.position_size < 0 ? color.red : na // Plot colored bars plotcandle(open, high, low, close, color=barColor) // Plot moving averages plot(sma(close, 50), color=color.blue) plot(sma(close, 200), color=color.orange) // More customizable trading bot - adding a new indicator // This indicator is the RSI (Relative Strength Index) // RSI Inputs rsi_length = input(14, title="RSI Length") rsi_oversold = input(30, title="RSI Oversold") rsi_overbought = input(70, title="RSI Overbought") // Calculate RSI rsi = rsi(close, rsi_length) // Plot RSI plot(rsi, color=color.purple, title="RSI") // Entry Conditions based on RSI rsi_long_condition = rsi < rsi_oversold rsi_short_condition = rsi > rsi_overbought // Strategy Entry logic based on RSI if tradingDirection == "Long" or tradingDirection == "Both" if rsi_long_condition and (not minBarsEnabled or barsSinceLastTrade >= minBarsBetweenTrades) strategy.entry("Long_RSI", strategy.long, qty=positionSize) strategy.exit("TP/SL Long_RSI", from_entry="Long_RSI", stop=stopLossLong, limit=takeProfitLong) if tradingDirection == "Short" or tradingDirection == "Both" if rsi_short_condition and (not minBarsEnabled or barsSinceLastTrade >= minBarsBetweenTrades) strategy.entry("Short_RSI", strategy.short, qty=positionSize) strategy.exit("TP/SL Short_RSI", from_entry="Short_RSI", stop=stopLossShort, limit=takeProfitShort)