यह रणनीति एक्सबीटीयूएसडी वायदा अनुबंध को लंबा या छोटा करने के लिए बहु-चक्र भावना विश्लेषण के दृष्टिकोण को अपनाती है। यह विभिन्न चक्रों में मूल्य उतार-चढ़ाव रेंज और उच्चतम और निम्नतम कीमतों पर व्यापक रूप से विचार करती है, और वजन समायोजन की एक श्रृंखला के माध्यम से समग्र बाजार भावना की गणना करती है। भावना मूल्य के बदलते पैटर्न के आधार पर खरीद और बिक्री संकेत उत्पन्न होते हैं।
उच्चतम मूल्य, निम्नतम मूल्य, औसत मूल्य, मूल्य उतार-चढ़ाव की सीमा और अन्य संकेतकों की गणना एक से j (1 से 89 बार) चक्रों में की जाती है।
मूल्य सीमा (स्थान चर) के भीतर समापन मूल्य की मानकीकृत स्थिति को परिभाषित करें। विभिन्न चक्रों के लिए भावना मूल्य प्राप्त करने के लिए इसे प्रत्येक चक्र के मूल्य उतार-चढ़ाव सीमा के साथ मिलाएं।
भाव मूल्य समग्र भाव मूल्य (भावना) प्राप्त करने के लिए वजन (w चर) समायोजन की एक श्रृंखला से गुजरते हैं। भाव वर्तमान समग्र बाजार की भावना को दर्शाता है।
भाव मूल्य के उतार-चढ़ाव का विश्लेषण करें। जब भाव सकारात्मक से नकारात्मक हो जाता है तो एक बिक्री संकेत उत्पन्न होता है। जब भाव नकारात्मक से सकारात्मक हो जाता है तो एक खरीद संकेत उत्पन्न होता है।
भाव में उतार-चढ़ाव (डेल्टा चर) के पूर्ण मूल्य के आधार पर प्रवेश गति निर्धारित करें और लाभ लेने और हानि रोकने की शर्तें निर्धारित करें।
बाजार के रुझान का अधिक व्यापक आकलन करने के लिए विभिन्न चक्रों में भावनाओं पर विचार करें।
वजन समायोजन तंत्र रणनीति को अधिक स्थिर बनाता है।
भाव मूल्य और इसके उतार-चढ़ाव को मिलाकर अधिक सटीक प्रवेश समय।
उच्चतम मूल्य, निम्नतम मूल्य के साथ जोखिम का प्रबंधन करें, लाभ लें और हानि रोकें।
अनुचित पैरामीटर सेटिंग्स से बहुत अधिक व्यापार या खोए हुए अवसर हो सकते हैं।
ब्लैक स्वान घटनाएं रणनीति तर्क को अमान्य कर सकती हैं।
अनुबंध के समायोजन और नियम परिवर्तन रणनीति के प्रदर्शन को प्रभावित कर सकते हैं।
भाव की गणना ऐतिहासिक आंकड़ों पर आधारित होती है। बाजार व्यवस्था में परिवर्तन होने पर पुनर्मूल्यांकन की आवश्यकता होती है।
बाजार की बदलती परिस्थितियों के अनुरूप भार, व्यापार चक्र, लाभ अनुपात आदि को समायोजित करके जोखिमों का प्रबंधन किया जा सकता है। इस बीच स्थिति आकार और समग्र जोखिम को सख्ती से नियंत्रित करके पूंजी प्रबंधन को अनुकूलित करें।
भावनात्मक निर्णय के लिए समृद्ध आधार बनाने के लिए विश्लेषण चक्र का विस्तार करें।
संयुक्त दृष्टिकोण के लिए अधिक तकनीकी संकेतकों को शामिल करना।
मशीन लर्निंग विधियों के साथ भावनाओं की विशेषताएं निकालें।
गतिशील रूप से वजन सेटिंग्स को समायोजित करें।
लाभ लेने और हानि रोकने की रणनीतियों का अनुकूलन करें।
यह रणनीति भावना विश्लेषण के व्यापार दर्शन पर आधारित है। यह कई चक्रों पर विचार करके वर्तमान समग्र बाजार मूड निर्धारित करता है। निरंतर भावना परिवर्तन समय प्रविष्टि के लिए मूल्य उतार-चढ़ाव की सहायता से व्यापार संकेत उत्पन्न करने के लिए आधार के रूप में कार्य करते हैं। बाजार के रुझानों का न्याय करने का यह अनूठा दृष्टिकोण विभिन्न चक्रों में अच्छी तरह से काम करता है। विश्लेषण की अवधि का विस्तार करना, अधिक संकेतक जोड़ना और अनुकूलन करना अधिक जटिल बाजार वातावरण के अनुकूल होने के लिए भावना व्यापार रणनीति को अधिक परिपक्व और स्थिर बना सकता है।
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h 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/ // © Jomy //@version=4 //2h chart BITMEX:XBTUSD //use on low leverage 1-2x only strategy("expected range STRATEGY",overlay=false,initial_capital=1000,precision=2) leverage=input(1,"leverage",step=.5) tp=input(53,"take profit %",step=1) sl=input(7,"stoploss %",step=1) stoploss=1-(sl/100) plot(stoploss) level=input(.70,"level to initiate trade",step=.02) closelevel=input(0.0,"level to close trade",step=.02) levelshort=input(.68,"level to initiate trade",step=.02) closelevelshort=input(0.0,"level to close trade",step=.02) wa=input(1.158,"weight a",step=.2) wb=input(1.119,"weight b",step=.2) wc=input(1.153,"weight c",step=.2) wd=input(1.272,"weight d",step=.2) we=input(1.295,"weight e",step=.2) wf=input(1.523,"weight f",step=.2) wg=input(1.588,"weight g",step=.2) wh=input(2.100,"weight h",step=.2) wi=input(1.816,"weight i",step=.2) wj=input(2.832,"weight j",step=.2) a=1 b=2 c=3 d=5 e=8 f=13 g=21 h=34 i=55 j=89 n=0 n:=if volume > -1 nz(n[1])+1 ra=highest(high,a)-lowest(low,a) aa=sma(ohlc4,a) ha=aa[1]+ra[1]/2 la=aa[1]-ra[1]/2 rb=highest(high,b)-lowest(low,b) ab=sma(ohlc4,b) hb=ab[1]+rb[1]/2 lb=ab[1]-rb[1]/2 rc=highest(high,c)-lowest(low,c) ac=sma(ohlc4,c) hc=ac[1]+rc[1]/2 lc=ac[1]-rc[1]/2 rd=highest(high,d)-lowest(low,d) ad=sma(ohlc4,d) hd=ad[1]+rd[1]/2 ld=ad[1]-rd[1]/2 re=highest(high,e)-lowest(low,e) ae=sma(ohlc4,e) he=ae[1]+re[1]/2 le=ae[1]-re[1]/2 rf=highest(high,f)-lowest(low,f) af=sma(ohlc4,f) hf=af[1]+rf[1]/2 lf=af[1]-rf[1]/2 rg=highest(high,g)-lowest(low,g) ag=sma(ohlc4,g) hg=ag[1]+rg[1]/2 lg=ag[1]-rg[1]/2 rh=highest(high,h)-lowest(low,h) ah=sma(ohlc4,h) hh=ah[1]+rh[1]/2 lh=ah[1]-rh[1]/2 ri=highest(high,i)-lowest(low,i) ai=sma(ohlc4,i) hi=ai[1]+ri[1]/2 li=ai[1]-ri[1]/2 rj=highest(high,j)-lowest(low,j) aj=sma(ohlc4,j) hj=aj[1]+rj[1]/2 lj=aj[1]-rj[1]/2 placea=((close-la)/(ha-la)-.5)*-100 placeb=((close-lb)/(hb-lb)-.5)*-100 placec=((close-lc)/(hc-lc)-.5)*-100 placed=((close-ld)/(hd-ld)-.5)*-100 placee=((close-le)/(he-le)-.5)*-100 placef=((close-lf)/(hf-lf)-.5)*-100 placeg=((close-lg)/(hg-lg)-.5)*-100 placeh=((close-lh)/(hh-lh)-.5)*-100 placei=((close-li)/(hi-li)-.5)*-100 placej=((close-lj)/(hj-lj)-.5)*-100 sentiment=((placea/j)*ra*wa+(placeb/i)*rb*wb+(placec/h)*rc*wc+(placed/g)*rd*wd+(placee/f)*re*we+(placef/e)*rf*wf+(placeg/d)*rg*wg+(placeh/c)*rh*wh+(placei/b)*ri*wi+(placej/a)*rj*wj)/(wa+wb+wc+wd+we+wf+wg+wh+wi+wj) deltalong=0.0 deltalong:=if sentiment>0 nz(deltalong[1])+sentiment-sentiment[1] else 0 deltashort=0.0 deltashort:=if sentiment<0 nz(deltashort[1])+((sentiment-sentiment[1])*-1) else 0 //plot(sentiment*-1,color=color.blue) //plot(deltalong,color=color.red) //plot(deltashort,color=color.lime) peakfindlong=highest(deltalong,j)*level peakfindshort=highest(deltashort,j)*levelshort contracts=(strategy.equity/close)*leverage //reason for o is this strategy makes dumb trades before the sentiment line crosses the 0 point the first time o=0 o:=if cross(0,sentiment) and n>j 1 else nz(o[1]) long=deltashort>peakfindlong and o==1 short=deltalong>peakfindshort and o==1 longstart=0.0 longstart:=if strategy.position_size>0 and strategy.position_size[1]<=0 close else nz(longstart[1]) shortstart=0.0 shortstart:=if strategy.position_size<0 and strategy.position_size[1]>=0 close else nz(shortstart[1]) highsincelong = 0.0 highsincelong := if strategy.position_size>0 max(max(highsincelong[1],high),high[1]) else 0 lowsinceshort = 1000000.0 lowsinceshort := if strategy.position_size<0 min(min(lowsinceshort[1],low),low[1]) else 10000000 closelong=strategy.position_size > 0 and ((highsincelong/longstart-1)*100) > tp closeshort=strategy.position_size < 0 and ((shortstart/lowsinceshort-1)*100) > tp stoptrade=0 stoptrade:= if closelong 1 else nz(stoptrade[1]) stoptrade:= if short and stoptrade[1]==1 0 else stoptrade stoptrade:= if closeshort -1 else stoptrade stoptrade:= if long and stoptrade[1]==-1 0 else stoptrade if(closelong) strategy.close("Long1") pnllong = ((close - strategy.position_avg_price) / strategy.position_avg_price)*100 pnlshort = ((strategy.position_avg_price-close) / strategy.position_avg_price) *100 plot (strategy.position_size > 0 ?(highsincelong/longstart-1)*100 : 0.0,color=color.lime,linewidth=2) plot (strategy.position_size < 0 ?(shortstart/lowsinceshort-1)*100 : 0.0,color=color.red,linewidth=2) plot( strategy.position_size > 0 ? pnllong:0, color=strategy.position_size > 0 ?color.yellow:color.black,linewidth=2 ) plot( strategy.position_size < 0 ? pnlshort:0, color=strategy.position_size < 0 ?color.orange:color.black,linewidth=2) longuntilshort=0 longuntilshort:=if long 1 else if short -1 else nz(longuntilshort[1]) bgcolor(stoptrade!=0?color.black:longuntilshort==1?color.lime:longuntilshort==-1?color.red:na,transp=70) if(long and stoptrade==0) strategy.entry("Long1",strategy.long,qty=max(1,min(contracts,1000000000))) if(closelong) strategy.close("Long1") strategy.exit("Long1",stop=longstart * stoploss,when = strategy.position_size>0) if(short and stoptrade==0) strategy.entry("Short1",strategy.short,max(1,min(contracts,1000000000))) if(closeshort) strategy.close("Short1") strategy.exit("Long1",stop=shortstart / stoploss,when = strategy.position_size<0)