संसाधन लोड हो रहा है... लोड करना...

गतिशील अस्थिरता समायोजन के साथ बहु-स्तरीय आरएसआई औसत प्रतिवर्तन रणनीति

लेखक:चाओझांग, दिनांकः 2024-06-21 14:16:31
टैगःआरएसआई,पीआईवीओटी

img

अवलोकन

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

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

  1. प्रवेश की शर्तें:

    • मुख्य संकेतक के रूप में 20 अवधि के आरएसआई (आरएसआई20) का उपयोग करता है
    • आरएसआई की कई सीमाएँ (35/65, 30/70, 25/75, 20/80) निर्धारित करता है और संबंधित अस्थिरता सीमाएँ निर्धारित करता है
    • प्रवेश संकेत को ट्रिगर करता है जब आरएसआई एक सीमा तक पहुँचता है और वर्तमान मोमबत्ती शरीर का आकार संबंधित अस्थिरता सीमा से अधिक होता है
    • अतिरिक्त शर्तः कीमत को हाल के उच्च/निम्न समर्थन स्तर को एक निश्चित प्रतिशत से पार करना होगा
  2. स्थिति स्केलिंग तंत्र:

    • अधिकतम 5 प्रविष्टियों की अनुमति देता है (प्रारंभिक प्रविष्टि + 4 अतिरिक्त प्रविष्टियाँ)
    • प्रत्येक अतिरिक्त प्रविष्टि के लिए सख्त आरएसआई और अस्थिरता की शर्तों को पूरा करना आवश्यक है
  3. बाहर निकलने का तंत्र:

    • लाभ लेने के 5 अलग-अलग स्तरों को सेट करता है
    • टेक-प्रॉफिट पॉइंट्स को प्रवेश के समय समर्थन/प्रतिरोध स्तरों के आधार पर गतिशील रूप से गणना की जाती है
    • खुले पदों की संख्या में वृद्धि के साथ लाभ प्राप्त करने के लक्ष्य धीरे-धीरे घटते हैं
  4. जोखिम नियंत्रण:

    • एक प्रतिशत जोखिम मॉडल का उपयोग करता है, प्रत्येक व्यापार खाते के मूल्य का एक निश्चित 20% जोखिम लेता है
    • अधिकतम अनुमत समवर्ती खुली स्थिति को 5 पर सेट करता है, जो समग्र जोखिम जोखिम को सीमित करता है

रणनीतिक लाभ

  1. बहु-स्तरीय प्रवेशः कई आरएसआई और अस्थिरता सीमाओं को निर्धारित करके, रणनीति बाजार की चरम सीमाओं के विभिन्न स्तरों को पकड़ सकती है, जिससे व्यापार के अवसर बढ़ते हैं।

  2. गतिशील लाभ-खोजः समर्थन/प्रतिरोध स्तरों के आधार पर गणना किए गए लाभ-खोज अंक बाजार संरचना के अनुकूल हो सकते हैं, बहुत जल्दी बाहर निकलने के बिना लाभ की रक्षा कर सकते हैं।

  3. पिरामिड-शैली की पोजीशन स्केलिंगः रुझान जारी रहने के साथ पोजीशन बढ़ाना मुनाफे की क्षमता को काफी बढ़ा सकता है।

  4. जोखिम प्रबंधन: निश्चित प्रतिशत जोखिम और अधिकतम स्थिति सीमाएं प्रत्येक व्यापार और समग्र के लिए प्रभावी ढंग से जोखिम को नियंत्रित करती हैं।

  5. लचीलापन: कई समायोज्य मापदंडों से रणनीति को विभिन्न बाजार वातावरण और व्यापारिक साधनों के अनुकूल बनाने की अनुमति मिलती है।

  6. औसत रिवर्सन + ट्रेंड फॉलोइंग: औसत रिवर्सन और ट्रेंड फॉलोइंग के फायदों को जोड़ता है, प्रमुख रुझानों को याद किए बिना अल्पकालिक उलटफेर को पकड़ता है।

रणनीतिक जोखिम

  1. ओवरट्रेडिंगः अत्यधिक अस्थिर बाजारों में अक्सर ट्रेडिंग सिग्नल को ट्रिगर कर सकता है, जिससे अत्यधिक शुल्क हो सकता है।

  2. झूठे ब्रेकआउटः बाजारों में थोड़े समय के लिए अत्यधिक अस्थिरता का अनुभव हो सकता है जिसके बाद तेजी से उलटफेर हो सकते हैं, जिससे झूठे संकेत हो सकते हैं।

  3. लगातार होने वाले घाटे: लगातार एक दिशा में होने वाले बाजार आंदोलनों के परिणामस्वरूप कई बार स्थिति बढ़ने के बाद महत्वपूर्ण घाटे हो सकते हैं।

  4. पैरामीटर संवेदनशीलताः रणनीति प्रदर्शन पैरामीटर सेटिंग्स के लिए अत्यधिक संवेदनशील हो सकता है, ओवरफिटिंग का जोखिम।

  5. फिसलने का प्रभावः तीव्र अस्थिरता की अवधि के दौरान गंभीर फिसलने का सामना कर सकता है, जो रणनीति के प्रदर्शन को प्रभावित करता है।

  6. बाजार परिवेश पर निर्भरता: रणनीति कुछ बाजार परिवेशों में खराब प्रदर्शन कर सकती है, जैसे कि कम अस्थिरता या मजबूत प्रवृत्ति बाजार।

