I just wrote this strategy
It works very well on dax 1 h
It is based on the IDNR pattern with 2 periods instead of 4
As filter It uses the following: the squeze of the bollinger band (band width < lowest[period]) , adx > min and atr[1] > atr[period]
As trailing stop I used a code that I found in this library
It does not seem over fitted because changing parameters the result remains good and also It seems to work quite well on FTSE MIB 1 h too
However It seem to me that It makes too few trades on the historic that I have available to be sure of its reliability
NR10 = high < high[1] and low > low[1]and range < LOWEST[2](range)[1]
bbwdt =BollingerBandWidth[20](close) < lowest[17](BollingerBandWidth[20](close)[1])
// long entry
l1 = nr10
l1 = l1 and bbwdt
l1 = l1 and hour < 20
l1 = l1 and adx[10] > 17
l1 = l1 and AverageTrueRange[1](close) > AverageTrueRange[9](close)
IF not onmarket AND l1 THEN
BUY 1 CONTRACTS AT high+1.5 stop
ENDIF
// short entry
s1 = nr10
s1 = s1 and bbwdt
s1 = s1 and hour < 20
s1 = s1 and adx[10] > 17
s1 = s1 and AverageTrueRange[1](close) > AverageTrueRange[9](close)
IF not onmarket AND s1 then
SELLSHORT 1 CONTRACTS AT low -1.5 stop
ENDIF
// TRAILING STOP LOGIK
TGL =AverageTrueRange[14](close)*2.5
TGS=AverageTrueRange[14](close)*1.7
if not onmarket then
MAXPRICE = 0
MINPRICE = close
PREZZOUSCITA = 0
ENDIF
if longonmarket then
MAXPRICE = MAX(MAXPRICE,close)
if MAXPRICE-tradeprice(1)>=TGL*pointsize then
PREZZOUSCITA = MAXPRICE-TGL*pointsize
ENDIF
ENDIF
if shortonmarket then
MINPRICE = MIN(MINPRICE,close)
if tradeprice(1)-MINPRICE>=TGS*pointsize then
PREZZOUSCITA = MINPRICE+TGS*pointsize
ENDIF
ENDIF
if onmarket and PREZZOUSCITA>0 then
EXITSHORT AT PREZZOUSCITA STOP
SELL AT PREZZOUSCITA STOP
ENDIF
//stop and target
SET STOP PLOSS AverageTrueRange[14](close)*2.7
SET TARGET PPROFIT AverageTrueRange[14](close)*7.2