Bug: EnumToString(SYMBOL_SWAP_MODE_CURRENCY_MARGIN)

 

I found this bug when using EnumToString() to display the swap calculation mode of a symbol.

#define PRINT(A) Print(#A + " = \"" + (A) + "\"")
void OnStart()
{
    Print("Build: ",TerminalInfoInteger(TERMINAL_BUILD));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_DISABLED));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_POINTS));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_CURRENCY_SYMBOL));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_INTEREST_CURRENT));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_INTEREST_OPEN));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_REOPEN_CURRENT));
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_REOPEN_BID));

    // Error: the returned text description does not match the enumeration value!
        PRINT(EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_CURRENCY_MARGIN));
}

// Output:

/*
Build: 3555
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_DISABLED) = "SYMBOL_SWAP_MODE_DISABLED"
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_POINTS) = "SYMBOL_SWAP_MODE_POINTS"
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_CURRENCY_SYMBOL) = "SYMBOL_SWAP_MODE_CURRENCY_SYMBOL"
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT) = "SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT"
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_INTEREST_CURRENT) = "SYMBOL_SWAP_MODE_INTEREST_CURRENT"
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_INTEREST_OPEN) = "SYMBOL_SWAP_MODE_INTEREST_OPEN"
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_REOPEN_CURRENT) = "SYMBOL_SWAP_MODE_REOPEN_CURRENT"
EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_REOPEN_BID) = "SYMBOL_SWAP_MODE_REOPEN_BID"

EnumToString((ENUM_SYMBOL_SWAP_MODE)SYMBOL_SWAP_MODE_CURRENCY_MARGIN) = "SYMBOL_SWAP_MODE_BY_INTEREST"
*/
 
 
fxsaber #:
Reported.
Thanks
 

Thank you for detailed report

SYMBOL_SWAP_MODE_BY_INTEREST is deprecated name for value 3 (new name is SYMBOL_SWAP_MODE_CURRENCY_MARGIN)

Fixed. EnumToString will not return deprecated names.

Reason: