आरएसआई सूचक और चलती औसत पर आधारित मात्रात्मक व्यापार रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-25 11:40:36
टैगः

img

अवलोकन

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

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

यह रणनीति मुख्य रूप से आरएसआई संकेतक और तेजी से / धीमी गति से चलती औसत का उपयोग मूल्य रुझानों और उलट समय निर्धारित करने के लिए करती है। विशेष रूप से, यह सबसे पहले तेजी से चलती औसत (एसएमए) और धीमी गति से चलती औसत की गणना करती है। जब तेजी से एसएमए धीमी एसएमए के ऊपर पार करता है, तो एक खरीद संकेत उत्पन्न होता है। जब तेजी से एसएमए धीमी एसएमए से नीचे पार करता है, तो एक बिक्री संकेत उत्पन्न होता है। यह दर्शाता है कि कीमत का रुझान बदल रहा है।

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

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

लाभ

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

  1. मूल्य उलट होने पर सटीक रूप से पद खोलें। मूविंग एवरेज गोल्डन क्रॉस का उपयोग खरीद संकेत के रूप में और डेथ क्रॉस का उपयोग बिक्री संकेत के रूप में करके मूल्य प्रवृत्ति उलटने के अवसरों को सटीक रूप से पकड़ सकते हैं।

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

  3. जोखिमों को अच्छी तरह से नियंत्रित किया जा सकता है। आरएसआई लाभ ले सकता है और उचित लाभ सीमा के भीतर पदों को बनाए रख सकता है और प्रभावी रूप से व्यापार जोखिमों को नियंत्रित कर सकता है।

  4. मापदंडों को अनुकूलित करना आसान है। विभिन्न बाजार वातावरणों के अनुकूल होने के लिए एसएमए अवधि, आरएसआई मापदंडों आदि को लचीले ढंग से समायोजित किया जा सकता है।

  5. उच्च पूंजी उपयोग दक्षता. प्रवृत्ति समेकन और सदमे के चरणों के दौरान अक्सर व्यापार किया जा सकता है, जिससे पूंजी का कुशल उपयोग होता है।

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

इस रणनीति में निम्नलिखित जोखिम भी हैं:

  1. ट्रैकिंग त्रुटि जोखिमः ट्रेंड जजमेंट के संकेतक के रूप में चलती औसत में कुछ विलंब होता है, जिससे पदों के खोलने का समय गलत हो सकता है।

  2. व्यापारिक जोखिम का लगातार होना। अस्थिर बाजारों में यह स्थिति के अत्यधिक खुले और बंद होने का कारण बन सकता है।

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

  4. लाभ लेने का जोखिम। अनुचित आरएसआई लाभ लेने की सेटिंग्स भी पदों के समय से पहले बाहर निकलने या लाभ लेने के बाहर निकलने के बाद वृद्धि जारी रखने का कारण बन सकती हैं।

अनुकूलन दिशाएँ

अनुकूलन दिशाएं इस प्रकार हैं:

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

  2. ऐतिहासिक डेटा के आधार पर पैरामीटर को स्वचालित रूप से समायोजित करने के लिए मशीन लर्निंग एल्गोरिदम को बढ़ाएं, पैरामीटर ट्यूनिंग जोखिम को कम करें।

  3. लाभ लेने की रणनीतियों के लिए अनुकूलन तंत्र को बढ़ाएं ताकि लाभ लेने को अधिक बुद्धिमान और बाजार परिवर्तनों के अनुकूल बनाया जा सके।

  4. एकल ट्रेडों के जोखिमों को कम करने के लिए गतिशील रूप से स्थिति के आकार को समायोजित करके स्थिति प्रबंधन रणनीतियों को अनुकूलित करना।

  5. उच्च आवृत्ति डेटा को जोड़ना और रणनीति आवृत्ति में सुधार के लिए उच्च आवृत्ति व्यापार के लिए टिक स्तर के वास्तविक समय के डेटा का उपयोग करना।

निष्कर्ष

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


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//1. 做多
//    a. RSI在超买区间时不开单,直到RSI回落一点再开单
//    b. 已经有多仓,如果RSI超买,则平多获利,当RSI回落一点之后,再次开多,直到有交叉信号反转做空

