A function to loop through open positions and make pairs of arrays of tickets then close each pair of array if greater than target profit

MQL4 Experts

Job finished

Execution time 6 minutes
Feedback from customer
very good!
Feedback from employee
Great customer! Thank you for the order!

Specification

This is for an MT4 EA.

I need a function to loop through all open positions and store them in arrays based on price levels.
Then from these arrays (i.e. @ price 1760 there are open orders and @ price 1770 there are open orders and so on).
I want to calculate the ongoing profit of pairs of 2 arrays (i.e. sell array i with buy array i+1     AND    buy array i with sell array i-1).
And if profit is greater than target, close orders of these pairs of arrays. Each array may contain more than 1 ticket and can go up to x tickets, and the function will close the arrays only if the pairs contain minimally an array in each level.
The function will loop through all the arrays crawling from initial price up and down.
An optional function can also close the pairs of arrays if the total tickets in these pairs are x (can be input).
Code is already written, but i currently have problem with :

void CalculateAndCloseOrderGroupsForBuyAndSell() {
    // Loop from the initial_index down to 1 (since i-1 sell for i=0 doesn't exist)
    for (int i = initial_index; i > 0; i--) {
        double totalProfit = 0.0;
        
        if (buyTicketCounts[i] > 0 && sellTicketCounts[i-1] > 0){
           // Calculate profit for all buy tickets at index i
           for (int j = 0; j < buyTicketCounts[i]; j++) {
               int ticket = buyTickets[i][j];
               totalProfit += ComputeProfitForOrder(ticket);
           }
   
           // Calculate profit for all sell tickets at index i-1
           for (int j = 0; j < sellTicketCounts[i - 1]; j++) {
               int ticket = sellTickets[i - 1][j];
               totalProfit += ComputeProfitForOrder(ticket);
           }
          }

        // If the combined profit meets or exceeds the target, close the tickets and remove them from arrays
        if (totalProfit >= profit_target) {
            // Close and remove buy tickets at index i
            for (int j = buyTicketCounts[i] - 1; j >= 0; j--) {
                CloseOrder(buyTickets[i][j]);
                // Shift tickets to remove the closed ticket from the array
                for (int k = j; k < buyTicketCounts[i] - 1; k++) {
                    buyTickets[i][k] = buyTickets[i][k + 1];
                }
                buyTicketCounts[i]--;
            }

            // Close and remove sell tickets at index i-1
            for (int j = sellTicketCounts[i - 1] - 1; j >= 0; j--) {
                CloseOrder(sellTickets[i - 1][j]);
                // Shift tickets to remove the closed ticket from the array
                for (int k = j; k < sellTicketCounts[i - 1] - 1; k++) {
                    sellTickets[i - 1][k] = sellTickets[i - 1][k + 1];
                }
                sellTicketCounts[i - 1]--;
            }

            Print("Closed and removed orders for buy zone ", i, " and sell zone ", i - 1, " with total profit: ", totalProfit);
        }
    }
}


it always gives me "out of array" error. I will give the whole set of code. the focus is to fix this part to overcome the "out of array" issue/ error.


Thank you.




Responded

