जोकर ट्रेलिंग टेक प्रॉफिट रणनीति चलती औसत पर आधारित एक प्रवृत्ति के बाद की रणनीति है। यह ट्रेलिंग स्टॉप लॉस और ट्रेलिंग टेक प्रॉफिट की विशेषताओं को जोड़ती है ताकि जब बाजार अनुकूल दिशा में आगे बढ़ता है तो लाभ अधिकतम हो सके, जबकि प्रवृत्ति उलट जाती है तो नुकसान कम हो जाता है।
यह रणनीति समग्र प्रवृत्ति की पहचान करने के लिए तेज और धीमी गति से चलती औसत का उपयोग करती है। यह लंबी जाती है जब तेज एमए धीमी एमए के ऊपर पार करती है, और छोटी जाती है जब तेज एमए धीमी एमए के नीचे पार करती है।
रणनीति पहले एक स्थिति खोलने के बाद कॉन्फ़िगर किए गए प्रतिशत के आधार पर एक प्रारंभिक लाभ लेने की कीमत की गणना करती है। यदि ट्रेलिंग लाभ लेने को सक्षम किया गया है, तो यह प्रतीक के न्यूनतम टिक आकार और कॉन्फ़िगर किए गए ट्रेलिंग प्रतिशत के आधार पर एक ट्रेलिंग चरण की गणना करता है।
जब स्थिति की दिशा संकेत से मेल खाती है, तो यदि ट्रेलिंग अक्षम है तो लाभ लेने के लिए एक सीमा आदेश का उपयोग किया जाता है। यदि ट्रेलिंग सक्षम है, तो लाभ लेने की कीमत चरण आकार के आधार पर ट्रेल की जाती है।
चलती औसत बाजार के शोर को फ़िल्टर करती हैं और झूठे संकेतों से बचती हैं।
ट्रेलिंग टेक प्रॉफिट प्राइस एक्शन के आधार पर प्राफिट लेवल को गतिशील रूप से समायोजित करता है। यह एक फिक्स्ड टेक प्रॉफिट प्राइस की तुलना में अधिक लचीला है।
लाभ लेने के बाद अधिक लाभ में ताला लग जाता है और लाभ वापस देने की संभावना कम हो जाती है। यह एक निश्चित लाभ लेने के स्तर के साथ बहुत जल्दी बाहर निकलने से भी बचता है।
स्टॉप लॉस फ़ंक्शन ट्रेंड रिवर्स होने पर रणनीति को जल्दी से बाहर निकलने की अनुमति देता है।
मूविंग एवरेज भारी मूल्य उतार-चढ़ाव के दौरान झूठे संकेत या लेग उत्पन्न कर सकते हैं। इससे गलत दिशा में ट्रेडों से नुकसान हो सकता है। एमए मापदंडों का अनुकूलन और फ़िल्टर जोड़ने से मदद मिल सकती है।
बहुत अधिक ले लाभ अनुपात रखने से होल्डिंग अवधि और वास्तविक और अपेक्षित ले लाभ मूल्य के बीच विचलन बढ़ जाता है। अनुपात को कम करने से यह जोखिम कम हो जाता है।
बहुत छोटा सेट होने पर ऑर्डर अपडेट्स बहुत अधिक हो जाते हैं और शुल्क और स्लिपज बढ़ जाते हैं।
ट्रेलिंग टीपी केवल ऊपर की ओर बढ़ता है और ड्रॉडाउन को ध्यान में नहीं रखता है। इससे वास्तविक और अपेक्षित लाभ लेने की कीमत के बीच विचलन हो सकता है। एक दो तरफा ट्रेलिंग तंत्र मदद कर सकता है।
अस्थिरता के आधार पर एमए मापदंडों के गतिशील समायोजन पर विचार करें। अस्थिरता के बढ़ते समय बड़ी अवधि और अस्थिरता के गिरते समय छोटी अवधि।
विचलन के जोखिम को कम करने के लिए विभिन्न उत्पादों और बाजारों के लिए लाभ अनुपात का शोध करें।
ऊपर और नीचे दोनों दिशाओं में ट्रेलिंग के लिए दो-तरफा ट्रैलिंग तंत्र का अन्वेषण करें। यह लाभ को मूल्य के करीब रखेगा।
कमजोर रुझानों में लाभ लेने के अनुपात को कम करने और मजबूत रुझानों में वृद्धि दर को कम करने के लिए रुझान की ताकत के संकेतक शामिल करें।
पूर्वानुमानित मूल्य सीमाओं के आधार पर गतिशील रूप से लाभ लेने के अनुपात निर्धारित करने के लिए मशीन लर्निंग मॉडल के साथ संयोजन।
जोकर ट्रेलिंग टेक प्रॉफिट रणनीति में एक स्पष्ट संरचना है और ट्रेन्ड की दिशा को परिभाषित करने के लिए मूविंग एवरेज का उपयोग करता है और मुनाफे में लॉक करने के लिए ट्रेलिंग का उपयोग करता है। यह जोखिमों को नियंत्रित करते हुए आसानी से रुझानों का पालन करने के लिए ट्रेलिंग स्टॉप और ट्रेलिंग टेक प्रॉफिट के फायदे को जोड़ती है। पैरामीटर अनुकूलन और अधिक जटिल बाजार वातावरण के अनुकूल होने के लिए लाभ लेने के तंत्र को बढ़ाने के माध्यम से और सुधार किया जा सकता है। कुल मिलाकर, यह एक रणनीति है जो आगे के शोध और अनुप्रयोग के लायक है।
/*backtest start: 2023-08-23 00:00:00 end: 2023-09-22 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='Joker Trailing TP Bot', shorttitle='Joker TTP Bot', overlay=true, pyramiding=0, process_orders_on_close=false, close_entries_rule='ANY', calc_on_every_tick=false, calc_on_order_fills=false, commission_type=strategy.commission.percent, commission_value=0.07, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, currency=currency.USD) //, max_labels_count=500) fromDate = input(timestamp('01 Jan 2021 00:00 UTC'), 'From Date') toDate = input(timestamp('31 Dec 2121 23:59 UTC'), 'To Date') fastMALen = input.int(23, 'Fast SMA Length') slowMALen = input.int(50, 'Slow SMA Length') longTakeProfitPerc = input.float(0.5, 'Long Take Profit %', minval=0.05, step=0.05) * 0.01 shortTakeProfitPerc = input.float(0.5, 'Short Take Profit %', minval=0.05, step=0.05) * 0.01 enableTrailing = input.bool(true, 'Enable Trailing') trailingTakeProfitPerc = input.float(0.01, 'Trailing Take Profit %', minval=0.01, maxval=100, step=0.01) * 0.01 float fastMA = ta.sma(close, fastMALen) float slowMA = ta.sma(close, slowMALen) bool isWithinPeriod = true bool openLongPosition = isWithinPeriod and ta.crossover(fastMA, slowMA) bool openShortPosition = isWithinPeriod and ta.crossunder(fastMA, slowMA) bool longIsActive = openLongPosition or strategy.position_size > 0 bool shortIsActive = openShortPosition or strategy.position_size < 0 float longTakeProfitPrice = na longTakeProfitPrice := if longIsActive if openLongPosition and not (strategy.position_size > 0) close * (1 + longTakeProfitPerc) else nz(longTakeProfitPrice[1], close * (1 + longTakeProfitPerc)) else na float shortTakeProfitPrice = na shortTakeProfitPrice := if shortIsActive if openShortPosition and not (strategy.position_size < 0) close * (1 - shortTakeProfitPerc) else nz(shortTakeProfitPrice[1], close * (1 - shortTakeProfitPrice)) else na float longTrailingTakeProfitStepTicks = longTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick float shortTrailingTakeProfitStepTicks = shortTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick strategy.entry(id = 'Long Entry', direction = strategy.long, when = openLongPosition, alert_message = 'Long(' + syminfo.ticker + '): Started') strategy.entry(id = 'Short Entry', direction = strategy.short, when = openShortPosition, alert_message = 'Short(' + syminfo.ticker + '): Started') strategy.exit(id = 'Long Take Profit', from_entry = 'Long Entry', limit = enableTrailing ? na : longTakeProfitPrice, trail_price = enableTrailing ? longTakeProfitPrice : na, trail_offset = enableTrailing ? longTrailingTakeProfitStepTicks : na, when = longIsActive, alert_message = 'Long(' + syminfo.ticker + '): Take Profit activated') strategy.exit(id = 'Short Take Profit', from_entry = 'Short Entry', limit = enableTrailing ? na : shortTakeProfitPrice, trail_price = enableTrailing ? shortTakeProfitPrice : na, trail_offset = enableTrailing ? shortTrailingTakeProfitStepTicks : na, when = shortIsActive, alert_message = 'Short(' + syminfo.ticker + '): Take Profit activated') plot(series = fastMA, title='Fast SMA', color = color.blue, linewidth = 1, style = plot.style_line) plot(series = slowMA, title='Slow SMA', color = color.orange, linewidth = 1, style = plot.style_line) plot(series = longTakeProfitPrice, title='Long Take Profit', color = color.green, linewidth = 1, style = plot.style_cross, offset = 1) plot(series = shortTakeProfitPrice, title='Short Take Profit', color = color.red, linewidth = 1, style = plot.style_cross, offset = 1) plot(series = strategy.position_avg_price, title='Position', color = color.white, linewidth = 1, style = plot.style_linebr)