Wave Smoother [WS]The Wave Smoother is a unique FIR filter built from the interaction of two trigonometric waves. A cosine carrier wave is modulated by a sine wave at half the carrier's period, creating smooth transitions and controlled undershoot. The Phase parameter (0° to 119°) adjusts the modulating wave's phase, affecting both response time and undershoot characteristics. At 30° phase the impulse response starts at 0.5 and exhibits gentle undershoot, providing balanced smoothing. Higher phase values reduce ramp-up time and increase undershoot - this undershoot in the impulse response creates overshooting behavior in the filter's output, which helps reduce lag and speed up the response. The default 70° phase setting provides maximum speed while maintaining stability, though practical settings can range from 30° to 70°. The filter's impulse response consists entirely of smooth curves, ensuring consistent behavior across all settings. This design offers traders flexible control over the smoothing-speed trade-off while maintaining reliable signal generation.
TRIG
TrigLibrary "Trig"
Trigonometric functions
rt_get_angleAlpha(a, b, c, deg)
Get angle α of a right triangle, given the lengths of its sides
Parameters:
a : length of leg a (float)
b : length of leg b (float)
c : length of hypotenuse (float)
deg : flag to return angle in degrees (bool - default = false)
Returns: angle α in radians (or degrees if deg == true)
rt_get_angleAlphaFromLine(x1, y1, x2, y2, l, deg)
Get angle α of a right triangle formed by the given line
Parameters:
x1 : x coordinate 1 (int - optional, required if argument l is not specified)
y1 : y coordinate 1 (float - optional, required if argument l is not specified)
x2 : x coordinate 2 (int - optional, required if argument l is not specified)
y2 : y coordinate 2 (float - optional, required if argument l is not specified)
l : line object (line - optional, required if x1, y1, x2, and y2 agruments are not specified)
deg : flag to return angle in degrees (bool - default = false)
Returns: angle α in radians (or degrees if deg == true)
rt_get_angleBeta(a, b, c, deg)
Get angle β of a right triangle, given the lengths of its sides
Parameters:
a : length of leg a (float)
b : length of leg b (float)
c : length of hypotenuse (float)
deg : flag to return angle in degrees (bool - default = false)
Returns: angle β in radians (or degrees if deg == true)
rt_get_angleBetaFromLine(x1, y1, x2, y2, l, deg)
Get angle β of a right triangle formed by the given line
Parameters:
x1 : x coordinate 1 (int - optional, required if argument l is not specified)
y1 : y coordinate 1 (float - optional, required if argument l is not specified)
x2 : x coordinate 2 (int - optional, required if argument l is not specified)
y2 : y coordinate 2 (float - optional, required if argument l is not specified)
l : line object (line - optional, required if x1, y1, x2, and y2 agruments are not specified)
deg : flag to return angle in degrees (bool - default = false)
Returns: angle β in radians (or degrees if deg == true)