
यह एक द्वि-समानता क्रॉस, आरएसआई ओवरबोर्ड ओवरसोल्ड और रिस्क-टू-रिटर्न अनुपात के संयोजन के साथ एक मात्रात्मक ट्रेडिंग रणनीति है। यह रणनीति बाजार की प्रवृत्ति की दिशा निर्धारित करने के लिए अल्पकालिक और दीर्घकालिक चलती औसत के क्रॉसिंग का उपयोग करती है, जबकि आरएसआई का उपयोग ओवरबोर्ड ओवरसोल्ड क्षेत्रों की पहचान करने के लिए अधिक सटीक ट्रेडिंग सिग्नल फ़िल्टरिंग के लिए करती है। रणनीति एटीआर-आधारित गतिशील स्टॉप-लॉस सेटिंग्स और निश्चित रिस्क-टू-रिटर्न अनुपात के लिए लाभप्रद लक्ष्य प्रबंधन प्रणाली को भी एकीकृत करती है।
रणनीति ने रुझान के आधार के रूप में 9 वीं और 21 वीं दो चलती औसत का उपयोग किया, और आरएसआई सूचक के ओवरबॉय ओवरसोल क्षेत्र ((35⁄65) के माध्यम से सिग्नल की पुष्टि की। मल्टीहेड प्रविष्टि की स्थिति में, अल्पकालिक औसत रेखा को दीर्घकालिक औसत रेखा से ऊपर और आरएसआई ओवरसोल क्षेत्र में ((35 से कम) की आवश्यकता होती है; खाली सिर प्रविष्टि को दीर्घकालिक औसत रेखा से नीचे और आरएसआई ओवरबॉय क्षेत्र में ((65 से अधिक) की आवश्यकता होती है। रणनीति ने 1.5 गुना एटीआर मूल्य का उपयोग करके स्टॉप लॉस सेट किया, और 2:1 के आधार पर रिस्क-रिटर्न-बिक्री लक्ष्य की स्वचालित गणना की। अत्यधिक स्थिति को रोकने के लिए, रणनीति ने कम से कम 3 घंटे की स्थिति सीमा निर्धारित की।
इस रणनीति के माध्यम से कई तकनीकी संकेतकों के सामंजस्यपूर्ण सहयोग से एक अपेक्षाकृत पूर्ण व्यापार प्रणाली का निर्माण किया गया है। यह न केवल प्रवेश संकेतों की गुणवत्ता पर ध्यान केंद्रित करता है, बल्कि जोखिम प्रबंधन और मुनाफे के लक्ष्यों की स्थापना पर भी ध्यान देता है। हालांकि कुछ जगहों पर अनुकूलन की आवश्यकता है, समग्र रूपरेखा तर्कसंगत है, जिसमें अच्छा व्यावहारिक मूल्य और विस्तार की जगह है। रणनीति की मॉड्यूलर डिजाइन भी बाद के अनुकूलन के लिए सुविधा प्रदान करती है।
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("JakeJohn", overlay=true)
// Input parameters
smaShortLength = input(9, title="Short SMA Length")
smaLongLength = input(21, title="Long SMA Length")
lengthRSI = input(14, title="RSI Length")
rsiOverbought = input(65, title="RSI Overbought Level")
rsiOversold = input(35, title="RSI Oversold Level")
riskRewardRatio = input(2, title="Risk/Reward Ratio") // 2:1
atrMultiplier = input(1.5, title="ATR Multiplier") // Multiplier for ATR to set stop loss
// Calculate indicators
smaShort = ta.sma(close, smaShortLength)
smaLong = ta.sma(close, smaLongLength)
rsi = ta.rsi(close, lengthRSI)
atr = ta.atr(14)
// Entry conditions
longCondition = (smaShort > smaLong) and (rsi < rsiOversold) // Buy when short SMA is above long SMA and RSI is oversold
shortCondition = (smaShort < smaLong) and (rsi > rsiOverbought) // Sell when short SMA is below long SMA and RSI is overbought
// Variables for trade management
var float entryPrice = na
var float takeProfit = na
var int entryBarIndex = na
// Entry logic for long trades
if (longCondition and (strategy.position_size == 0))
entryPrice := close
takeProfit := entryPrice + (entryPrice - (entryPrice - (atr * atrMultiplier))) * riskRewardRatio
strategy.entry("Buy", strategy.long)
entryBarIndex := bar_index // Record the entry bar index
label.new(bar_index, high, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
// Entry logic for short trades
if (shortCondition and (strategy.position_size == 0))
entryPrice := close
takeProfit := entryPrice - (entryPrice - (entryPrice + (atr * atrMultiplier))) * riskRewardRatio
strategy.entry("Sell", strategy.short)
entryBarIndex := bar_index // Record the entry bar index
label.new(bar_index, low, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
// Manage trade duration and exit after a minimum of 3 hours
if (strategy.position_size != 0)
// Check if the trade has been open for at least 3 hours (180 minutes)
if (bar_index - entryBarIndex >= 180) // 3 hours in 1-minute bars
if (strategy.position_size > 0)
strategy.exit("Take Profit Long", from_entry="Buy", limit=takeProfit)
else
strategy.exit("Take Profit Short", from_entry="Sell", limit=takeProfit)
// Background colors for active trades
var color tradeColor = na
if (strategy.position_size > 0)
tradeColor := color.new(color.green, 90) // Light green for long trades
else if (strategy.position_size < 0)
tradeColor := color.new(color.red, 90) // Light red for short trades
else
tradeColor := na // No color when no trade is active
bgcolor(tradeColor, title="Trade Background")
// Plotting position tools
if (strategy.position_size > 0)
// Plot long position tool
strategy.exit("TP Long", limit=takeProfit)
if (strategy.position_size < 0)
// Plot short position tool
strategy.exit("TP Short", limit=takeProfit)
// Plotting indicators
plot(smaShort, color=color.green, title="Short SMA", linewidth=2)
plot(smaLong, color=color.red, title="Long SMA", linewidth=2)
// Visual enhancements for RSI
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, color=color.blue, title="RSI", linewidth=2)
// Ensure there's at least one plot function
plot(close, color=color.black, title="Close Price", display=display.none) // Hidden plot for compliance