Несмотря на кажущуюся простоту, находить все эти паттерны не так уж и просто. В качестве начального приближения можно сделать вот, например, так:

бычье поглощение:
Open[-1] > Close[-1] && Open < Close[-1] && Close > Open[-1]

медвежье:
Open[-1] < Close[-1] && Open > Close && Close < Open[-1]

молот:
Math.Max(Open[-1], Close[-1]) > Math.Max(Open, Close)
&& Math.Min(Close, Open) > Low + 0.618*(High - Low)
&& High < Math.Max(Close, Open) + Math.Abs(Close - Open)

повешенный:
Math.Max(Open[-1], Close[-1]) < Math.Max(Open, Close)
&& Math.Min(Close, Open) > Low + 0.618*(High - Low)
&& High < Math.Max(Close, Open) + Math.Abs(Close - Open)

завеса из темных облаков:
Open[-1] < Close[-1] && Open > High[-1] && Close < 0.5*(Close[-1] + Open[-1])

просвет в облаках:
Open[-1] > Close[-1] && Open < Low[-1] && Close > 0.5*(Open[-1] + Close[-1])

Open - открытие свечи, Close - закрытие и т.д. Все это в формуле.
Далее добавить по вкусу учет размера свечей и прочие фильтры.
_________________________
Не пишите мне! Никому ничего делать не буду.