Troubleshooting Equality Scans

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

scans:troubleshooting:equality_scans [2019/07/01 21:26] (current)
Line 1: Line 1:
 +====== Troubleshooting Equality Scans ======
  
 +Equals signs (%%=%%) are often used in scan clauses when you are looking for a specific symbol, country, exchange, etc. The equals sign can also be used to look for a specific numeric value in a scan clause, but you may not always get the results you expect. Let's look at an example:
 +
 +{{:​scans:​equalityscans01.png}}
 +
 +In the above chart, both the top MACD Line (12,26,9) and the bottom MACD Line (20,36,9) for HBI appear to have the same value: 0.800.
 +
 +===== Scanning for Equality =====
 +
 +Now let's run a scan to look for symbols where those two MACD Line values are equal to each other:
 +
 +<​code>​
 +[type is stock] and [country is US] and [sma(20,​volume) > 40000] ​
 +and [close > 21] 
 +and [MACD Line(12,​26,​9) = MACD Line(20,​36,​9)]
 +</​code>​
 +
 +If we ran this scan on the same date as the chart, the scan would net us only one result:
 +
 +{{:​scans:​equalityscans02.png}}
 +
 +Despite the fact that the HBI chart showed identical values for these two indicators, HBI does not appear in our scan results.
 +
 +The reason for this discrepancy is that the values displayed on the chart are rounded to a certain number of decimal points (typically 2 or 3) for display purposes. The values used by the Scan Engine are not rounded to this degree - the more precise values used by the Scan Engine are often not exactly equal. If the longer-term MACD Line (20,36,9) is 0.8003 and the shorter-term MACD Line (12,26,9) is 0.8004, the Scan Engine does not consider those two values to be equal.
 +
 +How can we fix our scan so we get the results we expect?
 +
 +===== Scanning for "Close Enough"​ =====
 +
 +When comparing one calculated value to another, it is better to replace the one "​equals"​ clause with two "close enough"​ clauses, like this:
 +
 +<​code>​
 +and [MACD Line(12,​26,​9) > [MACD Line(20,​36,​9) - 0.01]] ​
 +and [MACD Line(12,​26,​9) <= [MACD Line(20,​36,​9) + 0.01]]
 +</​code>​
 +
 +This tells the Scan Engine to return results where one MACD Line is within one cent above or below the other - not identical values, but extremely close to each other. When we run the updated scan, we see that HBI now appears in the scan results:
 +
 +{{:​scans:​equalityscans03.png}}
 +
 +For even greater precision, you could scan for values within one tenth of a cent of each other:
 +
 +<​code>​
 +and [MACD Line(12,​26,​9) > [MACD Line(20,​36,​9) - 0.001]] ​
 +and [MACD Line(12,​26,​9) <= [MACD Line(20,​36,​9) + 0.001]]
 +</​code>​
 +
 +As long as the values are within that small range defined by the two clauses, they are "close enough"​ to be considered "​equal"​ by our scan.
 +
 +===== Conclusion =====
 +
 +The equals sign is great for non-numeric comparisons,​ but should be used with caution when comparing numeric values. When you do need to compare numbers, it is better to use "close enough"​ clauses, defining a small range of values so similar that they are essentially equal.