1
Developer 1
Rating
(100)
Projects
125
23%
Arbitration
12
0% / 75%
Overdue
22
18%
Free
2
Developer 2
Rating
(72)
Projects
80
10%
Arbitration
38
8% / 58%
Overdue
6
8%
Free
3
Developer 3
Rating
(53)
Projects
91
52%
Arbitration
2
0% / 50%
Overdue
1
1%
Free
4
Developer 4
Rating
(23)
Projects
45
20%
Arbitration
25
28% / 48%
Overdue
12
27%
Free
5
Developer 5
Rating
(67)
Projects
97
35%
Arbitration
11
27% / 45%
Overdue
13
13%
Free
6
Developer 6
Rating
(611)
Projects
714
33%
Arbitration
46
48% / 41%
Overdue
14
2%
Busy
7
Developer 7
Rating
(6)
Projects
10
10%
Arbitration
9
0% / 89%
Overdue
1
10%
Free
8
Developer 8
Rating
(69)
Projects
146
34%
Arbitration
13
8% / 62%
Overdue
26
18%
Free
Published: 6 codes
9
Developer 9
Rating
(568)
Projects
641
41%
Arbitration
25
48% / 36%
Overdue
46
7%
Working
Similar orders
Swing Breaks & AMD Expert Advisor The Swing Breaks & AMD Expert Advisor is an automated trading system designed around two core market-structure concepts: Swing Breaks and the AMD (Accumulation, Manipulation, Distribution) model . The EA is designed to analyze price action, identify meaningful swing structures, detect potential breaks of those structures, and evaluate the surrounding market behavior for possible AMD
Hi, I am looking for a profitable bot based on grid and recovery strategy for stable currency pairs like eurusd, gbpusd, audusd etc not for volatile pairs like gold (xauusd). My reuirements:- 1) make atleast 20 to 30 dollars of profit 2) life time license 3) adjustable lot size, adjustable spread, adjustable dollar stop loss 4) run on any number of account 5) bug support if not works well in future. 6) source code
I want to build a diversified portfolio of algorithmic trading EAs for MT5 , designed specifically for long-term use with prop firms. The objective is not to find one extremely profitable EA . The objective is to build multiple independent strategies that produce a smoother combined equity curve, low portfolio drawdown, and consistent returns across different market conditions. Primary Portfolio Objectives Design
I'm looking for a swing trading EA that takes 1-3 trades / week, holds these positions from a few days up to about 1.5 weeks. Symbol : any Strategy : any Timeframe : any Platform : MT4 only The catch : you would need to come up with the STRATEGY AND do the CODING The must have's : c onstant monthly returns, low drawdown I will backtest the trial version of your .ex4 file for 20+ years with 99.9% tick data accuracy
Hi, I am looking for a trainer/developer who can teach me MQL5 and python scripting to develop my own profitable EA. If any one interested please let me know and share the course details along with the fees
PROJECT OVERVIEW I need a production-grade, modular Expert Advisor for MetaTrader 5 built to institutional coding standards. This is not a simple indicator-crossover bot. The system must be object-oriented, fully commented, and structured so individual modules can be replaced or disabled without breaking the build. Broker: IC Markets Raw. Primary symbol: XAUUSD. Secondary validation: EURUSD, GBPUSD, USDJPY, AUDUSD
Hi, do you have a proven EA for MT5, suitable for live accounts and prop firms, including the Brazilian market? I’m looking for ready, tested EAs. Can you send a backtest or demo? Please if you do have and can send me nacktest or demo you should Message me
I want a simple EA that will take trades based on candle formation and moving average. In a buy, the market should be above the moving average, and wait for the candle formation which i have shown them in the attachment. In a sell, the market should be below the moving average and wait for the candle formation. It must be easy to put stop loss, take profit. Pls make the robot to trade continuous trades as long as
Access and confidentiality restrictions: You will receive only a separately named copy of the Commander . Existing trading EAs, presets, account credentials, Telegram credentials and proprietary entry/exit code will not be shared. The Commander intelligence must be developed using: Defined signal/input interfaces Anonymized historical logs and replay data Mock EA signals and test harnesses Documented authority and
Liaqat 32+ USD
Title: Simple XAUUSD Trading Robot for MT5 Specification: 1. Platform: MetaTrader 5 2. Symbol: XAUUSD / Gold 3. Timeframe: M5 or M15 4. Strategy Logic: - BUY Entry: When RSI(14) is below 30 and candle closes green - SELL Entry: When RSI(14) is above 70 and candle closes red 5. Money Management: - Lot Size: 0.01 (user can change in settings) - Stop Loss: 500 points - Take Profit: 1000 points 6. Other

Project information

Budget
30 - 45 USD