Home » Strategy Functions » Understanding the strategy.cancel() Function in Pine Script

Understanding the strategy.cancel() Function in Pine Script

Photo of author
Published on

This article dives deep into the strategy.cancel() function, explaining its purpose, syntax, and practical applications with a simple yet informative example.

What is strategy.cancel()?

The strategy.cancel() function is used to cancel or deactivate pending orders in a Pine Script strategy. These orders can be ones that were previously created using the strategy.order, strategy.entry, or strategy.exit functions. The primary use of strategy.cancel() is to offer dynamic control over the order flow based on the evolving conditions of the market or the strategy’s logic.

Syntax and Arguments

The function’s syntax is straightforward:

strategy.cancel(id) → void
  • id (series string): This is a required parameter representing the order identifier. To cancel a specific order, you reference it by its unique identifier, which is assigned when the order is created.


Let’s explore a practical example to understand how strategy.cancel() is applied within a trading strategy.

strategy(title = "Simple Order Cancellation Example")
conditionForTrade = close > open[1]
if conditionForTrade
    strategy.entry("BuyOrder", strategy.long, 1, limit = close - 5) // Enter long with a limit order 5 ticks below the close if conditionForTrade is true
if not conditionForTrade
    strategy.cancel("BuyOrder") // Cancel the entry order named "BuyOrder" if conditionForTrade is false

In this modified example, we’ve introduced a new condition conditionForTrade, which checks if the current close price is greater than the previous bar’s open price. Based on this condition, the script either places a long entry order named “BuyOrder” with a limit 5 ticks below the current close price or cancels this pending order if the condition no longer holds true.

Detailed Walkthrough:

  • strategy.entry("BuyOrder", strategy.long, 1, limit = close - 5): This line places a long entry order with the name “BuyOrder”. The order size is 1 contract, and it’s a limit order placed 5 ticks below the current bar’s close price. This order is placed if conditionForTrade evaluates to true.
  • strategy.cancel("BuyOrder"): If conditionForTrade is false, indicating a change in market conditions or the strategy’s requirements, this line cancels the previously placed “BuyOrder”. This ensures that the strategy remains responsive to the latest market conditions and does not enter trades based on outdated signals.

Key Features and Takeaways

  • Function Usability: The strategy.cancel() function is a powerful tool for managing orders, allowing strategies to adapt to changing market conditions by cancelling unexecuted orders.
  • Syntax: It requires a single argument, the identifier of the order you wish to cancel. This design makes it simple yet flexible for strategy development.
  • Application: This function is particularly useful in strategies that rely on conditional order placements, where the relevance of an order may change with new market data.

By incorporating the strategy.cancel() function into your Pine Script strategies, you can achieve a higher level of order management and strategy adaptability, essential components for successful trading algorithm development.

Leave a Comment