
यह रणनीति अपेक्षाकृत मजबूत सूचकांक (आरएसआई) सूचक डिजाइन पर आधारित है, जो आरएसआई कमियों को खरीदने के लिए और उच्चतम स्टॉप-लॉस स्टॉप के लिए बहु-हेड ट्रेंड ट्रैकिंग ट्रेडिंग रणनीति है। जब आरएसआई सूचक ओवरबॉय लाइन से नीचे होता है तो एक खरीद संकेत उत्पन्न होता है, और जब आरएसआई सूचक ओवरबॉय लाइन से ऊपर होता है तो एक बेचने का संकेत उत्पन्न होता है। रणनीति ट्रेंड ट्रैकिंग के प्रदर्शन को अनुकूलित करती है, जिससे ट्रेडिंग जोखिम को प्रभावी ढंग से नियंत्रित किया जा सकता है।
यह रणनीति आरएसआई का उपयोग करती है ताकि यह पता लगाया जा सके कि क्या शेयर की कीमत अधिक है या कम है। आरएसआई, ओवरबॉय और ओवरसोल लाइनों के संयोजन के साथ, एक खरीद और बेचने का संकेत देता है। विशेष रूप से, यदि आरएसआई 20 के ओवरसोल लाइन को पार करता है, तो यह एक खरीद का संकेत देता है; यदि आरएसआई 80 के ओवरसोल लाइन को पार करता है, तो यह एक बेचने का संकेत देता है।
मल्टी-हेड पोजीशन में प्रवेश करने के बाद, रणनीति नीचे जाने के जोखिम को नियंत्रित करने के लिए एक प्रारंभिक स्टॉप-लॉस लाइन स्थापित करती है। साथ ही, दो अलग-अलग अनुपात में स्टॉप-लॉस लाइनें स्थापित की जाती हैं, जो स्टॉप-लॉक को मुनाफे में बंद कर देती हैं। विशेष रूप से, पहले 50% की स्थिति को रोकें, स्टॉप-लागत खरीद मूल्य का 3% है; फिर शेष 50% की स्थिति को रोकें, स्टॉप-लागत खरीद मूल्य का 5% है।
यह रणनीति आरएसआई सूचकांक का उपयोग करके बाजार में प्रवेश करने के समय को सरलता और प्रभावी ढंग से निर्धारित करती है। स्टॉप और स्टॉप लॉस सेटिंग्स उचित हैं और जोखिम को प्रभावी ढंग से नियंत्रित कर सकते हैं।
यह रणनीति RSI सूचक का उपयोग करती है, स्टॉप और स्टॉप लॉस सेटिंग्स को उचित बनाता है। यह रणनीति के रुझानों का प्रभावी ढंग से आकलन कर सकता है, व्यापार जोखिम को नियंत्रित कर सकता है, और बहु-हेड ट्रैकिंग रणनीति के लिए उपयुक्त है। सिग्नल फ़िल्टरिंग, पैरामीटर परीक्षण, स्टॉप लॉस ऑप्टिमाइज़ेशन आदि के माध्यम से रणनीति की स्थिरता को और बढ़ा सकता है।
/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=5
strategy(title='RSI Long Strategy', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.075)
strat_dir_input = input.string(title='Strategy Direction', defval='long', options=['long', 'short', 'all'])
strat_dir_value = strat_dir_input == 'long' ? strategy.direction.long : strat_dir_input == 'short' ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//INPUTS
length = input(21)
overSold = input(20)
overBought = input(80)
p = close
vrsi = ta.rsi(p, length)
price = close
var bool long = na
var bool short = na
long := ta.crossover(vrsi, overSold)
short := ta.crossunder(vrsi, overBought)
var float last_open_long = na
var float last_open_short = na
last_open_long := long ? close : nz(last_open_long[1])
last_open_short := short ? close : nz(last_open_short[1])
mpoint=(last_open_long+last_open_short)/2
entry_value = last_open_long
entry_value1 = last_open_short
// Rounding levels to min tick
nround(x) =>
n = math.round(x / syminfo.mintick) * syminfo.mintick
n
//
disp_panels = input(true, title='Display info panels?')
fibs_label_off = input(40, title='fibs label offset')
fibs_label_size = input.string(size.normal, options=[size.tiny, size.small, size.normal, size.large, size.huge], title='fibs label size')
r1_x = timenow + math.round(ta.change(time) * fibs_label_off)
r1_y = last_open_short
text1 = 'High : ' + str.tostring(nround(last_open_short))
s1_y = last_open_long
text3 = 'low : ' + str.tostring(nround(last_open_long))
R1_label = disp_panels ? label.new(x=r1_x, y=r1_y, text=text1, xloc=xloc.bar_time, yloc=yloc.price, color=color.orange, style=label.style_label_down, textcolor=color.black, size=fibs_label_size) : na
S1_label = disp_panels ? label.new(x=r1_x, y=s1_y, text=text3, xloc=xloc.bar_time, yloc=yloc.price, color=color.lime, style=label.style_label_up, textcolor=color.black, size=fibs_label_size) : na
label.delete(R1_label[1])
label.delete(S1_label[1])
//
plot(mpoint, title='avreage', color=color.new(color.red, 40), style=plot.style_linebr, linewidth=3, trackprice=true, offset=-9999)
plot(last_open_short, title='high', color=color.new(color.red, 40), style=plot.style_linebr, linewidth=3, trackprice=true, offset=-9999)
plot(last_open_long, title='low', color=color.new(color.blue, 40), style=plot.style_linebr, linewidth=3, trackprice=true, offset=-9999)
//
trend = input(false)
if barstate.islast and trend == true
line z = line.new(bar_index[1], last_open_short[1], bar_index, last_open_short, extend=extend.both, color=color.red, style=line.style_dashed, width=1)
line f = line.new(bar_index[1], mpoint[1], bar_index, mpoint, extend=extend.both, color=color.blue, style=line.style_dashed, width=1)
line w = line.new(bar_index[1], last_open_long[1], bar_index, last_open_long, extend=extend.both, color=color.green, style=line.style_dashed, width=1)
line.delete(z[1])
line.delete(f[1])
line.delete(w[1])
//bu = ta.crossover(close, mpoint)
//sz = ta.crossunder(close, mpoint)
//bu1 = ta.crossover(close, last_open_short)
sz1 = ta.crossunder(close, last_open_short)
bu2 = ta.crossover(close, last_open_long)
//sz2 = ta.crossunder(close, last_open_long)
//plotshape(sz, style=shape.triangledown, location=location.abovebar, color=color.new(color.orange, 0), size=size.tiny)
//plotshape(bu, style=shape.triangleup, location=location.belowbar, color=color.new(color.blue, 0), size=size.tiny)
//plotshape(sz1, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny)
//plotshape(bu1, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.tiny)
//plotshape(sz2, style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny)
//plotshape(bu2, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.tiny)
l = bu2
s = sz1
if l
strategy.entry('buy', strategy.long)
if s
strategy.entry('sell', strategy.short)
per(pcnt) =>
strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss = input.float(title=' stop loss', defval=5, minval=0.01)
los = per(stoploss)
q1 = input.int(title=' qty_percent1', defval=50, minval=1)
q2 = input.int(title=' qty_percent2', defval=50, minval=1)
tp1 = input.float(title=' Take profit1', defval=3, minval=0.01)
tp2 = input.float(title=' Take profit2', defval=5, minval=0.01)
//tp4 = input.float(title=' Take profit4', defval=5, minval=0.01)
strategy.exit('x1', qty_percent=q1, profit=per(tp1), loss=los)
strategy.exit('x2', qty_percent=q2, profit=per(tp2), loss=los)