
Diese Strategie verwendet die Methode der mehrzeitlichen Emotion-Analyse, um überflüssige Geschäfte mit XBTUSD-Kontrakten zu tätigen. Sie berücksichtigt die Preisschwankungen und die Höchst- und Tiefpreisinformationen in verschiedenen Zeitabschnitten und berechnet den Gesamt-Emotion-Wert des aktuellen Marktes durch eine Reihe von Gewichten.
Berechnen Sie die Höchst- und Mindestpreise, die Durchschnittspreise und die Preisschwankungsbreite für die Perioden a bis j ((1 bis 89 K-Linien)).
Definition der Standardisierung der Position des aktuellen Schlusskurses innerhalb des Preisbereichs (Place-Variable) und Berechnung der Emotionswerte in verschiedenen Perioden in Verbindung mit den Preisschwankungen in den einzelnen Perioden.
Der Sentimentwert wird durch eine Reihe von Gewichten (w-Variablen) angepasst, um den Gesamt-Sentimentwert (sentiment) zu berechnen. Der Sentimentwert spiegelt die durchschnittliche Stimmung des aktuellen Marktes wider.
Analysieren Sie die Schwankungen der Emotionswerte, die ein Verkaufssignal erzeugen, wenn die Emotionen von positiv zu negativ wechseln; wenn die Emotionen von negativ zu positiv wechseln, erzeugen sie ein Kaufsignal.
Die Größe der absoluten Schwankungen der Emotionen (Delta-Variablen), die Beurteilung der Intensität des Einstiegs und die Einstellung der Stop-Loss-Bedingungen.
Es ist wichtig, die Stimmung in verschiedenen Zeiträumen zu berücksichtigen, um eine umfassendere Einschätzung der Marktentwicklung zu erhalten.
Die Gewichtsanpassung macht die Strategie stabiler.
Die Einreisezeit wird besser beurteilt, wenn die Emotionswerte und die Emotionsschwankungen berücksichtigt werden.
Risikokontrolle durch Stop-Loss-Mechanismen in Kombination mit Höchst- und Mindestpreisen.
Die falsche Einstellung der Parameter kann zu zu häufigen Transaktionen oder verpassten Handelsmöglichkeiten führen.
Ein plötzlicher Schwarzer Schwan könnte die Strategie zum Scheitern bringen.
Vertragsänderungen und Änderungen der Handelsregeln können Auswirkungen auf die Strategie haben.
Die Berechnung der Emotionswerte basiert auf historischen Daten, die bei Veränderungen der Marktstruktur neu bewertet und angepasst werden müssen.
Die Strategie kann durch Anpassung von Parametern wie Gewichtung, Handelszyklus und Stop-Loss-Marge optimiert werden, um die Strategie besser an Veränderungen der Marktstruktur anzupassen. Gleichzeitig wird die Kapitalverwaltung optimiert, wobei die Größe der einzelnen Geschäfte und die Gesamtposition streng kontrolliert werden.
Weiterhin soll der Analysezyklus erweitert und die Grundlage für emotionale Beurteilungen bereichert werden.
Es ist wichtig, mehr technische Kennzahlen hinzuzufügen, um eine Kombination aus emotionalen und technischen Kennzahlen zu erreichen.
Das ist ein Beispiel für die Entwicklung von Emotionsmerkmalen in Kombination mit maschinellen Lernmethoden.
Dynamische Anpassung der Gewichte.
Optimierung der Stop-Loss-Strategie.
Diese Strategie basiert auf der Trading-Philosophie der Emotion-Analyse und beurteilt die aktuelle Gesamtmarkt-Stimmung durch eine umfassende Überlegung über mehrere Zeiträume. Die kontinuierlichen Veränderungen der Stimmung dienen als Grundlage für die Erzeugung von Handelssignalen und werden durch Preisschwankungen unterstützt, um die jeweilige Einstiegszeit zu bestimmen.
/*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)