रणनीति अनुकूलन दिशाएं

  1. गतिशील पैरामीटर समायोजन: बाजार की स्थितियों के आधार पर गतिशील रूप से आरएसआई और अस्थिरता सीमाओं को समायोजित करने के लिए अनुकूलन तंत्र पेश करें।

  2. बहु-समय-सीमा विश्लेषणः प्रवेश की गुणवत्ता में सुधार के लिए दीर्घकालिक बाजार रुझानों के आकलन को शामिल करें।

  3. स्टॉप-लॉस अनुकूलन: जोखिम नियंत्रण के लिए ट्रेसिंग स्टॉप-लॉस या एटीआर आधारित गतिशील स्टॉप-लॉस जोड़ें।

  4. बाजार की स्थिति फ़िल्टरिंगः अनुचित बाजार वातावरण में व्यापार से बचने के लिए प्रवृत्ति की ताकत, अस्थिरता चक्र और अन्य फ़िल्टरिंग स्थितियों को शामिल करें।

  5. पूंजी प्रबंधन अनुकूलन: अधिक विस्तृत स्थिति प्रबंधन लागू करें, जैसे कि विभिन्न संकेत स्तरों के आधार पर व्यापार आकार को समायोजित करना।

  6. मशीन लर्निंग इंटीग्रेशनः पैरामीटर चयन और सिग्नल जनरेशन प्रक्रियाओं को अनुकूलित करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करें।

  7. सहसंबंध विश्लेषणः रणनीति स्थिरता और विविधता में सुधार के लिए अन्य परिसंपत्तियों के साथ सहसंबंध विश्लेषण को शामिल करें।

निष्कर्ष

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


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Retorno_Pivots_5min_Novo_v3.3')

// Input variables
bars_left1 = input(1, title = "Entry - Pivot Left Bars")
bars_right1 = input(1, title = "Entry - Pivot Right Bars")
rsi20_longentry0 = input(35, title = "Entry 1 - RSI20 Long")
rsi20_shortentry0 = input(65, title = "Entry 1 - RSI20 Short")
bar_size_entry0 = input.float(1, title="Entry 1 - Bar Size")
rsi20_longentry1 = input(30, title = "Entry 2 - RSI20 Long")
rsi20_shortentry1 = input(70, title = "Entry 2 - RSI20 Short")
bar_size_entry1 = input.float(0.8, title="Entry 2 - Bar Size")
rsi20_longentry2 = input(25, title = "Entry 3 - RSI20 Long")
rsi20_shortentry2 = input(75, title = "Entry 3 - RSI20 Short")
bar_size_entry2 = input.float(0.7, title="Entry 3 - Bar Size")
rsi20_longentry3 = input(20, title = "Entry 4 - RSI20 Long")
rsi20_shortentry3 = input(80, title = "Entry 4 - RSI20 Short")
bar_size_entry3 = input.float(0.5, title="Entry 4 - Bar Size")
limit_perc1 = input.float(0.60, title="Profit Range 1")
limit_perc2 = input.float(0.40, title="Profit Range 2")
limit_perc3 = input.float(0.20, title="Profit Range 3")
limit_perc4 = input.float(0.00, title="Profit Range 4")
limit_perc5 = input.float(0.00, title="Profit Range 5")
minimum_pivot_distance = input.float(0, title="Minimum Pivot Distance %")
barsize_1h_input = input(288, title="Highest Bar Lookback")
rsi20 = ta.rsi(close, 20)
rsi200 = ta.rsi(close, 200)
Pivot_High_Last1 = ta.valuewhen(ta.pivothigh(high, bars_left1, bars_right1), ta.pivothigh(high, bars_left1, bars_right1), 0)
Pivot_Low_Last1 = ta.valuewhen(ta.pivotlow(low, bars_left1, bars_right1), ta.pivotlow(low, bars_left1, bars_right1), 0)

barsize = math.abs(close - open)
barsize_1h = ta.highest(barsize, barsize_1h_input)

Bar0Long = rsi20 < rsi20_longentry0 and barsize >= (barsize_1h * bar_size_entry0)
Bar1Long = rsi20 < rsi20_longentry1 and barsize >= (barsize_1h * bar_size_entry1)
Bar2Long = rsi20 < rsi20_longentry2 and barsize >= (barsize_1h * bar_size_entry2)
Bar3Long = rsi20 < rsi20_longentry3 and barsize >= (barsize_1h * bar_size_entry3)

