ProRealCode - Trading & Coding with ProRealTime™
Oui j’en trouve des dizaines sur la liste “Etats Unis” par exemple.
salut et merci pour ce partage c’est exactment ce que je cherchais. J’ai installé le screener et l’indicateur et quand le screener me trouve des actions l’indicateur ne m’affiche aucune divergence. Est ce du au fait que j’utilise un graphe journalier et hebdo ?
vérifier si les paramètres des divergences sont les mêmes à la fois dans le screener et dans l’indicateur affiché.
Bonjour à tous,
La programmation ne faisant pas partie de mes compétences. L’idée est de créer un screener de divergences haussières et baissières, jusque là rien de compliqué il existe déjà, la particularité que je souhaite est d’anticiper la divergence, en fait d’être prévenu via le Screener lorsque la première bougie du point B de la divergence en RSI clôture sous la valeur de 30, ou au dessus de la valeur de 70. Je souhaite avec ce screener en daily pouvoir analyser techniquement les futures divergences, afin d’éliminer un maximum de mauvaises divergences, merci de votre aide et vous souhaite de bonnes fêtes de fin d’année, avec bcp de gains en bourse.
Pascal
@Noelopan1 En utilisant quelle version du code de divergences de ce sujet ? Merci.
Bonjour,
Est il possible de modifier le screener? Je souhaites que la divergence soit validée par le screener après 2 clôtures une fois le 2ème pic identifié .
Je souhaites également qu’il affiche uniquement les actions dont la capitalisation est supérieurs à 500 000 000€
les paramètres doit être paramétrable depuis: // — settings.
En vous souhaitant une bonne soirée
//PRC_AnotherRSIdivergences | indicator
//25.02.2019
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- settings
RSIp=14 //RSI period
obLevel=70 //overbought level
osLevel=30 //oversold level
minimalBars=5 //minimal count of bars where RSI is ob or os
minBarBetween = 4
maxBarBetween = 16
noLowerThan = 60
noHigherThan = 40
// --- end of settings
irsi = rsi[RSIp]
ob = irsi>obLevel
os = irsi<osLevel
if ob then
if not ob[1] then
maxrsi = 0
maxprice = 0
firstobbar = barindex
endif
maxrsi=max(maxrsi,irsi)
maxprice=max(maxprice,high)
if maxrsi<>maxrsi[1] then
maxrsibar=barindex
endif
endif
if os then
if not os[1] then
minrsi = 100
minprice = close*100
firstosbar = barindex
endif
minrsi=min(minrsi,irsi)
minprice=min(minprice,low)
if minrsi<>minrsi[1] then
minrsibar=barindex
endif
endif
divsell=0
if irsi crosses under obLevel then
//verif divergence
barcount=maxrsibar-oldmaxrsibar
div = maxprice>oldmaxprice and maxrsi<oldmaxrsi and (barindex-firstobbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi<noLowerThan)=0
if div then
//drawsegment(oldmaxrsibar,oldmaxrsi,maxrsibar,maxrsi) coloured(200,0,0)
//drawarrowdown(maxrsibar,maxrsi) coloured(200,0,0)
divsell=osLevel
endif
oldmaxrsi = maxrsi
oldmaxprice = maxprice
oldmaxrsibar = maxrsibar
endif
divbuy=0
if irsi crosses over osLevel then
//verif divergence
barcount=minrsibar-oldminrsibar
div = minprice<oldminprice and minrsi>oldminrsi and (barindex-firstosbar)>=minimalBars and barcount>=minbarbetween and barcount<=maxbarbetween and summation[max(1,barcount)](irsi>noHigherThan)=0
if div then
//drawsegment(oldminrsibar,oldminrsi,minrsibar,minrsi) coloured(0,200,0)
//drawarrowup(minrsibar,minrsi) coloured(0,200,0)
divbuy=osLevel
endif
oldminrsi = minrsi
oldminprice = minprice
oldminrsibar = minrsibar
endif
screener[divbuy or divsell](max(divbuy,divsell))
Bonjour,
L’indicateur ne fonctionne pas comme je le souhaite, j’ai tenter de le magouiller à ma sauce mais je n’y arrive pas.
Je l’ai décortiquer et j’aimerais qui fonctionne comme la description ci-dessous.
Ci-dessous, un descriptif de comment je souhaites qu’il détecte les divergences.
Définition divergence haussières :
Le RSI arrive en zone de survente en dessous de osLevel pour lancer le processus de détection de divergence, le prix à prendre en compte est celui en clôture pour l’ensemble des divergences.
Recherche du premier creux :
Pour chaque barre ou les RSI est en survente, il mémorise minrsi et minprice jusqu’à ce que minrsi et minprice soit le plus bas à la recherche du premier creux. L’index le plus bas est mémorisé dans minrsibar.
Recherche du sommet :
Le code vérifie si le RSI a augmenté par rapport à une barre antérieure et si le prix a augmenté, dans cette période le RSI doit rester sous le niveau noLowerThan. Inclure une fonction de mémorisation du minimum RSI enregistré qui deviendra le bruit (pour divergence haussière), cette valeur devra rester au-dessus de noHigherThan.
Recherche du deuxième creux :
Les RSI baisse à nouveau en même temps que le prix, si les valeurs de prix sont plus basses que lors du premier creux alors les valeurs minrsi, minprice et minrsibar deviennent oldminrsi, oldminprice et oldminrsibar.
Tant que les valeurs prix er RSI baissent les mémoriser dans minrsi et, minprice. L’index le plus bas est mémorisé dans minrsibar.
Validation de la divergence haussière :
Si minrsibar est supérieur à oldmin rsi et minprice est inférieur à oldminprice et que le bruit est inférieur à noHigherThan alors une divergence est possible. La divergence sera validée (divbuy) lorsque le RSI sera au-dessus de noHigherThan en clôture.
Définition divergence baissière :
Le RSI arrive en zone de surachat au-dessus de obLevel pour lancer le processus de détection de divergence, le prix à prendre en compte est celui en clôture pour l’ensemble des divergences.
Recherche du premier sommet :
Pour chaque barre ou les RSI est en surachat, il mémorise maxrsi et maxprice jusqu’à ce que maxrsi et maxprice soit le plus haut à la recherche du premier sommet. L’index le plus haut est mémorisé dans maxrsibar.
Recherche du creux :
Le code vérifie si le RSI a baissé par rapport à une barre antérieure et si le prix a baissé, dans cette période le RSI doit rester au-dessus le niveau noHigherThan. Inclure une fonction de mémorisation du maximum RSI enregistré qui deviendra le bruit (pour divergence haussière), cette valeur devra rester en dessous de noHigherThan.
Recherche du deuxième sommet :
Les RSI monte à nouveau en même temps que le prix, si les valeurs de prix sont plus hautes que lors du premier creux alors les valeurs maxrsi, maxprice et maxrsibar deviennent oldmaxrsi, oldmaxprice et oldmaxrsibar.
Tant que les valeurs prix et RSI montent les mémoriser dans maxrsi et, maxprice. L’index le plus haut est mémorisé dans maxrsibar.
Validation de la divergence baissière :
Si maxrsibar est inérieur à oldmaxrsi et maxprice est supérieur à oldmaxprice et que le bruit est supérieur à noLowerThan alors une divergence est possible. La divergence sera validée (divsell) lorsque le RSI sera au-dessous de noLowerThan en clôture.
Affichage des divergences:
Une petite barre rouge ou verte est affichée sous le RSI en cas de divergence validée ainsi que le trait qui relie les 2 sommets comme à l’heure actuelle.
Je vous remercie d’avance pour votre aide
Le code ci-dessous devrait répondre à ta demande. La divergence est dessinée dès qu’elle est détectée, la flèche verte ou rouge, une fois seulement que le RSI casse le “bruit”. La divergence devient caduque au bout de 12 bougies si la cassure du “bruit” n’a pas lieu…
//PRC_AnotherRSIdivergences | indicator
//25.02.2019
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- settings
RSIp=14 //RSI period
obLevel=70 //overbought level
osLevel=30 //oversold level
minimalObBars=5 //minimal count of bars where RSI is ob or os
minBarBetween = 4
maxBarBetween = 16
noLowerThan = 60
noHigherThan = 40
// --- end of settings
once maxrsi1 = 0
once minrsi1 = 100
irsi = rsi[RSIp]
ob = irsi>=obLevel
os = irsi<=osLevel
divbuy = 0
divsell = 0
if irsi < noLowerThan and BearDiv = 0 then
maxrsi1 = 0
endif
if ob then
if ob[1]=0 then
firstobbar = barindex-1
endif
if irsi > maxrsi1 then
maxrsi1=irsi
maxprice1=high
maxclose1=close
maxrsibar1=barindex
minrsi12=maxrsi1
maxrsi2=0
endif
if maxrsi1>0 then
lastobbar = barindex
endif
Endif
if irsi < maxrsi1 and BearDiv = 0 then
minrsi12=min(minrsi12,irsi)
If minrsi12<>minrsi12[1] then
minprice12=low
minclose12=close
minrsibar12=barindex
maxrsi2=minrsi12
endif
endif
if irsi > minrsi12 then
maxrsi2=max(maxrsi2,irsi)
If maxrsi2<>maxrsi2[1] then
maxprice2=high
maxclose2=close
maxrsibar2=barindex
endif
endif
If maxrsi1 > 0 then
barcount=maxrsibar2-maxrsibar1
BearDiv = (maxprice2>maxprice1 or maxclose2>maxclose1) and maxrsi2<maxrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and maxrsi2 > minrsi12
//and (lastobbar-firstobbar)>=minimalObBars
if BearDiv and irsi < maxrsi2 then
drawsegment(maxrsibar1,maxrsi1,maxrsibar2,maxrsi2)style(line,2)coloured("tomato")
drawsegment(minrsibar12,minrsi12,barindex,minrsi12)style(dottedline2,2)coloured("grey")
RSISellLevel=minrsi12
if irsi < minrsi12 then
drawarrowdown(barindex,irsi+5) coloured(200,0,0)
divsell = 20 // Divergence baissière activée
maxrsi1 = 0
BearDiv = 0
endif
if (Barindex - maxrsibar2)>12 then
maxrsi1 = 0
BearDiv = 0
endif
endif
Endif
if irsi > noHigherThan and BullDiv = 0 then
minrsi1 = 100
endif
if os then
if os[1]=0 then
firstosbar = barindex-1
endif
if irsi < minrsi1 then
minrsi1=irsi
minprice1=low
minclose1=close
minrsibar1=barindex
maxrsi12=minrsi1
minrsi2=100
endif
if minrsi1<100 then
lastosbar = barindex
endif
Endif
if irsi > minrsi1 and BullDiv = 0 then
maxrsi12=max(maxrsi12,irsi)
If maxrsi12<>maxrsi12[1] then
maxprice12=high
maxclose12=close
maxrsibar12=barindex
minrsi2=maxrsi12
endif
endif
if irsi < maxrsi12 then
minrsi2=min(minrsi2,irsi)
If minrsi2<>minrsi2[1] then
minprice2=low
minclose2=close
minrsibar2=barindex
endif
endif
If minrsi1 < 100 then
barcount=minrsibar2-minrsibar1
BullDiv = (minprice2<minprice1 or minclose2<minclose1) and minrsi2>minrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and minrsi2 < maxrsi12 //and (lastosbar-firstosbar)>=minimalObBars
if BullDiv and irsi > minrsi2 then
drawsegment(minrsibar1,minrsi1,minrsibar2,minrsi2)style(line,2)coloured("green")
drawsegment(maxrsibar12,maxrsi12,barindex,maxrsi12)style(dottedline2,2)coloured("grey")
RSIBuyLevel=maxrsi12
if irsi > maxrsi12 then
drawarrowup(barindex,irsi-5) coloured(0,200,0)
divbuy = 20 // Divergence baissière activée
minrsi1 = 100
BullDiv = 0
endif
if (Barindex - minrsibar2)>12 then
minrsi1 = 100
BullDiv = 0
endif
endif
Endif
return irsi style(line,3) as "RSI",oblevel coloured(168,168,168) style(dottedline,2) as "overbought level", oslevel coloured(168,168,168) style(dottedline,2) as "oversold level", divsell coloured(200,0,0) style(histogram) as "sell divergence", divbuy coloured(0,200,0) style(histogram) as "buy divergence"
@<span class=”bbp-author-name”>LucasBest</span>
Merci pour le code de l’indicateur, il correspond parfaitement à ce que je voulais.
Pourquoi à tu mis un seuil d’invalidation de la divergence à 12 bougies? Tu as backtesté?
En attendant, un grand merci car avec mes petites modifications, j’étais loin de la réalité du code fonctionnel.
Reste plus qu’à faire le screener
Non, le système d’invalidation n’est pas backtesté. Mais c’est possible de désactiver la fonction en mettant à la place de 12, un nombre de bougies plus important que le maxBarBetween.
Dans ce code, les divergences sont activées soit par les plus haut/plus bas, soit par le prix de clôture : pas besoin de choisir, il prend en compte les deux.
Si on veut plus de divergences qui se suivent, il faut désactiver les lignes 81, 85, 144, 148 (ne pas faire le reset du minrsi1 ou maxrsi1)
J’ai aussi réactivé le test du nombre de bar minimal en survente surachat (que j’avais oublié de réactiver plus haut, ligne 72 et fin de ligne 135)
Cela donne ça :
//PRC_AnotherRSIdivergences | indicator
//25.02.2019
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- settings
RSIp=14 //RSI period
obLevel=65 //overbought level
osLevel=35 //oversold level
minimalObBars=5 //minimal count of bars where RSI is ob or os
minBarBetween = 4
maxBarBetween = 36
noLowerThan = 55
noHigherThan = 45
// --- end of settings
once maxrsi1 = 0
once minrsi1 = 100
irsi = rsi[RSIp]
ob = irsi>=obLevel
os = irsi<=osLevel
divbuy = 0
divsell = 0
if irsi < noLowerThan and BearDiv = 0 then
maxrsi1 = 0
endif
if ob then
if ob[1]=0 then
firstobbar = barindex-1
endif
if irsi > maxrsi1 then
maxrsi1=irsi
maxprice1=high
maxclose1=close
maxrsibar1=barindex
minrsi12=maxrsi1
maxrsi2=0
endif
if maxrsi1>0 then
lastobbar = barindex
endif
Endif
if irsi < maxrsi1 and BearDiv = 0 then
minrsi12=min(minrsi12,irsi)
If minrsi12<>minrsi12[1] then
minprice12=low
minclose12=close
minrsibar12=barindex
maxrsi2=minrsi12
endif
endif
if irsi > minrsi12 then
maxrsi2=max(maxrsi2,irsi)
If maxrsi2<>maxrsi2[1] then
maxprice2=high
maxclose2=close
maxrsibar2=barindex
endif
endif
If maxrsi1 > 0 then
barcount=maxrsibar2-maxrsibar1
BearDiv = (maxprice2>maxprice1 or maxclose2>maxclose1) and maxrsi2<maxrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and maxrsi2 > minrsi12 and (lastobbar-firstobbar)>=minimalObBars
if BearDiv and irsi < maxrsi2 then
drawsegment(maxrsibar1,maxrsi1,maxrsibar2,maxrsi2)style(line,2)coloured("tomato")
drawsegment(minrsibar12,minrsi12,barindex,minrsi12)style(dottedline2,2)coloured("grey")
RSISellLevel=minrsi12
if irsi < minrsi12 then
drawarrowdown(barindex,irsi+5) coloured(200,0,0)
divsell = 20 // Divergence baissière activée
//maxrsi1 = 0
BearDiv = 0
endif
if (Barindex - maxrsibar2)>12 then
//maxrsi1 = 0
BearDiv = 0
endif
endif
Endif
if irsi > noHigherThan and BullDiv = 0 then
minrsi1 = 100
endif
if os then
if os[1]=0 then
firstosbar = barindex-1
endif
if irsi < minrsi1 then
minrsi1=irsi
minprice1=low
minclose1=close
minrsibar1=barindex
maxrsi12=minrsi1
minrsi2=100
endif
if minrsi1<100 then
lastosbar = barindex
endif
Endif
if irsi > minrsi1 and BullDiv = 0 then
maxrsi12=max(maxrsi12,irsi)
If maxrsi12<>maxrsi12[1] then
maxprice12=high
maxclose12=close
maxrsibar12=barindex
minrsi2=maxrsi12
endif
endif
if irsi < maxrsi12 then
minrsi2=min(minrsi2,irsi)
If minrsi2<>minrsi2[1] then
minprice2=low
minclose2=close
minrsibar2=barindex
endif
endif
If minrsi1 < 100 then
barcount=minrsibar2-minrsibar1
BullDiv = (minprice2<minprice1 or minclose2<minclose1) and minrsi2>minrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and minrsi2 < maxrsi12 and (lastosbar-firstosbar)>=minimalObBars
if BullDiv and irsi > minrsi2 then
drawsegment(minrsibar1,minrsi1,minrsibar2,minrsi2)style(line,2)coloured("green")
drawsegment(maxrsibar12,maxrsi12,barindex,maxrsi12)style(dottedline2,2)coloured("grey")
RSIBuyLevel=maxrsi12
if irsi > maxrsi12 then
drawarrowup(barindex,irsi-5) coloured(0,200,0)
divbuy = 20 // Divergence baissière activée
//minrsi1 = 100
BullDiv = 0
endif
if (Barindex - minrsibar2)>12 then
//minrsi1 = 100
BullDiv = 0
endif
endif
Endif
return irsi style(line,3) as "RSI",oblevel coloured(168,168,168) style(dottedline,2) as "overbought level", oslevel coloured(168,168,168) style(dottedline,2) as "oversold level", divsell coloured(200,0,0) style(histogram) as "sell divergence", divbuy coloured(0,200,0) style(histogram) as "buy divergence"
Je préfère avec reset du minrsi1 et activé maxrsi1.
Ca fait une heure que je me bat pour le convertir en srceener. haaaa
j’ai toujours ces erreurs en image pj lorsque j’essai de faire le sreener, je sais pas pourquoi. j’ai ajouter quelques annotations pour que je puisse comprendre le code
//PRC_AnotherRSIdivergences | indicator
//25.02.2019
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
// --- paramètres modifiables
RSIp=14 //RSI periode
obLevel=70 //Niveau surachat
osLevel=30 //Niveau survente
minimalObBars=1 //Barres minimales zone survente ou surachat
minBarBetween = 6 //Nbr mini de barres divergence
maxBarBetween = 26 //Nbr maxi de barres divergence
noLowerThan = 59 //Bruit div baissière
noHigherThan = 41 //Bruit div haussière
// --- end of settings
once maxrsi1 = 0
once minrsi1 = 100
irsi = rsi[RSIp]
ob = irsi>=obLevel
os = irsi<=osLevel
divbuy = 0
divsell = 0
//--Initialisation de recherche de divergence baissière--
if irsi < noLowerThan and BearDiv = 0 then
maxrsi1 = 0
endif
//Identification conditions de divergence baissière
if ob then
if ob[1]=0 then
firstobbar = barindex-1
endif
//recherche 1er sommet
if irsi > maxrsi1 then
maxrsi1=irsi
maxprice1=high
maxclose1=close
maxrsibar1=barindex
minrsi12=maxrsi1
maxrsi2=0
endif
if maxrsi1>0 then
lastobbar = barindex
endif
Endif
//recherche du creux
if irsi < maxrsi1 and BearDiv = 0 then
minrsi12=min(minrsi12,irsi)
If minrsi12<>minrsi12[1] then
minprice12=low
minclose12=close
minrsibar12=barindex
maxrsi2=minrsi12
endif
endif
//recheche 2ème sommet
if irsi > minrsi12 then
maxrsi2=max(maxrsi2,irsi)
If maxrsi2<>maxrsi2[1] then
maxprice2=high
maxclose2=close
maxrsibar2=barindex
endif
endif
//Validation des conditions divergence baissière
If maxrsi1 > 0 then
barcount=maxrsibar2-maxrsibar1
BearDiv = (maxprice2>maxprice1 or maxclose2>maxclose1) and maxrsi2<maxrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and maxrsi2 > minrsi12
//and (lastobbar-firstobbar)>=minimalObBars
if BearDiv and irsi < maxrsi2 then
RSISellLevel=minrsi12
if irsi < minrsi12 then
divsell = 20 // Divergence baissière activée
maxrsi1 = 0 // Reset, les div ne se suivent pas
BearDiv = 0
endif
if (Barindex - maxrsibar2)>12 then //Invalidation divergence si cassure du bruit > 12
maxrsi1 = 0 // Reset, les div ne se suivent pas
BearDiv = 0
endif
endif
Endif
//--Initialisation de recherche de divergence haussière--
if irsi > noHigherThan and BullDiv = 0 then
minrsi1 = 100
endif
//Identification conditions de divergence haussière
if os then
if os[1]=0 then
firstosbar = barindex-1
endif
//recherche 1er creux
if irsi < minrsi1 then
minrsi1=irsi
minprice1=low
minclose1=close
minrsibar1=barindex
maxrsi12=minrsi1
minrsi2=100
endif
if minrsi1<100 then
lastosbar = barindex
endif
Endif
//recherche du sommet
if irsi > minrsi1 and BullDiv = 0 then
maxrsi12=max(maxrsi12,irsi)
If maxrsi12<>maxrsi12[1] then
maxprice12=high
maxclose12=close
maxrsibar12=barindex
minrsi2=maxrsi12
endif
endif
//recherche 2ème creux
if irsi < maxrsi12 then
minrsi2=min(minrsi2,irsi)
If minrsi2<>minrsi2[1] then
minprice2=low
minclose2=close
minrsibar2=barindex
endif
endif
//Validation des conditions divergence haussière
If minrsi1 < 100 then
barcount=minrsibar2-minrsibar1
BullDiv = (minprice2<minprice1 or minclose2<minclose1) and minrsi2>minrsi1 and barcount>=minbarbetween and barcount<=maxbarbetween and minrsi2 < maxrsi12 //and (lastosbar-firstosbar)>=minimalObBars
if BullDiv and irsi > minrsi2 then
RSIBuyLevel=maxrsi12
if irsi > maxrsi12 then
divbuy = 20 // Divergence baissière activée
minrsi1 = 100 //Reset, les div ne se suivent pas
BullDiv = 0
endif
if (Barindex - minrsibar2)>12 then //Invalidation divergence si cassure du bruit > 12
minrsi1 = 100 //Reset, les div ne se suivent pas
BullDiv = 0
endif
endif
Endif
screener[divbuy or divsell](max(divbuy,divsell))
Bonsoir, je relance le sujet, je ne comprends pas ces erreurs et comment les résoudre
Bjr,
Si on prend par exemple la première: minimalobbars,
on voit en ligne 142 que qulqu’un a supprimé son utilisation en toute fin de ligne, du coup elle est définie en ligne 10 mais ne sert pas à première vue (le code est long, j’ai peut-être raté un autre de son emploi…). Il faut supprimer (ou mettre en commentaires avec // devant) la ligne 10 minimalObBars=1 et cette erreur devrait disparaitre.
Les autres semblant de même nature, il faut répéter la démarche pour chaque variable définie une fois mais non utilisée ensuite.
Au pire tu fais un CALL de ton indicateur et tu testes les valeurs de divbuy et divsell (différentes de 0).
Ajout de condition pour indicateur Divergence RSI
This topic contains 47 replies,
has 5 voices, and was last updated by
JC_Bywan
2 years, 10 months ago.
| Forum: | ProBuilder : Indicateurs & Outils Personnalisés |
| Language: | French |
| Started: | 04/16/2019 |
| Status: | Active |
| Attachments: | 9 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.