Hello again,
ChatGPT helps :-).
If some is interested here the shorter/array "way" to select open position:
//+------------------------------------------------------------------+ //| Benutzereingaben //+------------------------------------------------------------------+ input string Info100 = "+========== Open Order Management ==========+"; // +========== 1 ==========+ input string Info110 = "+---------- Trailing Management"; // - input double TrailingStopDistanceBuy = 18.00; // Trailing Points Buy, when in Profit input double TrailingStopDistanceSell = 18.00; // Trailing Points Sell, when in Profit // Define an array of magic numbers to filter int magicFilter[] = {10101240, 230001060, 240001240, 40001240, 90001030}; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if (CheckOpenPositions() == true) { ProceedOpenPositionTrailing(); } } //+------------------------------------------------------------------+ //| EA Functions //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Position Trailing //+------------------------------------------------------------------+ void ProceedOpenPositionTrailing() { for(int i=PositionsTotal()-1; i>=0; i--) { MqlTradeRequest request; MqlTradeResult result; ZeroMemory(request); ulong Ticket=PositionGetTicket(i); bool resultModifyPosition = false; double PositionProfit = PositionGetDouble(POSITION_PROFIT); double PositionPriceActual = PositionGetDouble(POSITION_PRICE_CURRENT); double PositionPriceOpen = PositionGetDouble(POSITION_PRICE_OPEN); double PositionStopLossActual = PositionGetDouble(POSITION_SL); if (ArrayContains(magicFilter, int(PositionGetInteger(POSITION_MAGIC)))) { return; if (PositionProfit > 0) { if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) { if (((PositionPriceActual-PositionStopLossActual) > TrailingStopDistanceBuy) && ((PositionPriceActual-PositionPriceOpen) > TrailingStopDistanceBuy)) { double PositionStopLossNew = PositionPriceActual-TrailingStopDistanceBuy; request.action=TRADE_ACTION_SLTP; request.position=Ticket; request.symbol=_Symbol; request.sl = PositionStopLossNew; request.tp = PositionGetDouble(POSITION_TP); resultModifyPosition=OrderSend(request,result); if(resultModifyPosition == true) { Print("BUY-Order:", Ticket, " successfully modified. New SL: " , PositionStopLossNew); } if(resultModifyPosition == false) { Print("BUY-Order: ", Ticket, " failed to modify. New SL: " , PositionStopLossNew , "NewError: ", GetLastError()); } } } if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) { if (((PositionStopLossActual-PositionPriceActual) > TrailingStopDistanceSell) && ((PositionPriceOpen-PositionPriceActual) > TrailingStopDistanceSell)) { double PositionStopLossNew = PositionPriceActual+TrailingStopDistanceSell; request.action=TRADE_ACTION_SLTP; request.position=Ticket; request.symbol=_Symbol; request.sl = PositionStopLossNew; request.tp = PositionGetDouble(POSITION_TP); resultModifyPosition=OrderSend(request,result); if(resultModifyPosition == true) { Print("SELL-Order:", Ticket, " successfully modified. New SL: " , PositionStopLossNew); } if(resultModifyPosition == false) { Print("SELL-Order: ", Ticket, " failed to modify. New SL: " , PositionStopLossNew , " Error: ", GetLastError()); } } } } } } } //+------------------------------------------------------------------+ //| Check if Position exists //+------------------------------------------------------------------+ bool CheckOpenPositions() { bool return_OpenPositionStatus = false; int CountPosition=PositionsTotal(); if (CountPosition > 0) { return_OpenPositionStatus = true; } return return_OpenPositionStatus; } //+------------------------------------------------------------------+ //| Function to check if the array contains a specific value //+------------------------------------------------------------------+ bool ArrayContains(int &array[], int value) { for (int i = 0; i < ArraySize(array); i++) { if (array[i] == value) return true; } return false; }
Br, Oliver
Please, don't request help for ChatGPT (or other A.I.) generated code. It generates horrible code, mixing MQL4 and MQL5.
Please learn to code manually. Reference the documentation and the programmer's book.

You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hello Team,
I have around 20 different EAs running.
All working well, but some of them are very goos without any loss after yreas of working.
I have created a "master EA" which trails all my open positions.
But now I want to trail those EAs different, which are very productiv.
I know them by the magic ID which is in use.
Actual I use "If magic ID != 123", but whnat to make it easier/better to control with an external file where the "good magic IDs" are stored.
My actual Code is like this:
This chapter I want to use in an external file and, if possible, as an array check:
Do anyone see a chance to do so and what I have to do?
Thank you all and a good day,
Oliver