// Long Entries
Long_Entry1 = strategy.opentrades == 0 and rsi20 < rsi20[1] and ((rsi20 < rsi20_longentry0 and barsize >= (barsize_1h * bar_size_entry0)) or (rsi20 < rsi20_longentry1 and barsize >= (barsize_1h * bar_size_entry1)) or (rsi20 < rsi20_longentry2 and barsize >= (barsize_1h * bar_size_entry2)) or (rsi20 < rsi20_longentry3 and barsize >= (barsize_1h * bar_size_entry3))) and close < (Pivot_Low_Last1 * (1 - (minimum_pivot_distance / 100)))
Long_Entry2 = strategy.opentrades == 1 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry3 = strategy.opentrades == 2 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry4 = strategy.opentrades == 3 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
Long_Entry5 = strategy.opentrades == 4 and strategy.position_size > 0 and rsi20 < rsi20[1] and (Bar0Long or Bar1Long or Bar2Long or Bar3Long)
if Long_Entry1 or Long_Entry2 or Long_Entry3 or Long_Entry4 or Long_Entry5
    strategy.entry("Long", strategy.long, comment = "ENTER-LONG_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")
// Longs Exits
Long_Exit1 = strategy.opentrades == 1 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc1))
Long_Exit2 = strategy.opentrades == 2 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc2))
Long_Exit3 = strategy.opentrades == 3 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc3))
Long_Exit4 = strategy.opentrades == 4 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc4))
Long_Exit5 = strategy.opentrades == 5 and close > (strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc5))
if Long_Exit1 or Long_Exit2 or Long_Exit3 or Long_Exit4 or Long_Exit5
    strategy.close("Long", comment = "EXIT-LONG_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")

Bar0Short = rsi20 > rsi20_shortentry0 and barsize >= (barsize_1h * bar_size_entry0)
Bar1Short = rsi20 > rsi20_shortentry1 and barsize >= (barsize_1h * bar_size_entry1)
Bar2Short = rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2)
Bar3Short = rsi20 > rsi20_shortentry3 and barsize >= (barsize_1h * bar_size_entry3)

// Short Entries
Short_Entry1 = strategy.opentrades == 0 and rsi20 > rsi20[1] and ((rsi20 > rsi20_shortentry0 and barsize >= (barsize_1h * bar_size_entry0)) or (rsi20 > rsi20_shortentry1 and barsize >= (barsize_1h * bar_size_entry1)) or (rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2)) or (rsi20 > rsi20_shortentry2 and barsize >= (barsize_1h * bar_size_entry2))) and close > (Pivot_High_Last1 * (1 + (minimum_pivot_distance / 100)))
Short_Entry2 = strategy.opentrades == 1 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry3 = strategy.opentrades == 2 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry4 = strategy.opentrades == 3 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
Short_Entry5 = strategy.opentrades == 4 and strategy.position_size < 0 and rsi20 > rsi20[1] and (Bar0Short or Bar1Short or Bar2Short or Bar3Short)
if Short_Entry1 or Short_Entry2 or Short_Entry3 or Short_Entry4 or Short_Entry5
    strategy.entry("Short", strategy.short, comment = "ENTER-SHORT_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")
// Short Exits
Short_Exit1 = strategy.opentrades == 1 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc1))
Short_Exit2 = strategy.opentrades == 2 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc2))
Short_Exit3 = strategy.opentrades == 3 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc3))
Short_Exit4 = strategy.opentrades == 4 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc4))
Short_Exit5 = strategy.opentrades == 5 and close < (strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc5))
if Short_Exit1 or Short_Exit2 or Short_Exit3 or Short_Exit4 or Short_Exit5
    strategy.close("Short", comment = "EXIT-SHORT_BINANCE-FUTURES_BTCBUSD_Bot-BTC-1min_1M_970d2ee265390c27")

// Plots
plot(rsi20, color=color.new(#fbff00, 0), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc1))), color=color.new(#00ff2a, 0), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc2))), color=color.new(#00ff2a, 50), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc3))), color=color.new(#00ff2a, 80), linewidth=2)
plot(((strategy.position_avg_price + ((ta.valuewhen(strategy.opentrades == 0, Pivot_Low_Last1, 0) - (strategy.position_avg_price)) * limit_perc4))), color=color.new(#00ff2a, 100), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc1)), color=color.new(#ff0000, 0), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc2)), color=color.new(#ff0000, 50), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc3)), color=color.new(#ff0000, 80), linewidth=2)
plot((strategy.position_avg_price - ((strategy.position_avg_price - ta.valuewhen(strategy.opentrades == 0, Pivot_High_Last1, 0)) * limit_perc4)), color=color.new(#ff0000, 100), linewidth=2)
plot(strategy.position_avg_price, color=color.new(#ffc400, 0), linewidth=2)
plot(strategy.opentrades * (strategy.position_size / math.abs(strategy.position_size)), color=color.new(#ff00bb, 0), linewidth=2)
plot(((barsize / barsize_1h) * 100), color=color.new(#0000ff, 0), linewidth=2)

संबंधित

अधिक