For $4.07 you can make a great block signal—the price includes two $1.41 lamps, two 25¢ resistors, and a 75¢ signal stand. (Get resistors in bulk to lower their price each considerably.) Use the Bachmann #42503 signal bridge block signals (6 per package). Punch out the fake red and green plastic lamps. Insert a green-stained Circuitron 1.4mm #7418 bulb (see PARTS LIST for stain and bulb specifications) on top and a red-stained #7418 bulb on the bottom. Then apply extra thick, slow CA or Silicone II liberally to the wire side of the opening, gluing them in place. Once they dry, solder 220-ohm, ¼-watt resistors to one lead of the red lamps' wires and solder 440-ohm, ½-watt resistors to one lead of the green lamps' wires.
Dip bulbs into stain in jar of stain, touch the bulbs' ends to the inside of the jar rim to get the excess blob of stain off, hang them from wire coat hangers in a well-ventilated room (like a bathroom with an exhaust fan). No other company's subminiature lamps, pre-colored or not, were as reliable as Circuitron's—I tried several others and I can't recommend any but these, so even though the #7418s are clear and need staining, this process takes only a few minutes so don't let it be a factor in deciding what bulbs to get.
To wire them in (unless you want to use them differently from the way I use them—in which case plan your own wiring scheme), I recommend lighting the green lamps by hard-wiring them to your 12-volt layout light power bus (if you wire them to a 6-volt bus, change the resistor to 220 ohms [1/4 watts, although ½ watts is fine too]) and just leaving them lit during all operations as a block boundary marker that warns of the approach of a block. Next, wire in the red lamps to the track feeder wires of the next block—the one on the far side of the block signal at the time your train spots the block signal (while it's still on the near side of the block signal). Train engineers will see this red light on when they approach the block and they'll stop their trains and wait for the signal to go off, which means the engineer ahead has left the block. See A in fig. 4.
The above assumes you're running trains using the "block power off when the block's not in use" rule. I found that another convention can also be used effectively for layout operations (my wife and I have two layouts—we use one convention on one layout and the other convention on the other layout): Have all block signals contain amber and green lamps, with the amber lamp using the lighting power bus which is of course lit at all times, and the green lamp, which is wired to the next block's track power the same as the red lamp was above, lit only when the next block's track power is turned on. The reason this works is because the default status of all blocks on this layout is ON, not OFF like on most layouts. The only time a block is unpowered is when an engineer has a stopped train in that block. This means that most of the time most signals show green on top and amber on the bottom, but whenever there's a stopped train in the block ahead, the following train's engineer will see an amber "approach with caution" signal only, with no green showing. See B in fig. 4. This works even better because of a special type of throttle arrangement which I have also written about.
Of course, you can use the old standard of having your block signals signal the status of the next couple of blocks, wiring both lamps to the next two blocks' track power, but I don't need that on my layout and I suspect that many others don't either. See C in fig. 4.