आरएसआई आधारित तेजी की प्रवृत्ति रणनीति का पालन करना

लेखक:चाओझांग, दिनांक: 2023-12-25 14:32:19
टैगः

img

अवलोकन

यह रणनीति आरएसआई कम बिंदुओं पर खरीदने और आरएसआई उच्च बिंदुओं पर लाभ और स्टॉप लॉस लेने के लिए सापेक्ष शक्ति सूचकांक (आरएसआई) संकेतक के आधार पर डिज़ाइन की गई है। यह खरीद संकेत उत्पन्न करता है जब आरएसआई ओवरसोल्ड लाइन से नीचे गिरता है और बेच संकेत जब आरएसआई ओवरबोल्ड लाइन से ऊपर उठता है। रणनीति प्रभावी जोखिम नियंत्रण के साथ रुझानों को ट्रैक करने के लिए अनुकूलित है।

रणनीति तर्क

यह रणनीति यह निर्धारित करने के लिए आरएसआई संकेतक का उपयोग करती है कि क्या कोई स्टॉक अतिमूल्यवान है या कम मूल्यवान है। आरएसआई ओवरबॉट और ओवरसोल्ड लाइनों के साथ संयुक्त खरीद और बिक्री संकेत बनाता है। विशेष रूप से, यदि आरएसआई 20 ओवरसोल्ड लाइन से ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है; यदि आरएसआई 80 ओवरबोल्ड लाइन से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।

एक लंबी स्थिति में प्रवेश करने के बाद, रणनीति नीचे की ओर जोखिम को नियंत्रित करने के लिए एक प्रारंभिक स्टॉप लॉस सेट करती है। एक ही समय में, बैचों में लाभ लेने और लाभ में लॉक करने के लिए अलग-अलग अनुपात वाली दो ले लाभ लाइनें सेट की जाती हैं। विशेष रूप से, स्थिति का 50% प्रवेश मूल्य से 3% ऊपर पहले लाभ लेगा; फिर शेष 50% स्थिति प्रवेश मूल्य से 5% ऊपर लाभ लेगी।

रणनीति प्रभावी रूप से प्रवेश समय निर्धारित करने के लिए आरएसआई संकेतक का उपयोग करती है। जोखिमों को प्रभावी ढंग से नियंत्रित करने के लिए स्टॉप लॉस और ले लाभ सेटिंग्स उचित हैं।

लाभ

  • लंबी/लघु मुद्राओं का निर्धारण करने के लिए आरएसआई संकेतक का उपयोग करें और अंधाधुंध व्यापार से बचें
  • बेहतर संकेतक प्रभाव के लिए अनुकूलित आरएसआई मापदंड
  • उचित दोहरे लाभ लेने का डिजाइन अधिक लाभ को लॉक करने के लिए बैचों में लाभ लेने की अनुमति देता है
  • प्रारंभिक स्टॉप लॉस और ट्रेलिंग स्टॉप लॉस भारी नुकसान को रोकते हैं

जोखिम

  • बुल बाजार में खराब प्रदर्शन जो लाभ को बनाए नहीं रख सकता
  • आरएसआई से गलत संकेतों की संभावना मौजूद है और गलत संकेत निर्णय से नुकसान को बढ़ा सकता है
  • जोखिम कि स्टॉप को ट्रिगर नहीं किया जा सकता है यदि स्टॉप लॉस पॉइंट बहुत गहरा सेट किए जाते हैं
  • पिरामिड समय और अनुपात पर सीमा के बिना बढ़े हुए नुकसान का जोखिम

सुधार

  • आरएसआई संकेतों को फ़िल्टर करने और सटीकता में सुधार करने के लिए अन्य संकेतक जोड़ें
  • पिरामिडिंग समय और अनुपात पर सीमाएं निर्धारित करें
  • विभिन्न आरएसआई मापदंडों के परीक्षण प्रभाव
  • स्टॉप लॉस को अनुकूलित करें और जोखिम कम करने के लिए लाभ अंक लें

सारांश

यह रणनीति बाजार की स्थिति का न्याय करने के लिए आरएसआई का उपयोग करती है और इसके पास उचित स्टॉप लॉस और ले लाभ कॉन्फ़िगरेशन है। यह प्रभावी रूप से बाजार की प्रवृत्ति निर्धारित कर सकता है और व्यापार जोखिमों को नियंत्रित कर सकता है, जो रणनीति के बाद तेजी की प्रवृत्ति के रूप में उपयुक्त है। सिग्नल फ़िल्टरिंग, पैरामीटर परीक्षण, स्टॉप लॉस अनुकूलन आदि रणनीति की स्थिरता में और सुधार कर सकते हैं।


/*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)



अधिक