//2. 做空
//    a. RSI在超卖区间时不开单,直到RSI回落一点之后再开多单
//    b. 已经有空仓,如果RSI超卖,则平空获利,当RSI回落一点之后,再开空单,直到有交叉信号反转做多

//@version=4
strategy("策略_RSI+移动揉搓线_", overlay=true)

// 输入
fastLength = input(11, minval=1)
slowLength = input(82,minval=1)
length = input(title="长度", type=input.integer, defval=14, minval=1, maxval=100)
hight_rsi = input(title="rsi超过上轨平多获利", type=input.integer, defval=80, minval=1, maxval=100)
low_rsi = input(title="rsi超过下轨平空获利", type=input.integer, defval=20, minval=1, maxval=100)

open_long_rsi_threshold = input(title="rsi低于该阈值时才开多", type=input.integer, defval=75, minval=1, maxval=100)
open_short_rsi_threshold = input(title="rsi高于该阈值时才开空仓", type=input.integer, defval=25, minval=1, maxval=100)

// 均线
sma_fast = sma(close, fastLength)
sma_slow = sma(close, slowLength)
// RSI
rsi = rsi(close, length)

//**********变量*start*******//
var long_f = false // 标记是否是均线交叉多头
var short_f = false // 标记是否是均线交叉空头
var long_open_pending = false // 标记开仓时rsi是否处于超买状态
var short_open_pending = false // 标记开仓时rsi是否处于超卖
var long_rsi_over_buy = false // 标记 多仓时 是否发生超买平多获利
var short_rsi_over_sell = false // 标记 空仓时 是否发生超卖平空获利

//**********逻辑*start*******//

// 买入
longCondition = crossover(sma_fast, sma_slow)
if (longCondition)
    short_rsi_over_sell := false // 清空该标记,防止再次开空仓
    long_f := true
	short_f := false
	if (rsi < hight_rsi)
	    // 并且没有超买
	    strategy.entry("多", long=strategy.long)
    if (rsi > hight_rsi)
        // 开仓时发生超买,等待rsi小于hight_rsi
	    long_open_pending := true

// 卖出
shortCondition = crossunder(sma_fast, sma_slow)
if (shortCondition)
    long_rsi_over_buy := false //清空该标记,防止再次开多仓
    long_f := false
    short_f := true
    if (rsi > low_rsi)
        strategy.entry("空", long=strategy.short)
	if (rsi < low_rsi)
	    // 开仓时发生超卖,等待rsi大于low_rsi
	    short_open_pending := true
	    

// 等待RSI合理,买入开仓
if (long_f and long_open_pending and strategy.position_size == 0 and rsi < open_long_rsi_threshold)
    strategy.entry("多", long=strategy.long)
	long_open_pending := false
// 等待RSI合理,卖出开仓
if (short_f and short_open_pending and strategy.position_size == 0 and rsi > open_short_rsi_threshold)
    strategy.entry("空", long=strategy.short)
	short_open_pending := false


	
//RSI止盈(RSI超买平多)
if (strategy.position_size > 0 and long_f and rsi > hight_rsi)
	strategy.close_all()
	long_rsi_over_buy := true
//RSI止盈(RSI超卖平空)
if (strategy.position_size < 0 and short_f and rsi < low_rsi)
	strategy.close_all()
	short_rsi_over_sell := true
	
	
//RSI止盈之后,再次开多
if (long_f and long_rsi_over_buy and strategy.position_size == 0 and rsi < hight_rsi)
    long_rsi_over_buy := false
    strategy.entry("多", long=strategy.long)
//RSI止盈之后,再次开空
if (short_f and short_rsi_over_sell and strategy.position_size == 0 and rsi > low_rsi)
    short_rsi_over_sell := false
    strategy.entry("空", long=strategy.short)


//**********绘图*start*******//

p1 = plot(sma_fast, linewidth=2, color=color.green)
p2 = plot(sma_slow, linewidth=2, color=color.red)
fill(p1, p2, color=color.green)
plot(cross(sma_fast, sma_slow) ? sma_fast : na, style = plot.style_circles, linewidth = 4)

// 绘制rsi线
//plot(rsi, color=color.green, editable=true, style=plot.style_circles, linewidth=2)

// 绘制上下轨
//high_ = hline(80, title="上轨")
//low_ = hline(20, title="下轨")
//fill(high_, low_, transp=80, editable=true, title="背景")
    
    
    
    
    
    
    

अधिक