XBT Futures-Handelsstrategie basierend auf der Stimmung


Erstellungsdatum: 2023-12-22 14:48:44 zuletzt geändert: 2023-12-22 14:48:44
Kopie: 1 Klicks: 649
1
konzentrieren Sie sich auf
1623
Anhänger

XBT Futures-Handelsstrategie basierend auf der Stimmung

Überblick

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.

Strategieprinzip

  1. Berechnen Sie die Höchst- und Mindestpreise, die Durchschnittspreise und die Preisschwankungsbreite für die Perioden a bis j ((1 bis 89 K-Linien)).

  2. 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.

  3. 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.

  4. 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.

  5. Die Größe der absoluten Schwankungen der Emotionen (Delta-Variablen), die Beurteilung der Intensität des Einstiegs und die Einstellung der Stop-Loss-Bedingungen.

Strategische Vorteile

  1. Es ist wichtig, die Stimmung in verschiedenen Zeiträumen zu berücksichtigen, um eine umfassendere Einschätzung der Marktentwicklung zu erhalten.

  2. Die Gewichtsanpassung macht die Strategie stabiler.

  3. Die Einreisezeit wird besser beurteilt, wenn die Emotionswerte und die Emotionsschwankungen berücksichtigt werden.

  4. Risikokontrolle durch Stop-Loss-Mechanismen in Kombination mit Höchst- und Mindestpreisen.

Strategisches Risiko

  1. Die falsche Einstellung der Parameter kann zu zu häufigen Transaktionen oder verpassten Handelsmöglichkeiten führen.

  2. Ein plötzlicher Schwarzer Schwan könnte die Strategie zum Scheitern bringen.

  3. Vertragsänderungen und Änderungen der Handelsregeln können Auswirkungen auf die Strategie haben.

  4. 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.

Optimierungsrichtung

  1. Weiterhin soll der Analysezyklus erweitert und die Grundlage für emotionale Beurteilungen bereichert werden.

  2. Es ist wichtig, mehr technische Kennzahlen hinzuzufügen, um eine Kombination aus emotionalen und technischen Kennzahlen zu erreichen.

  3. Das ist ein Beispiel für die Entwicklung von Emotionsmerkmalen in Kombination mit maschinellen Lernmethoden.

  4. Dynamische Anpassung der Gewichte.

  5. Optimierung der Stop-Loss-Strategie.

Zusammenfassen

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.

Strategiequellcode
/*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)