ट्रिपल एक्सपोनेंशियल मूविंग एवरेज बैंड रणनीति


निर्माण तिथि: 2024-02-21 16:18:44 अंत में संशोधित करें: 2024-02-21 16:18:44
कॉपी: 0 क्लिक्स: 669
1
ध्यान केंद्रित करना
1617
समर्थक

ट्रिपल एक्सपोनेंशियल मूविंग एवरेज बैंड रणनीति

अवलोकन

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

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

  1. आरएसआई सूचकांक के तीन सेटों की गणना करेंः आरएसआई फास्टलाइन पीरियड = 50, आरएसआई मिडलाइन पीरियड = 75, आरएसआई स्लोलाइन पीरियड = 100।
  2. RSI सूचकांक के प्रत्येक समूह के लिए 5, 30, 50, 70, 90, और 100 चक्रों के लिए एक सरल चलती औसत या सूचकांक चलती औसत की गणना की जाती है, जिससे एक चलती औसत बैंड बनता है।
  3. जब तेज रेखा RSI को चलती औसत की पूरी लाइन ऊपर की ओर ले जाती है, तो यह एक बहु-हेड संकेत है; जब तेज रेखा RSI को चलती औसत की पूरी लाइन नीचे की ओर ले जाती है, तो यह एक खाली सिर संकेत है।
  4. मध्य रेखा आरएसआई और धीमी रेखा आरएसआई के लिए, चलती औसत के अनुरूप ट्रेडिंग सिग्नल हैं।
  5. किसी दिए गए ट्रेडिंग समय अवधि के दौरान, जब कोई खरीद संकेत होता है, तो 100% ओवरहेड पर स्थिति खोलें; जब कोई बेचने का संकेत होता है, तो पूर्व ओवरहेड स्थिति को खत्म करें।

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

यह रणनीति आरएसआई सूचक और चलती औसत के लाभों को जोड़ती है, जो विभिन्न प्रकार के आरएसआई के तीन सेटों का उपयोग करती है, जो विभिन्न स्तरों के चक्रों में रुझान परिवर्तन को पकड़ने के लिए, जबकि छह चलती औसत का उपयोग करते हुए कुछ शोर को फ़िल्टर करने के लिए, जिससे संकेत की विश्वसनीयता में सुधार होता है।

एक एकल आरएसआई और एक चलती औसत की तुलना में, यह गठबंधन एक व्यवस्थित विधि का उपयोग करके निर्णय के लिए आधार बनाता है, पैरामीटर अनुकूलन पर निर्भर नहीं करता है, वैज्ञानिक कठोरता का उपयोग करता है, सरल और आसानी से लागू होता है।

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

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

गलत संकेतों के जोखिम को कम करने के लिए, आरएसआई के चक्रों को उचित रूप से समायोजित करें, या चलती औसत के चक्रों की संख्या को समायोजित करें, और सर्वोत्तम संयोजन का पता लगाएं।

अनुकूलन दिशा

इस रणनीति को और भी बेहतर बनाया जा सकता है:

  1. स्टॉप लॉजिक जोड़ा गया। मौजूदा रणनीतियों में स्टॉप लॉजिक सेट नहीं है, जो बाजार में भारी उतार-चढ़ाव के लिए अतिसंवेदनशील है।
  2. ऑप्टिमाइज़ेशन पैरामीटर सेटिंग्स. सबसे अच्छा पैरामीटर खोजने के लिए अधिक संयोजनों का परीक्षण किया जा सकता है.
  3. अन्य संकेतक फ़िल्टर जोड़ें। अन्य संकेतक जैसे कि एमएसीडी, ब्रिन बैंड और अन्य को संकेत की पुष्टि करने के लिए पेश किया जा सकता है।
  4. समय और लेनदेन की मात्रा को फ़िल्टर करें। असामान्य समय अवधि और मात्रा के झूठे संकेत से बचें।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
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/
// © exlux99

//@version=4

strategy(title="3 RSI MA movement crypto strategy", overlay=true, initial_capital = 100, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.03, pyramiding=1  )

///////////////
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

source = input(ohlc4)

RSIFast  = rsi(source, 50)
RSINorm  = rsi(source, 75)
RSISlow = rsi(source, 100)

