The run() function runs every bar, not every tick, so it can not be used for determining when the market touches a price. For your method you need indeed an entry order, but an entry limit, not an entry stop. An entry limit enters short when the price goes up, an entry stop enters when it goes down.