#define MIN_ENUM_VALUES 0 #define MAX_ENUM_VALUES 255 //+------------------------------------------------------------------+ //| StringToEnum : Convert a string to an ENUM value, | //| it loops between min(0) and max(255), adjustable if needed. | //| Non existing enum value defined as -1. If -1 is used as an | //| enum value, code need to be adjusted to an other default. | //| Parameters : | //| in - string to convert | //| out - ENUM value | //| @return - int if conversion succeeded, false otherwise | //| | //| Based on: | //| https://www.mql5.com/en/forum/61741/page3#comment_5491344 | //+------------------------------------------------------------------+ template int StringToEnum(string in,ENUM &out) { out=-1; //--- for(int i=MIN_ENUM_VALUES;i<=MAX_ENUM_VALUES;i++) { ENUM enumValue=(ENUM)i; if(in==EnumToString(enumValue)) { out=enumValue; break; } } //--- return(out); } int StringToEnumInt(string indicatorConstantString, bool debug=1){ int r = -1; ENUM_ACCOUNT_INFO_DOUBLE a1; r = StringToEnum(indicatorConstantString,a1); //if(debug) Print("ENUM type: ENUM_ACCOUNT_INFO_DOUBLE"); if(r>=0)return r; ENUM_ACCOUNT_INFO_INTEGER a2; r = StringToEnum(indicatorConstantString,a2); if(r>=0)return r; ENUM_ACCOUNT_INFO_STRING a3; r = StringToEnum(indicatorConstantString,a3); if(r>=0)return r; ENUM_ACCOUNT_MARGIN_MODE a4; r = StringToEnum(indicatorConstantString,a4); if(r>=0)return r; ENUM_ACCOUNT_STOPOUT_MODE a5; r = StringToEnum(indicatorConstantString,a5); if(r>=0)return r; ENUM_ACCOUNT_TRADE_MODE a6; r = StringToEnum(indicatorConstantString,a6); if(r>=0)return r; ENUM_ALIGN_MODE a7; r = StringToEnum(indicatorConstantString,a7); if(r>=0)return r; ENUM_ANCHOR_POINT a8; r = StringToEnum(indicatorConstantString,a8); if(r>=0)return r; ENUM_APPLIED_PRICE a9; r = StringToEnum(indicatorConstantString,a9); if(r>=0)return r; ENUM_APPLIED_PRICE a10; r = StringToEnum(indicatorConstantString,a10); if(r>=0)return r; ENUM_APPLIED_VOLUME a11; r = StringToEnum(indicatorConstantString,a11); if(r>=0)return r; ENUM_ARROW_ANCHOR a12; r = StringToEnum(indicatorConstantString,a12); if(r>=0)return r; ENUM_BASE_CORNER a13; r = StringToEnum(indicatorConstantString,a13); if(r>=0)return r; ENUM_BOOK_TYPE a14; r = StringToEnum(indicatorConstantString,a14); if(r>=0)return r; ENUM_BORDER_TYPE a15; r = StringToEnum(indicatorConstantString,a15); if(r>=0)return r; ENUM_CALENDAR_EVENT_FREQUENCY a16; r = StringToEnum(indicatorConstantString,a16); if(r>=0)return r; ENUM_CALENDAR_EVENT_IMPACT a17; r = StringToEnum(indicatorConstantString,a17); if(r>=0)return r; ENUM_CALENDAR_EVENT_IMPORTANCE a18; r = StringToEnum(indicatorConstantString,a18); if(r>=0)return r; ENUM_CALENDAR_EVENT_MULTIPLIER a19; r = StringToEnum(indicatorConstantString,a19); if(r>=0)return r; ENUM_CALENDAR_EVENT_SECTOR a20; r = StringToEnum(indicatorConstantString,a20); if(r>=0)return r; ENUM_CALENDAR_EVENT_TIMEMODE a21; r = StringToEnum(indicatorConstantString,a21); if(r>=0)return r; ENUM_CALENDAR_EVENT_TYPE a22; r = StringToEnum(indicatorConstantString,a22); if(r>=0)return r; ENUM_CALENDAR_EVENT_UNIT a23; r = StringToEnum(indicatorConstantString,a23); if(r>=0)return r; ENUM_CHART_EVENT a24; r = StringToEnum(indicatorConstantString,a24); if(r>=0)return r; ENUM_CHART_MODE a25; r = StringToEnum(indicatorConstantString,a25); if(r>=0)return r; ENUM_CHART_POSITION a26; r = StringToEnum(indicatorConstantString,a26); if(r>=0)return r; ENUM_CHART_PROPERTY_DOUBLE a27; r = StringToEnum(indicatorConstantString,a27); if(r>=0)return r; ENUM_CHART_PROPERTY_INTEGER a28; r = StringToEnum(indicatorConstantString,a28); if(r>=0)return r; ENUM_CHART_PROPERTY_STRING a29; r = StringToEnum(indicatorConstantString,a29); if(r>=0)return r; ENUM_CHART_VOLUME_MODE a30; r = StringToEnum(indicatorConstantString,a30); if(r>=0)return r; ENUM_CL_DEVICE_TYPE a31; r = StringToEnum(indicatorConstantString,a31); if(r>=0)return r; ENUM_COLOR_FORMAT a32; r = StringToEnum(indicatorConstantString,a32); if(r>=0)return r; ENUM_CRYPT_METHOD a33; r = StringToEnum(indicatorConstantString,a33); if(r>=0)return r; ENUM_CUSTOMIND_PROPERTY_DOUBLE a34; r = StringToEnum(indicatorConstantString,a34); if(r>=0)return r; ENUM_CHART_PROPERTY_INTEGER a35; r = StringToEnum(indicatorConstantString,a35); if(r>=0)return r; ENUM_CUSTOMIND_PROPERTY_STRING a36; r = StringToEnum(indicatorConstantString,a36); if(r>=0)return r; ENUM_DATABASE_EXPORT_FLAGS a37; r = StringToEnum(indicatorConstantString,a37); if(r>=0)return r; ENUM_DATABASE_FIELD_TYPE a38; r = StringToEnum(indicatorConstantString,a38); if(r>=0)return r; ENUM_DATABASE_OPEN_FLAGS a39; r = StringToEnum(indicatorConstantString,a39); if(r>=0)return r; ENUM_DATABASE_PRINT_FLAGS a40; r = StringToEnum(indicatorConstantString,a40); if(r>=0)return r; ENUM_DATATYPE a41; r = StringToEnum(indicatorConstantString,a41); if(r>=0)return r; ENUM_DAY_OF_WEEK a42; r = StringToEnum(indicatorConstantString,a42); if(r>=0)return r; ENUM_DEAL_ENTRY a43; r = StringToEnum(indicatorConstantString,a43); if(r>=0)return r; ENUM_DEAL_PROPERTY_DOUBLE a44; r = StringToEnum(indicatorConstantString,a44); if(r>=0)return r; ENUM_DEAL_PROPERTY_INTEGER a45; r = StringToEnum(indicatorConstantString,a45); if(r>=0)return r; ENUM_DEAL_PROPERTY_STRING a46; r = StringToEnum(indicatorConstantString,a46); if(r>=0)return r; ENUM_DEAL_REASON a47; r = StringToEnum(indicatorConstantString,a47); if(r>=0)return r; ENUM_DEAL_TYPE a48; r = StringToEnum(indicatorConstantString,a48); if(r>=0)return r; ENUM_DRAW_TYPE a49; r = StringToEnum(indicatorConstantString,a49); if(r>=0)return r; ENUM_DX_BUFFER_TYPE a50; r = StringToEnum(indicatorConstantString,a50); if(r>=0)return r; ENUM_DX_FORMAT a51; r = StringToEnum(indicatorConstantString,a51); if(r>=0)return r; ENUM_DX_HANDLE_TYPE a52; r = StringToEnum(indicatorConstantString,a52); if(r>=0)return r; ENUM_DX_PRIMITIVE_TOPOLOGY a53; r = StringToEnum(indicatorConstantString,a53); if(r>=0)return r; ENUM_DX_SHADER_TYPE a54; r = StringToEnum(indicatorConstantString,a54); if(r>=0)return r; ENUM_ELLIOT_WAVE_DEGREE a55; r = StringToEnum(indicatorConstantString,a55); if(r>=0)return r; ENUM_FILESELECT_FLAGS a56; r = StringToEnum(indicatorConstantString,a56); if(r>=0)return r; ENUM_FILE_POSITION a57; r = StringToEnum(indicatorConstantString,a57); if(r>=0)return r; ENUM_FILE_PROPERTY_INTEGER a58; r = StringToEnum(indicatorConstantString,a58); if(r>=0)return r; ENUM_GANN_DIRECTION a59; r = StringToEnum(indicatorConstantString,a59); if(r>=0)return r; ENUM_INDEXBUFFER_TYPE a60; r = StringToEnum(indicatorConstantString,a60); if(r>=0)return r; ENUM_INDICATOR a61; r = StringToEnum(indicatorConstantString,a61); if(r>=0)return r; ENUM_INIT_RETCODE a62; r = StringToEnum(indicatorConstantString,a62); if(r>=0)return r; ENUM_LICENSE_TYPE a63; r = StringToEnum(indicatorConstantString,a63); if(r>=0)return r; ENUM_LINE_STYLE a64; r = StringToEnum(indicatorConstantString,a64); if(r>=0)return r; ENUM_MA_METHOD a65; r = StringToEnum(indicatorConstantString,a65); if(r>=0)return r; ENUM_MQL_INFO_INTEGER a66; r = StringToEnum(indicatorConstantString,a66); if(r>=0)return r; ENUM_MQL_INFO_STRING a67; r = StringToEnum(indicatorConstantString,a67); if(r>=0)return r; ENUM_OBJECT a68; r = StringToEnum(indicatorConstantString,a68); if(r>=0)return r; ENUM_OBJECT_PROPERTY_DOUBLE a69; r = StringToEnum(indicatorConstantString,a69); if(r>=0)return r; ENUM_OBJECT_PROPERTY_INTEGER a70; r = StringToEnum(indicatorConstantString,a70); if(r>=0)return r; ENUM_OBJECT_PROPERTY_STRING a71; r = StringToEnum(indicatorConstantString,a71); if(r>=0)return r; ENUM_OPENCL_HANDLE_TYPE a72; r = StringToEnum(indicatorConstantString,a72); if(r>=0)return r; ENUM_OPENCL_PROPERTY_INTEGER a73; r = StringToEnum(indicatorConstantString,a73); if(r>=0)return r; ENUM_PLOT_PROPERTY_STRING a74; r = StringToEnum(indicatorConstantString,a74); if(r>=0)return r; ENUM_POINTER_TYPE a75; r = StringToEnum(indicatorConstantString,a75); if(r>=0)return r; ENUM_POSITION_PROPERTY_DOUBLE a76; r = StringToEnum(indicatorConstantString,a76); if(r>=0)return r; ENUM_ORDER_PROPERTY_INTEGER a77; r = StringToEnum(indicatorConstantString,a77); if(r>=0)return r; ENUM_PLOT_PROPERTY_STRING a78; r = StringToEnum(indicatorConstantString,a78); if(r>=0)return r; ENUM_PROGRAM_TYPE a79; r = StringToEnum(indicatorConstantString,a79); if(r>=0)return r; ENUM_SERIESMODE a80; r = StringToEnum(indicatorConstantString,a80); if(r>=0)return r; ENUM_SERIES_INFO_INTEGER a81; r = StringToEnum(indicatorConstantString,a81); if(r>=0)return r; ENUM_SIGNAL_BASE_DOUBLE a82; r = StringToEnum(indicatorConstantString,a82); if(r>=0)return r; ENUM_SIGNAL_BASE_INTEGER a83; r = StringToEnum(indicatorConstantString,a83); if(r>=0)return r; ENUM_SIGNAL_BASE_STRING a84; r = StringToEnum(indicatorConstantString,a84); if(r>=0)return r; ENUM_SIGNAL_INFO_DOUBLE a85; r = StringToEnum(indicatorConstantString,a85); if(r>=0)return r; ENUM_SIGNAL_INFO_INTEGER a86; r = StringToEnum(indicatorConstantString,a86); if(r>=0)return r; ENUM_SIGNAL_INFO_STRING a87; r = StringToEnum(indicatorConstantString,a87); if(r>=0)return r; ENUM_STATISTICS a88; r = StringToEnum(indicatorConstantString,a88); if(r>=0)return r; ENUM_STO_PRICE a89; r = StringToEnum(indicatorConstantString,a89); if(r>=0)return r; ENUM_SYMBOL_CALC_MODE a90; r = StringToEnum(indicatorConstantString,a90); if(r>=0)return r; ENUM_SYMBOL_CHART_MODE a91; r = StringToEnum(indicatorConstantString,a91); if(r>=0)return r; ENUM_SYMBOL_INFO_DOUBLE a92; r = StringToEnum(indicatorConstantString,a92); if(r>=0)return r; ENUM_SYMBOL_INFO_INTEGER a93; r = StringToEnum(indicatorConstantString,a93); if(r>=0)return r; ENUM_SYMBOL_INFO_STRING a94; r = StringToEnum(indicatorConstantString,a94); if(r>=0)return r; ENUM_STATISTICS a95; r = StringToEnum(indicatorConstantString,a95); if(r>=0)return r; ENUM_STO_PRICE a96; r = StringToEnum(indicatorConstantString,a96); if(r>=0)return r; ENUM_SYMBOL_CALC_MODE a97; r = StringToEnum(indicatorConstantString,a97); if(r>=0)return r; ENUM_SYMBOL_CHART_MODE a98; r = StringToEnum(indicatorConstantString,a98); if(r>=0)return r; ENUM_SYMBOL_INFO_DOUBLE a99; r = StringToEnum(indicatorConstantString,a99); if(r>=0)return r; ENUM_SYMBOL_INFO_INTEGER a100; r = StringToEnum(indicatorConstantString,a100); if(r>=0)return r; ENUM_SYMBOL_INFO_STRING a101; r = StringToEnum(indicatorConstantString,a101); if(r>=0)return r; ENUM_SYMBOL_OPTION_MODE a102; r = StringToEnum(indicatorConstantString,a102); if(r>=0)return r; ENUM_SYMBOL_OPTION_RIGHT a103; r = StringToEnum(indicatorConstantString,a103); if(r>=0)return r; ENUM_SYMBOL_ORDER_GTC_MODE a104; r = StringToEnum(indicatorConstantString,a104); if(r>=0)return r; ENUM_SYMBOL_SWAP_MODE a105; r = StringToEnum(indicatorConstantString,a105); if(r>=0)return r; ENUM_SYMBOL_TRADE_EXECUTION a106; r = StringToEnum(indicatorConstantString,a106); if(r>=0)return r; ENUM_SYMBOL_TRADE_MODE a107; r = StringToEnum(indicatorConstantString,a107); if(r>=0)return r; ENUM_TERMINAL_INFO_DOUBLE a108; r = StringToEnum(indicatorConstantString,a108); if(r>=0)return r; ENUM_TERMINAL_INFO_INTEGER a109; r = StringToEnum(indicatorConstantString,a109); if(r>=0)return r; ENUM_TERMINAL_INFO_STRING a110; r = StringToEnum(indicatorConstantString,a110); if(r>=0)return r; ENUM_TIMEFRAMES a111; r = StringToEnum(indicatorConstantString,a111); if(r>=0)return r; ENUM_TRADE_REQUEST_ACTIONS a112; r = StringToEnum(indicatorConstantString,a112); if(r>=0)return r; ENUM_TRADE_TRANSACTION_TYPE a113; r = StringToEnum(indicatorConstantString,a113); if(r>=0)return r; return(-1); }