// plot(RSIFast, color=color.silver, style=plot.style_area, histbase=50)
// plot(RSINorm, color=#98b8be, style=plot.style_area, histbase=50)
// plot(RSISlow, color=#be9e98, style=plot.style_area, histbase=50)

// plot(RSIFast, color=color.gray, style=plot.style_line, linewidth=1)
// plot(RSINorm, color=color.purple, style=plot.style_line, linewidth=2)
// plot(RSISlow, color=color.black, style=plot.style_line, linewidth=3)

exponential = false//input(false, title="Exponential MA")

src = (RSIFast)

ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma100 = exponential ? ema(src, 100) : sma(src, 100)

leadMAColor = change(ma30)>=0 and ma30>ma100 ? color.lime            : change(ma30)<0  and ma30>ma100 ? color.red            : change(ma30)<=0 and ma30<ma100 ? color.maroon            : change(ma30)>=0 and ma30<ma100 ? color.green            : color.gray
maColor(ma, maRef) => 
              change(ma)>=0 and ma30>maRef ? color.lime            : change(ma)<0  and ma30>maRef ? color.red            : change(ma)<=0 and ma30<maRef ? color.maroon            : change(ma)>=0 and ma30<maRef ? color.green            : color.gray
            
// plot( ma30, color=maColor(ma30,ma100), style=plot.style_line, title="MMA30", linewidth=2)
// plot( ma50, color=maColor(ma50,ma100), style=plot.style_line, title="MMA50", linewidth=2)
// plot( ma70, color=maColor(ma70,ma100), style=plot.style_line, title="MMA70", linewidth=2)
// plot( ma90, color=maColor(ma90,ma100), style=plot.style_line, title="MMA90", linewidth=2)

long0=(leadMAColor==color.lime and maColor(ma30,ma100)==color.lime and maColor(ma50,ma100)==color.lime and maColor(ma70,ma100)==color.lime and maColor(ma90,ma100)==color.lime ) or (leadMAColor==color.green and maColor(ma30,ma100)==color.green and maColor(ma50,ma100)==color.green and maColor(ma70,ma100)==color.green and maColor(ma90,ma100)==color.green )
exit0=leadMAColor==color.maroon and maColor(ma30,ma100)==color.maroon and maColor(ma50,ma100)==color.maroon and maColor(ma70,ma100)==color.maroon and maColor(ma90,ma100)==color.maroon 


exponential1 = false//input(false, title="Exponential MA")

src1 = (RSINorm)

ma051 = exponential1 ? ema(src1, 05) : sma(src1, 05)
ma301 = exponential1 ? ema(src1, 30) : sma(src1, 30)
ma501 = exponential1 ? ema(src1, 50) : sma(src1, 50)
ma701 = exponential1 ? ema(src1, 70) : sma(src1, 70)
ma901 = exponential1 ? ema(src1, 90) : sma(src1, 90)
ma1001 = exponential1 ? ema(src1, 100) : sma(src1, 100)

leadMAColor1 = change(ma051)>=0 and ma051>ma1001 ? color.lime            : change(ma051)<0  and ma051>ma1001 ? color.red            : change(ma051)<=0 and ma051<ma1001 ? color.maroon            : change(ma051)>=0 and ma051<ma1001 ? color.green            : color.gray
maColor1(ma, maRef) => 
              change(ma)>=0 and ma05>maRef ? color.lime            : change(ma)<0  and ma05>maRef ? color.red            : change(ma)<=0 and ma05<maRef ? color.maroon            : change(ma)>=0 and ma05<maRef ? color.green            : color.gray
            
// plot( ma051, color=leadMAColor1, style=plot.style_line, title="MMA05", linewidth=1)
// plot( ma301, color=maColor1(ma301,ma1001), style=plot.style_line, title="MMA30", linewidth=3)
// plot( ma501, color=maColor1(ma501,ma1001), style=plot.style_line, title="MMA50", linewidth=3)
// plot( ma701, color=maColor1(ma701,ma1001), style=plot.style_line, title="MMA70", linewidth=3)
// plot( ma901, color=maColor1(ma901,ma1001), style=plot.style_line, title="MMA90", linewidth=3)

