This ProBuilder code snippet demonstrates how to implement a trading strategy where a second trade is entered only if the current price is higher than the entry price of the first trade. This is useful for strategies that aim to capitalize on upward price momentum following an initial entry.
DEFPARAM CumulateOrders = true
IF not OnMarket and (your conditions) then
Buy 1 contract at market
ENDIF
IF OnMarket and (your conditions) and close > PositionPrice then
Buy 1 contract at market
ENDIF
Explanation of the Code:
- DEFPARAM CumulateOrders = true: This line sets the parameter to allow accumulation of orders. When set to true, it allows multiple positions to be opened in the same direction (buy or buy, sell or sell).
- IF not OnMarket and (your conditions) then: This condition checks if there are no open positions (not OnMarket) and if specific user-defined conditions are met. If both conditions are true, the action defined in the next line is executed.
- Buy 1 contract at market: This command is executed if the conditions in the previous line are met, meaning a new position is opened by buying one contract at the current market price.
- IF OnMarket and (your conditions) and close > PositionPrice then: This condition is checked when there is an open position (OnMarket). It also checks the same user-defined conditions and additionally checks if the current closing price is greater than the price at which the current position was entered (PositionPrice).
- Buy 1 contract at market: If all conditions in the previous line are satisfied, another contract is bought at the market price, effectively doubling down on the position under the assumption that the price will continue to rise.
This code is particularly useful for traders who want to increase their position size in a winning trade, assuming that the price will continue to move favorably.