How to determine if a trade was placed manually or by EA?

Hello, I am new to MQL5 and I was trying to determine from an open trade how it was placed.

Below is a screen shot of what I am looking for. I cannot locate in any of the ENUMs for a trade or position.

Any help would be greatly appreciated.

46

find your position among open ones (if it’s currently open, aka not in history) , and select it, then

ENUM_POSITION_REASON REASON = (ENUM_POSITION_REASON)PositionGetInteger(POSITION_REASON);
if(REASON==POSITION_REASON_CLIENT)
{
        // probably (or definitely?) placed manually. (need confirmation)
}
else if(REASON==POSITION_REASON_EXPERT)
{
        // made by an EA
}
else if(REASON==POSITION_REASON_MOBILE)
{
        // bla bla bla
}
else if(REASON==POSITION_REASON_WEB)
{
        // bla bla bla
}

Thanks for your reply…

All of my positions are showing CLIENT, even the Manual orders … I need to know which is MANUAL if that is available.

told you, CLIENTs are manually placed orders.

That’s not exact. A manually placed position (or order) is all what is not POSITION_REASON_EXPERT.

long REASON = PositionGetInteger(POSITION_REASON);
if(REASON!=POSITION_REASON_EXPERT)
  {
    //--- Manually opened position
  }

As a manual position can be open with the desktop Terminal, mobile Terminal or Web application.

I am getting a 0 for both the manual and the EA order. Where are the ENUMs set up so I can see what values are for the POSITION_REASON?

Show your code if you need coding help.

long enumReason = PositionGetInteger(POSITION_REASON);

if (enumReason !=POSITION_REASON_EXPERT)
   {
      Print(my4CastObj.GetSymbol(),":  Trade was made outside of Expert Advisor");
      Alert(my4CastObj.GetSymbol(),":  Trade was made outside of Expert Advisor");
   }

Thanks all for helping with this. I found my issue. I wasn’t placing this in the OnTick() subroutine and I wasn’t selecting the position when running this.

It is now working like a champ!!