long1=(leadMAColor1==color.lime and maColor1(ma301,ma1001)==color.lime and maColor1(ma501,ma1001)==color.lime and maColor1(ma701,ma1001)==color.lime and maColor1(ma901,ma1001)==color.lime ) or (leadMAColor1==color.green and maColor1(ma301,ma1001)==color.green and maColor1(ma501,ma1001)==color.green and maColor1(ma701,ma1001)==color.green and maColor1(ma901,ma100)==color.green )
exit1=leadMAColor1==color.maroon and maColor1(ma301,ma1001)==color.maroon and maColor1(ma501,ma1001)==color.maroon and maColor1(ma701,ma1001)==color.maroon and maColor1(ma901,ma1001)==color.maroon 

 

exponential2 = false//input(false, title="Exponential MA")

src2 = (RSISlow)

ma052 = exponential2 ? ema(src2, 05) : sma(src2, 05)
ma302 = exponential2 ? ema(src2, 30) : sma(src2, 30)
ma502 = exponential2 ? ema(src2, 50) : sma(src2, 50)
ma702 = exponential2 ? ema(src2, 70) : sma(src2, 70)
ma902 = exponential2 ? ema(src2, 90) : sma(src2, 90)
ma1002 = exponential2 ? ema(src2, 100) : sma(src2, 100)

leadMAColor2 = change(ma052)>=0 and ma052>ma1002 ? color.lime            : change(ma052)<0  and ma052>ma1002 ? color.red            : change(ma052)<=0 and ma052<ma1002 ? color.maroon            : change(ma052)>=0 and ma052<ma1002 ? color.green            : color.gray
maColor2(ma, maRef) => 
              change(ma)>=0 and ma05>maRef ? color.lime            : change(ma)<0  and ma05>maRef ? color.red            : change(ma)<=0 and ma05<maRef ? color.maroon            : change(ma)>=0 and ma05<maRef ? color.green            : color.gray
            
// plot( ma052, color=leadMAColor2, style=plot.style_line, title="MMA05", linewidth=1)
// plot( ma302, color=maColor2(ma302,ma1001), style=plot.style_line, title="MMA30", linewidth=4)
// plot( ma502, color=maColor2(ma502,ma1001), style=plot.style_line, title="MMA50", linewidth=4)
// plot( ma702, color=maColor2(ma701,ma1001), style=plot.style_line, title="MMA70", linewidth=4)
// plot( ma902, color=maColor2(ma901,ma1001), style=plot.style_line, title="MMA90", linewidth=4)

long2=(leadMAColor2==color.lime and maColor2(ma302,ma1002)==color.lime and maColor2(ma502,ma1002)==color.lime and maColor2(ma702,ma1002)==color.lime and maColor2(ma902,ma1002)==color.lime ) or (leadMAColor2==color.green and maColor2(ma302,ma1002)==color.green and maColor2(ma502,ma1002)==color.green and maColor2(ma701,ma1002)==color.green and maColor2(ma901,ma1002)==color.green )
exit2=leadMAColor2==color.maroon and maColor2(ma302,ma1002)==color.maroon and maColor2(ma502,ma1002)==color.maroon and maColor2(ma702,ma1002)==color.maroon and maColor2(ma902,ma1002)==color.maroon 


long= long1 or long2
exit=  exit1 or exit2


// ------------------------- Strategy Logic --------------------------------- //
var longOpened = false
var shortOpened = false
var int timeOfBuy = na

 

longConditionLongOnly= long and not longOpened 

if longConditionLongOnly
    longOpened := true
    timeOfBuy := time


longExitSignal = exit
exitLongConditionLongOnly = longOpened[1] and longExitSignal

if exitLongConditionLongOnly
    longOpened := false
    timeOfBuy := na


//plotshape(longConditionLongOnly, color=color.green, text= "Buy", location= location.belowbar,style= shape.labelup, textcolor=color.white, size = size.tiny, title="Buy Alert",editable=false, transp=60)
//plotshape(exitLongConditionLongOnly, color=color.red, text= "exit", location= location.abovebar,style= shape.labeldown, textcolor=color.white, size = size.tiny, title="Sell Alert", editable=false, transp=60)

//alertcondition(longConditionLongOnly ,title='Buy Alert', message='Buy Alert')
//alertcondition(exitLongConditionLongOnly , title='exit Alert', message='exit Alert')

if(time_cond)
    strategy.entry("long",1,when=longConditionLongOnly)
    strategy.entry("short",0,when=exitLongConditionLongOnly)