ProRealCode - Trading & Coding with ProRealTime™
Inertia, eur/usd instead of DAX, for the question on page 2
I use this settings of WF. Sorry it is complicated for me to explain with my bad English. PRT is in French with me and I do not have the right words in English. I attach an image.
80% IN sample and 20% Out of sample x5 “occurences” ( I do not know in english).
If I just have 1 optimized results i take it. If I have several variables that give good results, I run a classic backtest and I keep the best.
For example on this strategy I gave tp of 5 to 30 with step of 1. WF gives me TP 9 and TP 10 on Dax according to the periods. I test tp 9 and tp 10 in a classic backest on 200k and i keep tp 10 finally.
I do not know if it’s the best way… I am not an expert 🙂
Hi Theaccountant, Attached are the result from my side with your strategy…What did I do wrong ? Strange…
It’s for Dax cfd not eurusd 🙂 🙂 🙂
TheAccountant your English is near perfect! I understood exactly what you said, thank you.
I don’t think any of us have (yet) come up the optimum way to use WF? It will be better when we can see a whole table of WF results including Drawdown.
I’ve just been sitting on my deck chair in the sun thinking of a ‘slightly different angle’ on the way I use WF.
Cheers
GraHal
Latest versions, but I am already lost myself! 🙂 Please could we type in the Version Number at the top of code?
If anybody wants to correct, update or even change the format feel free PLEASE!? 🙂
Jua V1.0 (1m DAX) #40559 TAc opti 200K #40761
Jua V2.0 (1m DAX) #40653 Jua V2.1 snipp #40675
Ine V2.2 (1m EURUSD) #40695 Ine opti 200K #40773
@GraHal both my pieces of code was originally optimized for EUR/USD not DAX
(Ahahahah just shows we can all be blinkered! That is why I never got same results as you!!! 🙂 )
Please add Version, Instrument and Timeframe at top of Code.
If Time is in your Code, also add Time Standard in Format ‘UTC + – X’.
If anybody wants to correct, update or change format feel free PLEASE!? 🙂
Jua V1.0 (1m EURUSD) #40559 TAc opti 200K DAX #40761
Jua V2.0 (1m EURUSD) #40653 Jua V2.1 snipp #40675
Ine V2.2 (1m EURUSD) #40695 Ine opti 200K #40773
ok so…
On the DAX cfd M1.
Time range : 9:00 to 17:30 = 1 pts spread / 17:30 to 22:00 = 2 pts spread ( french price. check time and spread for your country)
Optimized with WF :
TP : 10 and SL : 50
RSI > 60
Average 7 and average 150 are the best on 200k.
Backtest 200k units with spread. Not test in real yet.
//Stategy: Scalping Candles
//Market: DAX
//Timeframe: 1min
//Spread: 1
//Author: Juan Jacobs (Jd3gjacobs@gmail.com)
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
noEntryBeforeTime = 090000
timeEnterBefore = time >= noEntryBeforeTime
noEntryAfterTime = 220000
timeEnterAfter = time < noEntryAfterTime
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
If longonmarket and close < positionprice and (barindex-tradeindex) > 650 Then
Sell at market
ElsIf shortonmarket and close > positionprice and (barindex-tradeindex) > 60 then
Exitshort at market
EndIf
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
middle=(open+close)/2
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
shadowbottom=bodybottom-low
longcandle= (ratio>0.6)
Bull = 0
Bear = 0
//Bullish Signals
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if MorningStar then
Bull = 1 //Positive
endif
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if PiercingLine then
Bull = 1 //None
endif
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if AbandonedBabyBottom then
Bull = 1 //None
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if ThreeInsideUp then
Bull = 1 //Positive
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if ThreeOutsideUp then
Bull = 1 //Positive
endif
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if ThreeWhiteSoldiers then
//Bull = 1 //Increase Drawdown
endif
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if ConcealingBabySwallow then
Bull = 1 //None
endif
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if BullishHarami then
//Bull = 1 //Negative Impact
endif
HomingPigeon=(body[1]<0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if HomingPigeon then
Bull = 1 //None
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if BullishEngulfing then
Bull = 1 //Positive
endif
LastEngulfingBottom=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if LastEngulfingBottom then
Bull = 1 //None
endif
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if DragonflyDojiBottom then
Bull = 1 //None
endif
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if GravestoneDojiBottom then
Bull = 1 //None
endif
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if DojiStarBottom then
Bull = 1 //None
endif
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if BullishHaramiCross then
Bull = 1 //None
endif
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if ThreeStarsInTheSouth then
Bull = 1 //None
endif
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if BullishBreakaway then
Bull = 1 //None
endif
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if Hammer then
Bull = 1 //None
endif
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if InvertedHammer then
Bull = 1 //None
endif
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if RisingThreeMethods then
Bull = 1 //None
endif
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if BullishThreeLineStrike then
Bull = 1 //None
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if BullishMatHold then
Bull = 1 //None
endif
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
Bull = 1 //Positive
endif
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
Bull = 1 //None
endif
BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
if BullishCounterAttack then
Bull = 1 //None
endif
BullishKicking=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop=0 AND shadowbottom=0)
if BullishKicking then
Bull = 1 //None
endif
//Bearish Signal
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if EveningStar then
Bear = 1
endif
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if DarkCloudCover then
Bear = 1
endif
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if AbandonedBabyTop then
Bear = 1
endif
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if ThreeInsideDown then
Bear = 1
endif
ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if ThreeOutsideDown then
Bear = 1
endif
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if ThreeBlackCrows then
Bear = 1
endif
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if UpsideGapTwoCrows then
Bear = 1
endif
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if BearishHarami then
Bear = 1
endif
DescendingHawk=(body[1]>0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if DescendingHawk then
Bear = 1
endif
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if BearishEngulfing then
Bear = 1
endif
LastEngulfingTop=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if LastEngulfingTop then
Bear = 1
endif
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if DragonflyDojiTop then
Bear = 1
endif
GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if GravestoneDojiTop then
Bear = 1
endif
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if DojiStarTop then
Bear = 1
endif
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if BearishHaramiCross then
Bear = 1
endif
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if AdvanceBlock then
Bear = 1
endif
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TwoCrows then
Bear = 1
endif
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if BearishBreakaway then
Bear = 1
endif
ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if ShootingStar then
Bear = 1
endif
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if HangingMan then
Bear = 1
endif
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if FallingThreeMethods then
Bear = 1
endif
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if BearishThreeLineStrike then
Bear = 1
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if BearishMatHold then
Bear = 1
endif
BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND open<close[1] AND close<open[1] AND shadowbottom<0.1*abody)
if BearSash then
Bear = 1
endif
BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
if BearSeparatingLine then
Bear = 1
endif
BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
if BearishCounterAttack then
Bear = 1
endif
BearishKicking=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowtop=0 AND shadowbottom=0)
if BearishKicking then
Bear = 1
endif
//Entry/Exit Criteria
possize = 1
NearMA = Average[7,2](close)
If countofposition = 0 and Bull = 1 and NearMA[1] > NearMA[3] and RSI[2](close) > 60 and NearMA > Average[150,2](close) and timeEnterBefore and timeEnterAfter and not daysForbiddenEntry Then
//If shortonmarket Then
//Exitshort at market
//EndIf
Buy possize contract at market
EndIf
If countofposition = 0 and Bear = 1 and NearMA[1] < NearMA[3] and RSI[2](close) < 25 and NearMA < Average[150,2](close)and timeEnterBefore and timeEnterAfter and not daysForbiddenEntry Then
//If longonmarket Then
//Sell at market
//EndIf
//Sellshort possize contract at market
EndIf
Set Target pProfit 10
Set Stop pLoss 50
@theaccountant this is not the right way to use WF, I made videos in French, you’ll find them in the blog section.
@grahal always use the most recent optimized variables or reoptimise on the last IS+OOS periods to get the freshest ones.
Please add Version, Instrument and Timeframe at top of Code.
If Time is in your Code, also add Time Standard in Format UTC + or – (e.g. France / Paris is UTC +2).
If anybody wants to correct, update or change format feel free PLEASE!? 🙂
Latest Versions:
Jua V1.0 (1m EURUSD) #40559 TAc V1.1 opti 200K DAX #40794
Jua V2.0 (1m EURUSD) #40653 Jua V2.1 snipp #40675
Ine V2.2 (1m EURUSD) #40695 Ine opti 200K #40773
Inertia am I confused or missing something?
What are your values for the variables in the error message attached for V2.2 at #40773 please?
Thank You
GraHal
//-------------------------------------------------------------------------
//Strategy: Scalping Candles
//Market: EUR/USD
//Timeframe: 1min
//Spread: 0.8
//Author: Juan Jacobs (Jd3gjacobs@gmail.com)
//Optimized by: Inertia - latest version #post 40773
//200.000bars, 0.8p spread, Tick by Tick => gives 1.98$ PER TRADE.
//-------------------------------------------------------------------------
Defparam preloadbars = 2000
Defparam cumulateorders = False
If longonmarket and close < positionprice and (barindex-tradeindex) > 720 Then //Time Stop set to 12 hours
Sell at market
EndIf
//Candle Paramaters
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
longcandle= (ratio>0.6)
Bull = 0
//Bullish Signals
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if MorningStar then
Bull = 1 //Positive
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if ThreeInsideUp then
Bull = 1 //Positive
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if ThreeOutsideUp then
Bull = 1 //Positive
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if BullishEngulfing then
Bull = 1 //Positive
endif
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
Bull = 1 //Positive
endif
If (high - low) = 0 Then //Prevents potential division by zero
HiLo = 1
Else
HiLo = (high - low)
EndIf
HammerUp = min(open[1],close[1])>high[1]-(high[1]-low[1])/3
HammerUpNeg= max(open,close)<min(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bullish Hammer Negated = Bearish (used for exit signal)
HammerDown = max(open[1],close[1])<low[1]+(high[1]-low[1])/3
HammerDownNeg = min(open,close)>max(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bearish Hammer Negated = Bullish (used for exit signal)
If HammerUp and HammerUpNeg Then
//Bull = 0
ElsIf HammerDown and HammerDownNeg Then
Bull = 1
EndIf
dojibull2 = open[2]<close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
dojibull1 = open[1]<close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
dojibear2 = open[2]>close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
dojibear1 = open[1]>close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
hammerup2 = min(open,close)>high-(high-low)/2 //and max(open,close) < min(open[1],close[1])
hammerdown2 = max(open,close)<low+(high-low)/2 //and max(open,close)<min(open[1],close[1])//and timeok
If (dojibull2 and dojibull1) and hammerdown2 Then
Bull = 1
ElsIf (dojibear2 and dojibear1) and hammerup2 Then
//Bull = 0
EndIf
//Entry/Exit Criteria
possize = 1
ATR = AverageTrueRange[4](close)
LongMA = Average[50,2](close)//[50;200][50]
NearMA = Average[4,2](close)//[2;10][2]
RSIChk = RSI[2](close) >= 80//[2,14][3]
StoChk = Stochastic[14,3](close) >= 75
Trendma = average[1500,2]//[500;3000][500]
If countofposition = 0 and Bull = 1 and close > LongMA and NearMA > LongMA and LongMA[1] > LongMA[20] and NearMA[1] > NearMA[3] and ATR[1] > ATR[2] and RSIChk and StoChk and Trendma > trendma [1]Then
Buy possize contract at market
EndIf
Set Target $profit 5
Set Stop $Loss 40
Sorry Grahal.
Cheers.
Thanks Inertia! Two wins on Live today so far!
I like the ‘not too optimistic’ £5 Target … puts me in a good mood! 🙂
Could just as easy be £25 if I change to Set Target pProfit 5 and increase my Lot size to 5.
Early days yet though!?
Cheers
GraHal
Okay so I did my homework and I watched Nicolas’s videos on WF. 🙂
Here are the results WF (see image) :
out of sample 1 : 78% WFE
out of sample 2 : 328% WFE
out of sample 3 : -54% WFE
out of sample 4 : 107% WFE
out of sample 5 : 50% WFE
The most recent variables are : TP 8 and SL 50 ( last out of sample with 50% WFE)
So Nicolas: is it better to keep the most recent variables? Or with a negative out of sample of 5 it is better to change something? ( and on the negative out of sample variable are not the same : tp11 sl50)
thank you for your help ! 🙂
1 Min Trading Strategy
This topic contains 219 replies,
has 29 voices, and was last updated by Leo
8 years, 2 months ago.
| Forum: | ProOrder: Automated Strategies & Backtesting |
| Language: | English |
| Started: | 07/13/2017 |
| Status: | Active |
| Attachments: | 65 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.