समन्वित स्लाइडिंग स्टॉप लॉस रणनीति


निर्माण तिथि: 2023-11-02 16:28:55 अंत में संशोधित करें: 2023-11-02 16:28:55
कॉपी: 0 क्लिक्स: 562
1
ध्यान केंद्रित करना
1617
समर्थक

समन्वित स्लाइडिंग स्टॉप लॉस रणनीति

अवलोकन

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

रणनीति सिद्धांत

सबसे पहले, रणनीति 5 लंबाई के आरएसआई सूचक और 7 लंबाई के स्टोकेस्टिक सूचक का उपयोग करके स्टोकेस्टिक आरएसआई की गणना करती है। स्टोकेस्टिक आरएसआई का K मान डी मान से अधिक होने पर एक bullish संकेत है, और K मान डी मान से कम होने पर एक bearish संकेत है।

दूसरा, रणनीति की गणना की जाती है कि कीमतों की गतिशीलता का संकेत ईएमए आरओसी है। यह माना जाता है कि कीमतें सक्रिय रूप से बदल रही हैं जब ईएमए आरओसी आधे से अधिक है या आधे से कम है।

फिर, स्टोकास्टिक आरएसआई के पॉलीहोल सिग्नल और मूल्य परिवर्तन दर के संकेतक के संयोजन के साथ, एक प्रवृत्ति की दिशा की पहचान की जा सकती है। स्टोकास्टिक आरएसआई के ऊपर और कीमत सक्रिय रूप से चलती है, तो अधिक करें; स्टोकास्टिक आरएसआई के नीचे और कीमत सक्रिय रूप से चलती है, तो कम करें।

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

श्रेष्ठता विश्लेषण

इस रणनीति के निम्नलिखित फायदे हैं:

  1. स्टोकेस्टिक आरएसआई का उपयोग ट्रेंड और ओवरबॉट और ओवरसोल्ड की स्थिति की पहचान करने के लिए किया जाता है।

  2. मूल्य परिवर्तनशीलता सूचकांक झूठे संकेतों से बचने के लिए बाजारों के उतार-चढ़ाव को फ़िल्टर कर सकते हैं।

  3. निर्देशांक स्लाइडिंग स्टॉप लॉस मोड अधिकतम लाभ को लॉक करने और जोखिम को नियंत्रित करने में मदद करता है।

  4. रणनीति पैरामीटर अनुकूलित करने के लिए पर्याप्त जगह है, विभिन्न किस्मों के लिए समायोजित किया जा सकता है।

  5. इस योजना के तहत, हम अपने ग्राहकों के लिए एक नई रणनीति तैयार कर रहे हैं, जो कि सरल और स्पष्ट है।

जोखिम विश्लेषण

इस रणनीति के कुछ जोखिम भी हैं:

  1. स्टोकेस्टिक आरएसआई एक झूठे संकेत का उत्पादन कर सकता है, जिसे अन्य कारकों के साथ संयोजन में पुष्टि करने की आवश्यकता है।

  2. निर्देशांक स्लाइडिंग स्टॉप को रात के अंतराल से मारा जा सकता है।

  3. अल्पकालिक पलटाव के कारण स्टॉप लॉस ट्रिगर हो सकता है।

  4. रणनीति पैरामीटर को विभिन्न किस्मों के लिए अनुकूलित करने की आवश्यकता होती है, अन्यथा यह खराब हो सकता है।

  5. लेनदेन की लागत रणनीतिक लाभप्रदता को प्रभावित करती है और उचित लेनदेन आवृत्ति पर विचार करने की आवश्यकता होती है।

अनुकूलन दिशा

इस रणनीति को निम्नलिखित पहलुओं से भी अनुकूलित किया जा सकता हैः

  1. स्टोचैस्टिक आरएसआई पैरामीटर को अनुकूलित करें, झूठे संकेत की दर को कम करें। विभिन्न के-मूल्य और डी-मूल्य पैरामीटर का परीक्षण किया जा सकता है।

  2. फ़िल्टरिंग प्रभाव को बढ़ाने के लिए मूल्य परिवर्तन दर सूचक मापदंडों का अनुकूलन करें। विभिन्न विंडो अवधि और परिवर्तन दर थ्रेशोल्ड का परीक्षण किया जा सकता है।

  3. रुझान को समझने के लिए संकेतकों के साथ संयोजन करें, ताकि रिवर्स स्टॉप लॉस से बचा जा सके। उदाहरण के लिए, चलती औसत जोड़ने जैसे संकेतक।

  4. स्टॉप लॉस अनुपात को अनुकूलित करें और जोखिम को कम करें। विभिन्न स्टॉप लॉस आयामों का परीक्षण किया जा सकता है।

  5. स्थिति प्रबंधन जोड़ें, एकल जोखिम को नियंत्रित करें। उदाहरण के लिए, एक निश्चित स्टॉप-लॉस राशि, या खाते की शेष राशि के आधार पर स्थिति को गतिशील रूप से समायोजित करें।

  6. विभिन्न किस्मों के मापदंडों का परीक्षण करने के लिए, अनुकूलनशीलता में सुधार।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Sto2", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true
    
///////////// Stochastic calc /////////////
smoothK = input(1, minval=1)
smoothD = input(7, minval=1)
lengthRSI = input(5, minval=1)
lengthStoch = input(7, minval=1)
src = input(close, title="RSI Source")

up = sma(max(change(src), 0), lengthRSI) 
down = sma(-min(change(src), 0), lengthRSI)
rsi1 = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

///////////// Rate Of Change ///////////// 
source = close, roclength = input(14, minval=1), pcntChange = input(2, minval=1)
roc = 100 * (source - source[roclength]) / source[roclength]
emaroc = ema(roc, roclength / 2)
isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2))

/////////////// STRATEGY ///////////////
long = k > d and isMoving()
short = k < d and isMoving()

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])
sl_inp = input(2.0, title='Stop Loss %') / 100
tp_inp = input(9.0, title='Take Profit %') / 100 
 
take_level_l = strategy.position_avg_price * (1 + tp_inp)
take_level_s = strategy.position_avg_price * (1 - tp_inp) 

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) // LONG SL
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) // SHORT SL

slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na

// Strategy
if testPeriod()
    strategy.entry("Long Entry",  strategy.long, when=long)
    strategy.entry("Short Entry", strategy.short, when=short)
    strategy.exit("Long Ex", "Long Entry", stop=long_sl, limit=take_level_l, when=since_longEntry > 0)
    strategy.exit("Short Ex", "Short Entry", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0)
    
///////////// Plotting /////////////
bgcolor(isMoving() ? long ? color.green : short ? color.red : na : color.white, transp=80)
p1 = plot(k, color=color.gray, linewidth=0)
p2 = plot(d, color=color.gray, linewidth=0)
h0 = hline(100)
h1 = hline(50)
h3 = hline(0)
fill(p1, p2, color = k > d ? color.lime : color.red, transp=70)