
इस रणनीति में बहु-चक्र भावना विश्लेषण की विधि का उपयोग किया गया है, जो एक्सबीटीयूएसडी अनुबंधों के लिए बहु-हल्का व्यापार करता है। यह विभिन्न चक्रों के तहत मूल्य उतार-चढ़ाव की मात्रा और उच्चतम मूल्य, न्यूनतम मूल्य की जानकारी को समग्र रूप से ध्यान में रखता है, और वजन के एक श्रृंखला के माध्यम से, वर्तमान बाजार के समग्र भावनात्मक मूल्य की गणना करता है। भावनात्मक मूल्य के परिवर्तन के नियमों के आधार पर व्यवहार का न्याय करें, खरीदें और बेचें उत्पन्न करें। संकेत
उच्चतम मूल्य, निम्नतम मूल्य, औसत मूल्य, और मूल्य उतार-चढ़ाव की सीमा के लिए a से j चक्रों के लिए 1 से 89 के रेखाओं के लिए गणना करें।
वर्तमान समापन मूल्य को मूल्य सीमा के भीतर एक मानकीकृत स्थान को परिभाषित करें, और फिर विभिन्न चक्रों में भावनात्मक मूल्य की गणना करने के लिए प्रत्येक चक्र में मूल्य में उतार-चढ़ाव की मात्रा को मिलाएं।
भावनात्मक मूल्य को वजन की एक श्रृंखला के माध्यम से समायोजित किया जाता है, और समग्र भावनात्मक मूल्य की गणना की जाती है। भावनात्मक मूल्य वर्तमान बाजार की औसत भावना को दर्शाता है।
भावनात्मक मूल्य के उतार-चढ़ाव का विश्लेषण करें, जब भावना सकारात्मक से नकारात्मक हो जाती है, तो एक बेचने का संकेत उत्पन्न होता है; जब भावना नकारात्मक से सकारात्मक हो जाती है, तो एक खरीदने का संकेत उत्पन्न होता है।
भावनाओं के निरपेक्ष उतार-चढ़ाव के आकार (डेल्टा चर) के आधार पर, प्रवेश की तीव्रता का आकलन करें, और स्टॉपलॉस की शर्तें सेट करें।
विभिन्न समय-सीमाओं में विभिन्न भावनाओं को ध्यान में रखते हुए, बाजार के रुझानों का अधिक व्यापक रूप से आकलन किया जाता है।
वेट एडजस्टमेंट मैकेनिज्म रणनीति को अधिक स्थिर बनाता है।
भावनात्मक मूल्य और भावनात्मक उतार-चढ़ाव को ध्यान में रखते हुए, प्रवेश के समय को बेहतर ढंग से निर्धारित किया जा सकता है।
उच्चतम और निम्नतम कीमतों के संयोजन के साथ, स्टॉप लॉस नियंत्रण जोखिम।
अनुचित पैरामीटर सेट करने से बहुत अधिक ट्रेडिंग हो सकती है या ट्रेडिंग के अवसरों को याद किया जा सकता है।
एक और घटना, ब्लैक स्वान, रणनीति को विफल कर सकती है।
अनुबंधों में बदलाव, ट्रेडिंग नियमों में बदलाव आदि से रणनीति पर प्रभाव पड़ सकता है।
भावनात्मक मूल्य की गणना ऐतिहासिक आंकड़ों पर निर्भर करती है और बाजार संरचना में परिवर्तन के साथ पुनर्मूल्यांकन और समायोजन की आवश्यकता होती है।
वेट, ट्रेडिंग चक्र, स्टॉप-लॉस की सीमा जैसे पैरामीटर को समायोजित करके अनुकूलित किया जा सकता है, ताकि रणनीति बाजार संरचना में बदलाव के लिए अधिक अनुकूल हो सके। साथ ही, धन प्रबंधन को अनुकूलित किया जा सके, एकल व्यापार आकार और समग्र स्थिति पर सख्त नियंत्रण।
भावनात्मक निर्णय के लिए आधार को समृद्ध करने के लिए विश्लेषण चक्र का विस्तार करना जारी रखें।
भावनात्मक न्याय और तकनीकी सूचकांकों के संयोजन के लिए अधिक तकनीकी सूचकांकों को जोड़ना।
भावनात्मक विशेषताओं को निकालने के लिए मशीन लर्निंग के साथ।
गतिशील भार समायोजन
स्टॉप लॉस रणनीति को अनुकूलित करें।
यह रणनीति भावना विश्लेषण के व्यापार दर्शन पर आधारित है, जो वर्तमान समग्र बाजार की भावना को बहु-चक्र समग्र विचार के माध्यम से निर्धारित करती है। इसका निरंतर भावनात्मक परिवर्तन ट्रेडिंग सिग्नल के निर्माण के आधार के रूप में है, और कीमत में उतार-चढ़ाव की जानकारी के साथ विशिष्ट प्रवेश समय का आकलन करने के लिए सहायक है। यह रणनीति स्थिति का आकलन करने के दृष्टिकोण से अद्वितीय है, जो बड़े चक्र के उतार-चढ़ाव के दौरान अच्छा प्रदर्शन करती है। चक्र सेटिंग को और विस्तारित करके, अधिक सहायक तकनीकी संकेतकों को जोड़ने, पैरामीटर अनुकूलन को समायोजित करने और अन्य तरीकों से, यह भावनात्मक व्यापार रणनीति अधिक परिपक्व और स्थिर हो सकती है, और अधिक जटिल बाजार वातावरण के अनुकूल हो सकती है।
/*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)