The R-Breaker strategy is a well-known trading strategy developed by American trader and programming expert Richard Saidenberg. It was made public in the early 1990s. This strategy is primarily used in the futures markets, where it has performed particularly well with S&P 500 index futures, but it can also be applied to other financial markets. R-Breaker combines elements of trend-following and reversal trading, aiming to identify and capitalize on price fluctuations in the market.

Core Concepts of the R-Breaker Strategy

The R-Breaker strategy is based on a set of specific price levels that are calculated daily using the previous trading day’s high, low, and close prices. These levels include:

  • Pivot Point: A central level calculated from the previous day’s prices, used to determine possible support and resistance levels for the current trading day.
  • Resistance Levels: A series of price points set above the pivot point, labeled R1, R2, etc., used to identify potential sell signals.
  • Support Levels: A series of price points set below the pivot point, labeled S1, S2, etc., used to identify potential buy signals.

Trading Rules of the R-Breaker Strategy

The R-Breaker strategy uses these calculated levels to make buy and sell decisions. The specific rules include:

  • Breakout Buy: A buy signal is triggered when the price breaks above the R1 resistance level.
  • Reversal Sell: If the price falls back below the pivot point after breaking above R1, it is considered a sell signal.
  • Breakout Sell: A sell signal is triggered when the price breaks below the S1 support level.
  • Reversal Buy: If the price rises back above the pivot point after breaking below S1, it is considered a buy signal.

In addition, the R-Breaker strategy includes stop-loss and profit target settings to manage risk and secure profits.

Application and Effectiveness

The R-Breaker strategy is popular among traders due to its clear rules and adaptability to various market conditions. However, like all trading strategies, its performance can be affected by factors such as market volatility, trading costs, and slippage. Therefore, although the strategy has historically performed well, traders should still adjust and optimize it based on market analysis and their own risk preferences.

Java Code Example

import java.util.List;

public class RBreakerStrategy {
    public static void main(String[] args) {
        List<Double> prices = 

        double highest = prices.stream().max(Double::compareTo).get();
        double lowest = prices.stream().min(Double::compareTo).get();
        double range = highest - lowest;

        double buyLevel = prices.get(prices.size() - 2) + 0.1 * range;
        double sellLevel = prices.get(prices.size() - 2) - 0.1 * range;


    }
}

Python Code Example

def r_breaker_strategy(prices):
    highest = max(prices)
    lowest = min(prices)
    range = highest - lowest

    buy_level = prices[-2] + 0.1 * range
    sell_level = prices[-2] - 0.1 * range



prices = 
r_breaker_strategy(prices)