VWMA with kNN Machine Learning: MFI/ADX

Jun 27, 2021

Static chart image
Volume Based
Signals
Machine Learning
Moving Averages

The VWMA with kNN Machine Learning: MFI/ADX indicator utilizes a volume-weighted moving average crossover system combined with a k-Nearest Neighbors classification algorithm to filter trade signals based on trend strength and money flow.

Usage

The Usage section describes how the script can be used to identify trend reversals and filter entries using machine learning. The tool generates signals based on the crossover of a "Fast" and "Slow" Volume-Weighted Moving Average (VWMA).

  • Signal Generation: A bullish signal is triggered when the Fast VWMA crosses above the Slow VWMA, while a bearish signal is triggered when the Fast VWMA crosses below the Slow VWMA.
  • kNN Filtering: If enabled, the kNN filter evaluates the current market state by looking at historical data points where similar ADX (trend strength) and MFI (volume-weighted momentum) values occurred. It then "votes" on whether the current crossover is likely to be successful.
  • Background Visualization: Users can enable a background highlight to visualize the kNN model's current sentiment; green backgrounds indicate a bullish classification, while red indicates a bearish classification.

Details

This script implements a k-Nearest Neighbors (kNN) classification algorithm, which is a non-parametric supervised learning method.

  1. Feature Space: The model uses two features—the Average Directional Index (ADX) and the Money Flow Index (MFI)—to create a two-dimensional coordinate system.
  2. Data Storage: Every time a VWMA crossover occurs, the script stores the current ADX and MFI values along with the subsequent price action (whether the price moved up or down).
  3. Classification: When a new crossover occurs, the algorithm calculates the Euclidean distance between the current ADX/MFI values and all stored historical points. It identifies the "k" closest neighbors.
  4. Voting: The script aggregates the results of these neighbors. If the majority of similar historical instances resulted in positive price movement, the filter allows a long entry.
  5. VWMA: Unlike standard simple moving averages, the VWMA gives more weight to bars with higher volume, providing a price average that is more representative of where the bulk of trading activity occurred.

Settings

VWMA Settings

  • Source: Determines the price data used for the moving average calculations (e.g., Close, Open, OHLC4).
  • Fast Length: The period for the short-term volume-weighted moving average.
  • Slow Length: The period for the long-term volume-weighted moving average.

Filter Settings

  • Apply kNN filter: Toggles the machine learning filter on or off.
  • Filter Length: The lookback period used to calculate the ADX and MFI features.
  • Filter Smoothing: The smoothing factor applied to the ADX calculation.

kNN Settings

  • kNN nearest neighbors (k): The number of historical data points (neighbors) the algorithm considers when making a prediction.
  • kNN minimum difference: The required threshold for the voting majority to trigger a trade signal.
  • Draw background: Enables or disables the background coloring based on the kNN model's prediction.

FAQ

How do the ADX and MFI help the machine learning model? The ADX measures the intensity of a trend regardless of direction, while the MFI measures buying and selling pressure using volume. By mapping these, the kNN algorithm can identify if crossovers occurring in specific "volatility and flow" environments have historically been profitable.

Why does the model need a "kNN minimum difference"? This setting acts as a confidence threshold. Instead of a simple majority (e.g., 51%), a higher minimum difference ensures that a significant majority of historical neighbors agree on the direction before a signal is validated.

How can I access this tool? You can get access on the LuxAlgo Library for charting platforms like TradingView, MetaTrader (MT4/MT5), and NinjaTrader for free.

Free access on the following platforms
tradingviewSymbolTradingView
Open in your browser

This in-app browser is not compatible with Get Access from the library.

Tap the menu (...) at the top of your screen and select "Open in Browser", "Open in Safari", or "Open in Chrome" to continue.

ninjatraderNinjaTrader
Open in your browser

This in-app browser is not compatible with Get Access from the library.

Tap the menu (...) at the top of your screen and select "Open in Browser", "Open in Safari", or "Open in Chrome" to continue.

metatrader4MetaTrader 4/5
Open in your browser

This in-app browser is not compatible with Get Access from the library.

Tap the menu (...) at the top of your screen and select "Open in Browser", "Open in Safari", or "Open in Chrome" to continue.

thinkorswimThinkorswim
Open in your browser

This in-app browser is not compatible with Get Access from the library.

Tap the menu (...) at the top of your screen and select "Open in Browser", "Open in Safari", or "Open in Chrome" to continue.

Trading & investing are risky and many will lose money in connection with trading and investing activities. All content on this site is not intended to, and should not be, construed as financial advice. Decisions to buy, sell, hold or trade in securities, commodities and other investments involve risk and are best made based on the advice of qualified financial professionals. Past performance does not guarantee future results.

Hypothetical or Simulated performance results have certain limitations. Unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under-or-over compensated for the impact, if any, of certain market factors, including, but not limited to, lack of liquidity. Simulated trading programs in general are designed with the benefit of hindsight, and are based on historical information. No representation is being made that any account will or is likely to achieve profit or losses similar to those shown.

Testimonials appearing on this website may not be representative of other clients or customers and is not a guarantee of future performance or success.

As a provider of technical analysis tools and strategies, we do not have access to the personal trading accounts or brokerage statements of our customers. As a result, we have no reason to believe our customers perform better or worse than traders as a whole based on any content, tool, or platform feature we provide.

Charts used on this site are by TradingView in which the majority of our technical indicators are built on. TradingView® is a registered trademark of TradingView, Inc. www.TradingView.com TradingView® has no affiliation with the owner, developer, or provider of the Services described herein.

Market data is provided by CBOE, CME Group, BarChart, Massive, CoinAPI. Select U.S. equities data is provided through Massive. CBOE BZX real-time U.S. equities data is licensed from CBOE and provided through BarChart. Real-time futures data is licensed from CME Group and provided through BarChart. Select cryptocurrency data, including major coins, is provided through CoinAPI. All data is provided “as is” and should be verified independently for trading purposes.

This does not represent our full Disclaimer. Please read our full disclaimer.

© 2026 LuxAlgo Global, LLC.