Dear all,
I wonder if you could help me please. Tried unsuccessfully to code this. I’d like a screener to fulfill the following criteria:
LONG
1. Bullish hammer resting on EMA5
2. EMA5 above EMA20
3. ADX above 25
SHORT
1. Bearish hammer resting on EMA5
2. EMA5 below EMA20
3. ADX above 25
Any help is appreciated.
Thanks.
Sorry for being so late.
There you go:
DEFPARAM CumulateOrders = false
LookBack = 10
nLots = 1
TP = 50
SL = 50
//
Ema5 = average[5 ,1](close)
Ema20 = average[20,1](close)
//
MyADX = Adx[14] > 25
//
Body = abs(close - open)
UpperWick = high - max(close,open)
LowerWick = min(close,open) - low
BearHammer = (UpperWick >= (Body * 2)) AND (high = highest[LookBack](high))
BullHammer = (LowerWick >= (Body * 2)) AND (low = lowest[LookBack](low))
//
Lcond = (Ema5 > Ema20) AND MyADX AND BullHammer AND (low <= Ema5) AND (high > Ema5)
Scond = (Ema5 < Ema20) AND MyADX AND BearHammer AND (high >= Ema5) AND (low < Ema5)
// --- LONG
IF Lcond AND Not OnMarket THEN
BUY nLots CONTRACTS AT Market
ENDIF
// --- SHORT
IF Scond AND Not OnMarket THEN
SELLSHORT nLots CONTRACTS AT Market
ENDIF
//
SET TARGET pPROFIT TP
SET STOP pLOSS SL
Dear @robertogozzi,
Thank you for the code. I’ve only just set it up and it gave me the attached error.
My fault, sorry. I coded a strategy instead of a screener.
There you go:
LookBack = 10
//
Ema5 = average[5 ,1](close)
Ema20 = average[20,1](close)
//
MyADX = Adx[14] > 25
//
Body = abs(close - open)
UpperWick = high - max(close,open)
LowerWick = min(close,open) - low
BearHammer = (UpperWick >= (Body * 2)) AND (high = highest[LookBack](high))
BullHammer = (LowerWick >= (Body * 2)) AND (low = lowest[LookBack](low))
//
Lcond = (Ema5 > Ema20) AND MyADX AND BullHammer AND (low <= Ema5) AND (high > Ema5)
Scond = (Ema5 < Ema20) AND MyADX AND BearHammer AND (high >= Ema5) AND (low < Ema5)
//
Cond = 0
IF Lcond Then
Cond = 1
Elsif Scond then
Cond = 2
Endif
Screener[Cond] (Cond AS "1=↑, 2=↓")