[From a Metastock forum]
LIMITATIONS …. With MetaStock, there seems to be a need for two different formulas to handle the issue: – one for the CBL from a LOW (CBLlo), – the other for the CBL from a HIGH (CBLhi). The formulas given below were generated using v.6.52. Because of the use of PREV they won’t work in some earlier MetaStock versions it seems, though a bit of thought should overcome this limitation – anyone able to comment? As written they are based upon relative prices over a DEFAULT cover of 13 days (but adjustable from 3 to 55 days) – this is one of the potential weaknesses which commands individual interpretation for a particular equity or contract, which may cycle more or less frequently and require different timeframes. Other indicators and assessments are, of course, needed to gauge the probability of a CBL-indicated counter-trend holding. Also, for particularly choppy or indecisive circumstances there may be a need to extend the Ref(H or L, -5) to a greater number of comparison days by appropriate copying and adjustments to the basically simple pattern in these formulas – but if it came to this perhaps the trade should be left alone anyway! Owing to price vagaries it is not unusual for a CBLhi to be less than a CBLlo calculation, or the converse, especially with low-gradient trends or sideways price movements.
NOTE: With each formula below, copy exactly from “HighDays” or “LowDays” down to “PREV )))))” into the Indicator Builder.
Formula: CBLhi:
HighDays := Input(“Enter # days to cover last HIGH for CBL calc’n:”, 3, 55, 13);
If(HIGH < HHV(HIGH, HighDays), {then …} PREV, {previous CBLhi, else…} If(Ref(L,-2) < Ref(L,-1) AND Ref(L,-2) < L AND Ref(L,-1) < L, {then …} Ref(L,-2), {2nd day back low, else…} If((Ref(L,-3)< Ref(L,-2) AND Ref(L,-3) < Ref(L,-1) AND Ref(L,-3) < L) AND (Ref(L,-2)< L OR Ref(L,-1) < L), {then … } Ref(L,-3), {3rd day back low, else…} If((Ref(L,-4)< Ref(L,-3) AND Ref(L,-4) < Ref(L,-2) AND Ref(L,-4) < Ref(L,-1) AND Ref(L,-4) < L) AND (Ref(L,-3)< L OR Ref(L,-2) < L OR Ref(L,-1) < L), {then… } Ref(L,-4), {4th day back low, else…} If((Ref(L,-5)< Ref(L,-4) AND Ref(L,-5) < Ref(L,-3) AND Ref(L,-5) < Ref(L,-2) AND Ref(L,-5) < Ref(L,-1) AND Ref(L,-5) < L) AND (Ref(L,-4)< L OR Ref(L,-3) < L OR Ref(L,-2) < L OR Ref(L,-1) < L), {then …} Ref(L,-5), {5th day back low, else…} PREV )))))
and for the CBL from a LOW
CBLlo:
LowDays := Input(“Enter # days to cover last LOW for CBL calc’n:”, 3, 55, 13);
If(LOW > LLV(LOW, LowDays), {then …} PREV, {previous CBLlo, else…} If(Ref(H,-2) > Ref(H,-1) AND Ref(H,-2) > H AND Ref(H,-1) > H, {then …} Ref(H,-2), {2nd day back high,else…} If((Ref(H,-3)> Ref(H,-2) AND Ref(H,-3) > Ref(H,-1) AND Ref(H,-3) > H) AND (Ref(H,-2)> H OR Ref(H,-1) > H), {then … } Ref(H,-3), {3rd day back high,else…} If((Ref(H,-4)> Ref(H,-3) AND Ref(H,-4) > Ref(H,-2) AND Ref(H,-4) > Ref(H,-1) AND Ref(H,-4) > H) AND (Ref(H,-3)> H OR Ref(H,-2) > H OR Ref(H,-1) > H), {then… } Ref(H,-4), {4th day back high,else…} If((Ref(H,-5)> Ref(H,-4) AND Ref(H,-5) > Ref(H,-3) AND Ref(H,-5) > Ref(H,-2) AND Ref(H,-5) > Ref(H,-1) AND Ref(H,-5) > H) AND (Ref(H,-4)> H OR Ref(H,-3) > H OR Ref(H,-2) > H OR Ref(H,-1) > H), {then …} Ref(H,-5), {5th day back high,else…} PREV )))))
Excellent description of both the CBL for entry and exit on LONG side – you have to scroll down a bit.
http://corporatedoctor.com.au/index.html?content=/pages/support/guppy/guppy_trades.html