यह रणनीति अल्पकालिक ट्रेडिंग के लिए ओवरबॉट और ओवरसोल्ड मार्केट स्थितियों को निर्धारित करने के लिए स्टोकेस्टिक ऑसिलेटर संकेतक का उपयोग करती है। यह स्टोकेस्टिक संकेतक पर एक स्वर्ण क्रॉस होने पर लंबी जाती है, और जोखिमों को नियंत्रित करते हुए लाभ को सुरक्षित करने के लिए पिछले पिवोट बिंदुओं के आधार पर लोचदार स्टॉप लॉस के साथ, एक मौत क्रॉस पर छोटी जाती है।
स्टोकैस्टिक ऑसिलेटर संकेतक में %K रेखा और %D रेखा होती है। जब %K रेखा %D रेखा के ऊपर पार करती है, तो एक स्वर्ण क्रॉस खरीद संकेत उत्पन्न होता है। जब %K रेखा %D रेखा के नीचे पार करती है, तो एक मृत्यु क्रॉस बिक्री संकेत ट्रिगर होता है। यह रणनीति प्रविष्टियों को निर्धारित करने के लिए स्टोकैस्टिक संकेतक पर क्रॉसओवर का पालन करती है।
विशेष रूप से, जब स्टोकैस्टिक संकेतक पर एक स्वर्ण क्रॉस होता है, यदि %K मूल्य 80 से कम है (अतिरिक्त नहीं खरीदा गया), तो एक लंबी स्थिति ली जाएगी। स्टोकैस्टिक मृत्यु क्रॉस पर, यदि %K मूल्य 20 से अधिक है (अतिरिक्त नहीं बेचा गया), तो एक छोटी स्थिति शुरू की जाएगी।
GoLong=crossover(k,d) and k<80
GoShort=crossunder(k,d) and k>20
यह रणनीति एक लोचदार स्टॉप लॉस दृष्टिकोण का उपयोग करती है, पिछले पिवोट बिंदुओं के आधार पर स्टॉप मूल्य निर्धारित करती है, जैसा कि नीचे दिखाया गया हैः
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
stoploss_long=valuewhen(piv_low,piv_low,0)
stoploss_short=valuewhen(piv_high,piv_high,0)
पिवोट महत्वपूर्ण समर्थन और प्रतिरोध स्तरों का प्रतिनिधित्व करते हैं. यदि कीमत पिवोट स्तर से टूट जाती है, तो स्थिति बंद हो जाएगी और स्टॉप लॉस की कीमत
इसके अतिरिक्त स्टॉप प्राइस में आगे के अनुकूलन के लिए चालू अवधि के उच्चतम और निम्नतम प्राइस को भी ध्यान में रखा गया हैः
if GoLong
stoploss_long := low<pl ? low : pl
if GoShort
stoploss_short := high>ph ? high : ph
शीर्ष और नीचे का पीछा करने से बचने के लिए स्टोकैस्टिक का उपयोग करना;
लोचदार स्टॉप लॉस बाजार परिवर्तनों का अनुसरण करता है और स्टॉप मूल्य को अनुकूलित करता है;
पीवोट पॉइंट ब्रेकआउट पर आधारित स्टॉप लॉस अधिक प्रभावी है;
वर्तमान उच्चतम और निम्नतम कीमतों का उपयोग करके स्टॉप मूल्य अनुकूलन स्टॉप को अधिक सटीक बनाता है।
स्टोकैस्टिक से झूठे संकेतों का जोखिम
स्टॉप लॉस की मार का जोखिम और बढ़ी हुई हानि
उच्च व्यापारिक आवृत्ति और कमीशन का जोखिम
स्टॉप लॉस को अनुकूलित करें, चैंडिलर एक्जिट, ट्रेलिंग स्टॉप, ऑसिलेटिंग स्टॉप लॉस आदि जैसे तरीकों का उपयोग करके
स्टोकैस्टिक झूठे संकेतों से बचने के लिए अन्य संकेतकों के साथ प्रवेश नियमों को अनुकूलित करें
लाभप्रदता बढ़ाने के लिए लाभ लक्ष्य का उपयोग करके लाभ लेने का अनुकूलन करें।
व्यापार के जोखिम के नियंत्रण के लिए प्रति व्यापार निश्चित मात्रा, निश्चित जोखिम प्रतिशत आदि जैसे पद आकार जोड़ें
विभिन्न बाजारों के आधार पर के, डी अवधि, चिकनाई आदि जैसे मापदंडों का अनुकूलन करें
यह रणनीति स्टोकैस्टिक ओवरबॉट/ओवरसोल्ड पर आधारित है और लोचदार स्टॉप लॉस के साथ जोखिम का प्रबंधन करती है। इसका लाभ गति का पीछा करने, प्रभावी स्टॉप से बचने का है, लेकिन इसमें कुछ झूठे संकेत जोखिम भी हैं। भविष्य में प्रविष्टियों, स्टॉप, निकास, जोखिम प्रबंधन आदि में सुधार किया जा सकता है।
/*backtest start: 2023-08-28 00:00:00 end: 2023-09-27 00:00:00 period: 2h 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/ // © Peter_O //@version=4 //strategy(title="TradingView Alerts to MT4 MT5 example with cancelling pending orders", commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=true, default_qty_value=100000, initial_capital=1000) // This script was created for educational purposes only. // It is showing how to create pending orders and cancel them // Together with syntax to send these events through TradingView alerts system // All the way to brokers for execution TakeProfitLevel=input(400) // **** Entries logic **** { periodK = 13 //input(13, title="K", minval=1) periodD = 3 //input(3, title="D", minval=1) smoothK = 4 //input(4, title="Smooth", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) // plot(k, title="%K", color=color.blue) // plot(d, title="%D", color=color.orange) // h0 = hline(80) // h1 = hline(20) // fill(h0, h1, color=color.purple, transp=75) GoLong=crossover(k,d) and k<80 GoShort=crossunder(k,d) and k>20 // } End of entries logic // **** Pivot-points and stop-loss logic **** { piv_high = pivothigh(high,1,1) piv_low = pivotlow(low,1,1) var float stoploss_long=low var float stoploss_short=high pl=valuewhen(piv_low,piv_low,0) ph=valuewhen(piv_high,piv_high,0) if GoLong stoploss_long := low<pl ? low : pl if GoShort stoploss_short := high>ph ? high : ph plot(stoploss_long, color=color.lime, title="stoploss_long") plot(stoploss_short, color=color.red, title="stoploss_short") // } End of Pivot-points and stop-loss logic CancelLong=crossunder(low,stoploss_long) and strategy.position_size[1]<=0 and strategy.position_size<=0 CancelShort=crossover(high,stoploss_short) and strategy.position_size[1]>=0 and strategy.position_size>=0 entry_distance=input(10, title="Entry distance for stop orders") plotshape(CancelLong ? stoploss_long[1]-10*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.gray, textcolor=color.white, text="cancel\nlong", size=size.tiny) plotshape(CancelShort ? stoploss_short[1]+10*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.gray, textcolor=color.white, text="cancel\nshort", size=size.tiny) strategy.entry("Long", strategy.long, when=GoLong, stop=close+entry_distance*syminfo.mintick) strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel) strategy.cancel("Long", when = CancelLong) strategy.entry("Short", strategy.short, when=GoShort, stop=close-entry_distance*syminfo.mintick) strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel) strategy.cancel("Short", when = CancelShort) if GoLong alertsyntax_golong='long offset=' + tostring(entry_distance) + ' slprice=' + tostring(stoploss_long) + ' tp=' + tostring(TakeProfitLevel) alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close) if GoShort alertsyntax_goshort='short offset=' + tostring(-entry_distance) + ' slprice=' + tostring(stoploss_short) + ' tp=' + tostring(TakeProfitLevel) alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close) if CancelLong alertsyntax_cancellong='cancel long' alert(message=alertsyntax_cancellong, freq=alert.freq_once_per_bar_close) if CancelShort alertsyntax_cancelshort='cancel short' alert(message=alertsyntax_cancelshort, freq=alert.freq_once_per_bar_close)