Jump to content
  • 0

Backtesting incorporating ProScreener??


BarryDayTrader

Question

Hi

I'm new to this community, so first let me introduce myself! My name is Barry (I suppose most of you already guessed that by my username!) and I'm just starting out on this exciting journey to find out "how to profit from trading".

I've done quite a bit of research, and tried setting up lots of strategies to backtest (none of them successful, so far!). I would like to proceed with my latest strategy which involves running a ProScreener script at the end of each trading day (I'm currently looking at the UK shares market), to select which shares to run in AutoTrading mode the following day. I can backtest this strategy by running the strategy for a number of days, but what I'm having a problem with is how to 'backtest' the ProScreener script. There doesn't seem to be a way to run the ProScreener script at a certain date/time (in the past)

As a work-around, I've build an indicator which "looks backwards" a certain number of periods, to show me what the indicator would have shown, had I run it at that date/time. I then reference this indicator in a ProScreener script to effectively show the list of shares that the ProScreener script would have given me, had I run it on that date/time.

Anyone still with me?.....Anyway, this seems to work, but, when I check the results of the ProScreener script, they don't match what I am expecting, when I compare manually.

I'm not sure how this forum prefers code to be included, so I am embedding it here. I'm sure someone will let me know the correct way to do this!

Strategy Code:

// looking for crossover in last 'numberPeriods' - offset by 'priorPeriods'

MACDLineVal = MACDline[12,26,9](close)
MACDSignalVal = MACDSignal[12,26,9](close)

longMACDCrossover= (MACDLineVal CROSSES OVER MACDSignalVal) and (MACDLineVal<0)
shortMACDCrossunder= (MACDLineVal CROSSES UNDER MACDSignalVal) and (MACDLineVal>0)

longMACDCrossoverCount=0
i=0
WHILE i < numberPeriods DO
longMACDCrossoverCount=longMACDCrossoverCount+longMACDCrossover[priorPeriods+i]
i=i+1
WEND

shortMACDCrossunderCount=0
i=0
WHILE i < numberPeriods DO
shortMACDCrossunderCount=shortMACDCrossunderCount+shortMACDCrossunder[priorPeriods+i]
i=i+1
WEND

return longMACDCrossoverCount as "LONG Crossovers in Last numberPeriods",shortMACDCrossunderCount as "SHORT Crossunders in Last numberPeriods",10*longMACDCrossoverCount+shortMACDCrossunderCount as "Signal",Date[priorPeriods]-20210200 as "Date"
/////////////////////////////////////

 

ProScreener Code:

ignored, ignored, indicator1, ignored = CALL "FTSEMACDLastXPeriodsOffset"[204, 24]
c1 = (indicator1 > 0)

ignored, ignored, criteria, ignored = CALL "FTSEMACDLastXPeriodsOffset"[204, 24]

SCREENER[c1] (criteria AS "Signal")
////////////////////////////////////

 

Happy to explain in more detail if anyone out there thinks they understand my problem!

 

Thanks for reading........

Link to comment

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...