Triangular Moving Average Strategy: Three Crypto Tests

Smoother trend lines should mean fewer false signals. That is the promise behind a triangular moving average strategy. We tested it against the simple and exponential averages on three years of crypto data. The smoothing did not pay for itself.

The rules below are hypotheses to test, not a recommendation.

What Makes the Triangular Moving Average Different?

The Triangular Moving Average (TRIMA) is an average of an average. It takes a simple moving average (SMA), then averages that line again. For a 50-candle TRIMA, both steps use about 25 candles.

The result puts most weight on the middle of the window. The oldest and newest candles count least. That makes the line very smooth.

The cost is lag. A TRIMA reacts slowly to sharp turns, because the newest candles carry little weight. Our Triangular Moving Average guide covers the calculation in full. Our post on indicator lag compares how different averages respond to a sudden move.

The Rules We Tested

We tested two common designs. Each one ran three times: with a TRIMA, an SMA and an exponential moving average (EMA). The EMA weights the newest candles most, so it is the opposite of TRIMA. For an average built to cut lag instead, see our Hull moving average strategy.

Rule 1: Price Crosses the Average

Use four-hour candles. Generate a long entry signal when the close crosses above the 50-candle average. Exit when the close drops back below it.

A stop also applies. Exit if price falls two times the 14-period Average True Range (ATR) below entry. ATR measures typical candle movement.

Rule 2: Fast and Slow Lines Cross

Generate a long entry signal when the 20-candle average crosses above the 50-candle average. Exit when it crosses back below. The same ATR stop applies.

What Happened on Three Years of Crypto Data?

We tested on Binance four-hour candles from 10 November 2023 to 10 November 2026. We charged 0.1% per side and filled at the signal candle’s close. Stops filled at the stop price, or at the open if price gapped through it. Indicators had six months of earlier data to warm up.

Rule 1 Results

Market, 4-hourSMA: trades per yearSMA: returnTRIMA: trades per yearTRIMA: returnTRIMA: max drawdownEMA: return
BTC76+5.2%72+13.4%51.8%-10.5%
ETH85-9.6%81-33.8%63.0%-31.8%
SOL79-0.6%74-5.3%65.8%-42.7%

Hypothetical rule tests on past data, with no slippage. They are not trading results, and past behaviour may not repeat.

TRIMA cut trades by only about 5% against the SMA. It beat the SMA on BTC and lost to it on ETH and SOL. Max drawdown, the largest peak-to-trough fall, topped 50% everywhere. No version of this rule is usable as it stands.

Rule 1 With a Trend Filter

We then required the close to sit above the 200-period EMA. This keeps the rule out of downtrends.

Market, 4-hourSMA: returnSMA: max drawdownTRIMA: returnTRIMA: max drawdownEMA: return
BTC+55.5%22.3%+37.6%24.9%+55.2%
ETH+4.6%40.2%+4.2%36.8%+75.9%
SOL+88.8%41.0%+86.1%40.8%-9.0%

Same assumptions as above.

The filter helped every version. With it, TRIMA tracked the SMA closely but never beat it on return. The EMA swung from best to worst depending on the market.

Rule 2 Results

Market, 4-hourSMA: trades per yearSMA: returnTRIMA: trades per yearTRIMA: returnTRIMA: max drawdownEMA: return
BTC24+61.3%33+13.5%52.8%+81.2%
ETH26+63.1%32+13.2%52.7%+73.9%
SOL26+47.9%31-30.7%58.1%+105.8%

Same assumptions as above.

This was the surprise. We expected the smoother TRIMA lines to cross less often. They crossed more often, on all three markets. A likely reason is that the two TRIMA lines sit closer together, so smaller moves flip their order. TRIMA came last on every market.

Did We Just Pick a Bad Length?

A single setting can mislead. So we reran Rule 1, with no trend filter, at 30, 40, 50, 60 and 80 candles.

TRIMA beat the SMA of the same length in 4 of 15 market and length pairs. It never beat the SMA on ETH at any length. That is a consistent pattern, not a bad pick.

Our post on simple vs complex trading strategies makes a related point. Extra steps in a calculation add a setting to tune. They do not always add information.

Where Do TRIMA Backtests Go Wrong?

Assuming smooth means accurate. A smooth line looks reliable on a chart. In a backtest, it often just means late entries and late exits.

Comparing against nothing. A TRIMA result means little alone. Run the same rule with an SMA and an EMA at the same length.

Mixing lengths across averages. A 50-candle TRIMA lags more than a 50-candle EMA. If you compare them, say so. Do not shorten one to make it win.

Check the Trades Too

Ignoring the crossover count. The fast/slow TRIMA rule traded more than the SMA version, not less. Always check trade count before trusting an assumption about smoothness.

Tuning until it wins. TRIMA beat the SMA on SOL at 60 candles. Picking that one result after the fact would be curve fitting.

Building the Triangular Moving Average Strategy in Arrow Algo

The drag-and-drop visual builder expresses Rule 1 as a short chain of visual blocks:

  1. Add the exchange’s candle data and select the four-hour timeframe.
  2. Connect the close to a TRIMA block set to 50 candles.
  3. Add a condition block that checks the close crossed above the TRIMA.
  4. Join it with a flat-position check using an AND condition block.
  5. Connect the result to a buy action block. Under your rules, that block sends a signal.
  6. Build the exits: the close below the TRIMA, or a two-ATR stop below entry.
  7. Join the exits with an OR condition block into a sell action block.

Duplicate the strategy twice. Swap the TRIMA block for an SMA block in one copy and an EMA block in the other. Run all three on the same data and fee settings. Add the 200 EMA as a further entry input for the trend-filtered version.

No deployment is needed for any of this. If you later choose to deploy, your rules signal your own exchange account. The exchange decides whether to execute each order.

What Should You Take Into Your Own Test?

Disclaimer: This content is for educational purposes only and does not constitute financial advice. Trading involves significant risk and you should only trade with capital you can afford to lose. Past performance is not indicative of future results. Always conduct your own research before making any trading decisions.

Ready to build your own automated trading strategies without writing a single line of code? Start for free at Arrow Algo and join thousands of traders who've made the switch to systematic trading.