यह रणनीति विभिन्न अवधियों के चलती औसत की गणना करके वर्तमान प्रवृत्ति की दिशा की पहचान करती है और आरएसआई संकेतक के साथ संयुक्त व्यापार संकेत उत्पन्न करती है। जब छोटी अवधि चलती औसत लंबी अवधि चलती औसत से ऊपर जाती है, तो प्रवृत्ति को ऊपर माना जाता है और एक खरीद संकेत उत्पन्न होता है। जब छोटी अवधि चलती औसत लंबी अवधि चलती औसत से नीचे जाती है, तो प्रवृत्ति को उलट माना जाता है और एक बिक्री संकेत उत्पन्न होता है। आरएसआई संकेतक का उपयोग मामूली मूल्य उतार-चढ़ाव के कारण झूठे संकेतों से बचने के लिए किया जाता है।
10-दिवसीय, 20-दिवसीय, 50-दिवसीय, 100-दिवसीय और 200-दिवसीय सरल चलती औसत की गणना करें।
14 दिनों के आरएसआई मूल्य की गणना करें।
जब 10-दिवसीय एसएमए 50-दिवसीय एसएमए से ऊपर जाता है, और आरएसआई 30 से अधिक है, और 20-दिवसीय एसएमए 100-दिवसीय एसएमए से अधिक या उसके बराबर है या 50-दिवसीय एसएमए 100-दिवसीय एसएमए से अधिक या उसके बराबर है, तो खरीदें।
स्टॉप लॉस की कीमत को प्रवेश मूल्य से गुणा करके सेट करें (1 - स्टॉप लॉस प्रतिशत) ।
बेचें जबः
यह रणनीति चलती औसत का उपयोग करके बाजार की प्रवृत्ति का न्याय करती है और जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस सेट करती है। आरएसआई झूठे ब्रेकआउट को फ़िल्टर करता है। यह तब खरीदता है जब लघु अवधि एसएमए लंबी अवधि एसएमए से ऊपर जाता है, जो एक अपट्रेंड को इंगित करता है, और होल्डिंग अवधि के दौरान जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस लाइन सेट करता है। यह तब बेचता है जब एक प्रवृत्ति उलट संकेत होता है या स्टॉप लॉस मूल्य को ट्रिगर किया जाता है।
अनुकूलन चलती औसत अवधि, स्टॉप लॉस स्तर आदि को समायोजित करके किया जा सकता है। सटीकता बढ़ाने के लिए अन्य संकेतकों के साथ संयोजन पर भी विचार करें।
इस रणनीति में समग्र रूप से स्पष्ट तर्क है, प्रवृत्ति निर्धारण के लिए चलती औसत का उपयोग करना और जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस सेट करना। यह एक विशिष्ट प्रवृत्ति ट्रैकिंग रणनीति है। पैरामीटर ट्यूनिंग और अन्य संकेतकों को जोड़ने के माध्यम से आगे के सुधार प्राप्त किए जा सकते हैं। लेकिन कोई भी रणनीति सही नहीं है, बाजार की अनिश्चितताओं से निपटने के लिए निरंतर समायोजन और अनुकूलन की आवश्यकता है, साथ ही उचित जोखिम प्रबंधन के साथ।
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MA_Script", overlay=true) // STEP 1: // Configure trail stop level with input options (optional) longTrailPerc=input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.05, defval=0.1) // Configure backtest start date with inputs startDate=input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31) startMonth=input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12) startYear=input(title="Start Year", type=input.integer, defval=2020, minval=1800, maxval=2100) // See if this bar's time happened on/after start date afterStartDate=(time >=timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) // Calculate Relative Strength Index rsiValue=rsi(close, 14) // Calculate moving averages MA10_Val =sma(close, 10) //plot(MA10_Val, color=color.yellow, linewidth=1) MA20_Val =sma(close, 20) plot(MA20_Val, color=color.green, linewidth=1) MA50_Val =sma(close, 50) plot(MA50_Val, color=color.red, linewidth=1) MA100_Val =sma(close, 100) plot(MA100_Val, color=color.blue, linewidth=1) MA200_Val =sma(close, 200) plot(MA200_Val, color=color.purple, linewidth=1) // Calculate candlestick C_BodyHi = max(close, open) C_BodyLo = min(close, open) C_Body = C_BodyHi - C_BodyLo C_UpShadow = high - C_BodyHi C_DnShadow = C_BodyLo - low // STEP 2: // Calculate entry trading conditions buyCondition_1=crossover(MA10_Val, MA50_Val) and (rsiValue > 30) and ((MA20_Val >= MA100_Val) or (MA50_Val >= MA100_Val)) avg_price = (close + open)/2 // First Entry if (afterStartDate) strategy.entry(id="Entry_Trade_1", long=true, limit=avg_price, when=buyCondition_1) plotchar(afterStartDate and crossover(MA10_Val, MA50_Val), textcolor = color.blue, text = 'MA\n') // Determine trail stop loss prices longStopPrice=0.0 longStopPrice :=if (strategy.position_size > 0) stopValue=C_BodyHi * (1 - longTrailPerc) max(stopValue, longStopPrice[1]) else 0 plot(longStopPrice, color=color.orange, linewidth=1) bought_1=strategy.position_size[0] > strategy.position_size[1] entry_Point_1=valuewhen(bought_1, avg_price, 0) // STEP 3: // Calculate exit trading conditions sellCondition_2=crossunder(MA10_Val, MA50_Val) and (close < MA20_Val) sellCondition_3_temp=valuewhen((C_BodyHi >= entry_Point_1*1.2), 1, 0) sellCondition_1=(entry_Point_1*0.95 > close) and (sellCondition_3_temp != 1) sellCondition_3=(sellCondition_3_temp == 1) and (strategy.position_size > 0) and close <= longStopPrice plotchar((sellCondition_3 == 1) and (strategy.position_size > 0) and close <= longStopPrice, textcolor = color.red, text = 'TS\n', show_last = 11) plotchar(crossunder(MA10_Val, MA50_Val), textcolor = color.red, text = 'MA\n') id_val = "" stop_val = close condition = false if sellCondition_1 id_val := "Exit By Stop Loss At 7%" stop_val := entry_Point_1*0.93 condition := true else if sellCondition_2 id_val := "Exit By Take Profit based on MA" stop_val := close condition := true else if sellCondition_3 id_val := "Exit By Trailing Stop" stop_val := longStopPrice condition := true // Submit exit orders for trail stop loss price if (strategy.position_size > 0) //strategy.exit(id="Exit By Stop Loss At 7%", from_entry="Entry_Trade_1", stop=entry_Point_1*0.93, when=sellCondition_1) //strategy.exit(id="Exit By Take Profit based on MA", from_entry="Entry_Trade_1", stop=close, when=sellCondition_2) strategy.exit(id=id_val, from_entry="Entry_Trade_1", stop=stop_val, when=condition)