from enum import IntEnum # Chart Timeframes class ENUM_TIMEFRAMES(IntEnum): PERIOD_CURRENT = 0 PERIOD_M1 = 1 PERIOD_M2 = 2 PERIOD_M3 = 3 PERIOD_M4 = 4 PERIOD_M5 = 5 PERIOD_M6 = 6 PERIOD_M10 = 10 PERIOD_M12 = 12 PERIOD_M15 = 15 PERIOD_M20 = 20 PERIOD_M30 = 30 PERIOD_H1 = 16385 PERIOD_H2 = 16386 PERIOD_H3 = 16387 PERIOD_H4 = 16388 PERIOD_H6 = 16390 PERIOD_H8 = 16392 PERIOD_H12 = 1639 PERIOD_D1 = 16408 PERIOD_W1 = 32769 PERIOD_MN1 = 49153 # Charts Properties class ENUM_CHART_PROPERTY_DOUBLE(IntEnum): CHART_SHIFT_SIZE = 3 CHART_FIXED_POSITION = 41 CHART_FIXED_MAX = 8 CHART_FIXED_MIN = 9 CHART_POINTS_PER_BAR = 11 CHART_PRICE_MIN = 108 CHART_PRICE_MAX = 109 class ENUM_CHART_PROPERTY_INTEGER(IntEnum): CHART_SHOW = 46 CHART_IS_OBJECT = 111 CHART_BRING_TO_TOP = 35 CHART_CONTEXT_MENU = 50 CHART_CROSSHAIR_TOOL = 49 CHART_MOUSE_SCROLL = 42 CHART_EVENT_MOUSE_WHEEL = 48 CHART_EVENT_MOUSE_MOVE = 40 CHART_EVENT_OBJECT_CREATE = 38 CHART_EVENT_OBJECT_DELETE = 39 CHART_MODE = 0 CHART_FOREGROUND = 1 CHART_SHIFT = 2 CHART_AUTOSCROLL = 4 CHART_KEYBOARD_CONTROL = 47 CHART_QUICK_NAVIGATION = 45 CHART_SCALE = 5 CHART_SCALEFIX = 6 CHART_SCALEFIX_11 = 7 CHART_SCALE_PT_PER_BAR = 10 CHART_SHOW_OHLC = 12 CHART_SHOW_BID_LINE = 13 CHART_SHOW_ASK_LINE = 14 CHART_SHOW_LAST_LINE = 15 CHART_SHOW_PERIOD_SEP = 16 CHART_SHOW_GRID = 17 CHART_SHOW_VOLUMES = 18 CHART_SHOW_OBJECT_DESCR = 19 CHART_VISIBLE_BARS = 100 CHART_WINDOWS_TOTAL = 101 CHART_WINDOW_IS_VISIBLE = 102 CHART_WINDOW_HANDLE = 103 CHART_WINDOW_YDISTANCE = 110 CHART_FIRST_VISIBLE_BAR = 104 CHART_WIDTH_IN_BARS = 105 CHART_WIDTH_IN_PIXELS = 106 CHART_HEIGHT_IN_PIXELS = 107 CHART_COLOR_BACKGROUND = 21 CHART_COLOR_FOREGROUND = 22 CHART_COLOR_GRID = 23 CHART_COLOR_VOLUME = 24 CHART_COLOR_CHART_UP = 25 CHART_COLOR_CHART_DOWN = 26 CHART_COLOR_CHART_LINE = 27 CHART_COLOR_CANDLE_BULL = 28 CHART_COLOR_CANDLE_BEAR = 29 CHART_COLOR_BID = 30 CHART_COLOR_ASK = 31 CHART_COLOR_LAST = 32 CHART_COLOR_STOP_LEVEL = 33 CHART_SHOW_TRADE_LEVELS = 34 CHART_DRAG_TRADE_LEVELS = 43 CHART_SHOW_DATE_SCALE = 36 CHART_SHOW_PRICE_SCALE = 37 CHART_SHOW_ONE_CLICK = 44 CHART_IS_MAXIMIZED = 115 CHART_IS_MINIMIZED = 116 class ENUM_CHART_PROPERTY_STRING(IntEnum): CHART_COMMENT = 20 CHART_EXPERT_NAME = 113 CHART_SCRIPT_NAME = 114 class ENUM_CHART_POSITION(IntEnum): CHART_BEGIN = 0 # Chart beginning (the oldest prices) CHART_CURRENT_POS = 1 # Current position CHART_END = 2 # Chart end (the latest prices) # Client Terminal Properties class ENUM_TERMINAL_INFO_INTEGER(IntEnum): TERMINAL_BUILD = 5 TERMINAL_COMMUNITY_ACCOUNT = 23 TERMINAL_COMMUNITY_CONNECTION = 24 TERMINAL_CONNECTED = 6 TERMINAL_DLLS_ALLOWED = 7 TERMINAL_TRADE_ALLOWED = 8 TERMINAL_EMAIL_ENABLED = 9 TERMINAL_FTP_ENABLED = 10 TERMINAL_NOTIFICATIONS_ENABLED = 26 TERMINAL_MAXBARS = 11 TERMINAL_MQID = 22 TERMINAL_CODEPAGE = 12 TERMINAL_CPU_CORES = 21 TERMINAL_DISK_SPACE = 20 TERMINAL_MEMORY_PHYSICAL = 14 TERMINAL_MEMORY_TOTAL = 15 TERMINAL_MEMORY_AVAILABLE = 16 TERMINAL_MEMORY_USED = 17 TERMINAL_X64 = 18 TERMINAL_OPENCL_SUPPORT = 19 TERMINAL_SCREEN_DPI = 27 TERMINAL_PING_LAST = 29 class ENUM_TERMINAL_INFO_DOUBLE(IntEnum): TERMINAL_COMMUNITY_BALANCE = 25 class ENUM_TERMINAL_INFO_STRING(IntEnum): TERMINAL_LANGUAGE = 13 TERMINAL_COMPANY = 0 TERMINAL_NAME = 1 TERMINAL_PATH = 2 TERMINAL_DATA_PATH = 3 TERMINAL_COMMONDATA_PATH = 4 # Symbol Properties class ENUM_SYMBOL_INFO_INTEGER(IntEnum): SYMBOL_CUSTOM = 78 SYMBOL_BACKGROUND_COLOR = 79 SYMBOL_CHART_MODE = 80 SYMBOL_SELECT = 0 SYMBOL_VISIBLE = 76 SYMBOL_SESSION_DEALS = 56 SYMBOL_SESSION_BUY_ORDERS = 60 SYMBOL_SESSION_SELL_ORDERS = 62 SYMBOL_VOLUME = 10 SYMBOL_VOLUMEHIGH = 11 SYMBOL_VOLUMELOW = 12 SYMBOL_TIME = 15 SYMBOL_DIGITS = 17 SYMBOL_SPREAD_FLOAT = 41 SYMBOL_SPREAD = 18 SYMBOL_TICKS_BOOKDEPTH = 25 SYMBOL_TRADE_CALC_MODE = 29 SYMBOL_TRADE_MODE = 30 SYMBOL_START_TIME = 51 SYMBOL_EXPIRATION_TIME = 52 SYMBOL_TRADE_STOPS_LEVEL = 31 SYMBOL_TRADE_FREEZE_LEVEL = 32 SYMBOL_TRADE_EXEMODE = 33 SYMBOL_SWAP_MODE = 37 SYMBOL_SWAP_ROLLOVER3DAYS = 40 SYMBOL_MARGIN_HEDGED_USE_LEG = 82 SYMBOL_EXPIRATION_MODE = 49 SYMBOL_FILLING_MODE = 50 SYMBOL_ORDER_MODE = 71 SYMBOL_ORDER_GTC_MODE = 81 SYMBOL_ORDER_CLOSEBY = 64 SYMBOL_OPTION_MODE = 75 SYMBOL_OPTION_RIGHT = 74 class ENUM_SYMBOL_INFO_DOUBLE(IntEnum): SYMBOL_BID = 1 SYMBOL_BIDHIGH = 2 SYMBOL_BIDLOW = 3 SYMBOL_ASK = 4 SYMBOL_ASKHIGH = 5 SYMBOL_ASKLOW = 6 SYMBOL_LAST = 7 SYMBOL_LASTHIGH = 8 SYMBOL_LASTLOW = 9 SYMBOL_VOLUME_REAL = 10 SYMBOL_VOLUMEHIGH_REAL = 11 SYMBOL_VOLUMELOW_REAL = 12 SYMBOL_OPTION_STRIKE = 72 SYMBOL_POINT = 16 SYMBOL_TRADE_TICK_VALUE = 26 SYMBOL_TRADE_TICK_VALUE_PROFIT = 53 SYMBOL_TRADE_TICK_VALUE_LOSS = 54 SYMBOL_TRADE_TICK_SIZE = 27 SYMBOL_TRADE_CONTRACT_SIZE = 28 SYMBOL_TRADE_ACCRUED_INTEREST = 87 SYMBOL_TRADE_FACE_VALUE = 86 SYMBOL_TRADE_LIQUIDITY_RATE = 85 SYMBOL_VOLUME_MIN = 34 SYMBOL_VOLUME_MAX = 35 SYMBOL_VOLUME_STEP = 36 SYMBOL_VOLUME_LIMIT = 55 SYMBOL_SWAP_LONG = 38 SYMBOL_SWAP_SHORT = 39 SYMBOL_MARGIN_INITIAL = 42 SYMBOL_MARGIN_MAINTENANCE = 43 SYMBOL_MARGIN_LONG = 44 # FIXME: Undocumented! SYMBOL_MARGIN_SHORT = 45 # FIXME: Undocumented! SYMBOL_MARGIN_LIMIT = 46 # FIXME: Undocumented! SYMBOL_MARGIN_STOP = 47 # FIXME: Undocumented! SYMBOL_MARGIN_STOPLIMIT = 48 # FIXME: Undocumented! SYMBOL_SESSION_VOLUME = 57 SYMBOL_SESSION_TURNOVER = 58 SYMBOL_SESSION_INTEREST = 59 SYMBOL_SESSION_BUY_ORDERS_VOLUME = 61 SYMBOL_SESSION_SELL_ORDERS_VOLUME = 63 SYMBOL_SESSION_OPEN = 64 SYMBOL_SESSION_CLOSE = 65 SYMBOL_SESSION_AW = 66 SYMBOL_SESSION_PRICE_SETTLEMENT = 67 SYMBOL_SESSION_PRICE_LIMIT_MIN = 68 SYMBOL_SESSION_PRICE_LIMIT_MAX = 69 SYMBOL_MARGIN_HEDGED = 77 class ENUM_SYMBOL_INFO_STRING(IntEnum): SYMBOL_BASIS = 73 SYMBOL_CURRENCY_BASE = 22 SYMBOL_CURRENCY_PROFIT = 23 SYMBOL_CURRENCY_MARGIN = 24 SYMBOL_BANK = 19 SYMBOL_DESCRIPTION = 20 SYMBOL_FORMULA = 84 SYMBOL_PAGE = 83 SYMBOL_ISIN = 70 SYMBOL_PATH = 21 class ENUM_SYMBOL_CHART_MODE(IntEnum): SYMBOL_CHART_MODE_BID = 0 SYMBOL_CHART_MODE_LAST = 1 class ENUM_SYMBOL_ORDER_GTC_MODE(IntEnum): SYMBOL_ORDERS_GTC = 0 SYMBOL_ORDERS_DAILY = 1 SYMBOL_ORDERS_DAILY_EXCLUDING_STOPS = 2 class ENUM_SYMBOL_CALC_MODE(IntEnum): SYMBOL_CALC_MODE_FOREX = 0 SYMBOL_CALC_MODE_FUTURES = 1 SYMBOL_CALC_MODE_CFD = 2 SYMBOL_CALC_MODE_CFDINDEX = 3 SYMBOL_CALC_MODE_CFDLEVERAGE = 4 SYMBOL_CALC_MODE_EXCH_STOCKS = 32 SYMBOL_CALC_MODE_EXCH_FUTURES = 33 SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS = 34 SYMBOL_CALC_MODE_SERV_COLLATERAL = 64 class ENUM_SYMBOL_TRADE_MODE(IntEnum): SYMBOL_TRADE_MODE_DISABLED = 0 SYMBOL_TRADE_MODE_LONGONLY = 1 SYMBOL_TRADE_MODE_SHORTONLY = 2 SYMBOL_TRADE_MODE_CLOSEONLY = 3 SYMBOL_TRADE_MODE_FULL = 4 class ENUM_SYMBOL_TRADE_EXECUTION(IntEnum): SYMBOL_TRADE_EXECUTION_REQUEST = 0 SYMBOL_TRADE_EXECUTION_INSTANT = 1 SYMBOL_TRADE_EXECUTION_MARKET = 2 SYMBOL_TRADE_EXECUTION_EXCHANGE = 3 class ENUM_SYMBOL_SWAP_MODE(IntEnum): SYMBOL_SWAP_MODE_DISABLED = 0 SYMBOL_SWAP_MODE_POINTS = 1 SYMBOL_SWAP_MODE_CURRENCY_SYMBOL = 2 SYMBOL_SWAP_MODE_CURRENCY_MARGIN = 3 SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT = 4 SYMBOL_SWAP_MODE_INTEREST_CURRENT = 5 SYMBOL_SWAP_MODE_INTEREST_OPEN = 6 SYMBOL_SWAP_MODE_REOPEN_CURRENT = 7 SYMBOL_SWAP_MODE_REOPEN_BID = 8 class ENUM_DAY_OF_WEEK(IntEnum): SUNDAY = 0 MONDAY = 1 TUESDAY = 2 WEDNESDAY = 3 THURSDAY = 4 FRIDAY = 5 SATURDAY = 6 class ENUM_SYMBOL_OPTION_RIGHT(IntEnum): SYMBOL_OPTION_RIGHT_CALL = 0 SYMBOL_OPTION_RIGHT_PUT = 1 class ENUM_SYMBOL_OPTION_MODE(IntEnum): SYMBOL_OPTION_MODE_EUROPEAN = 0 SYMBOL_OPTION_MODE_AMERICAN = 1 # Account Properties class ENUM_ACCOUNT_INFO_INTEGER(IntEnum): ACCOUNT_LOGIN = 0 # Account number ACCOUNT_TRADE_MODE = 32 # Account trade mode ACCOUNT_LEVERAGE = 35 # Account leverage ACCOUNT_LIMIT_ORDERS = 47 # Maximum allowed number of active pending orders ACCOUNT_MARGIN_SO_MODE = 44 # Mode for setting the minimal allowed margin ACCOUNT_TRADE_ALLOWED = 33 # Allowed trade for the current account ACCOUNT_TRADE_EXPERT = 34 # Allowed trade for an Expert Advisor ACCOUNT_MARGIN_MODE = 53 # Margin calculation mode class ENUM_ACCOUNT_INFO_DOUBLE(IntEnum): ACCOUNT_BALANCE = 37 # Account balance in the deposit currency ACCOUNT_CREDIT = 38 # Account credit in the deposit currency ACCOUNT_PROFIT = 39 # Current profit of an account in the deposit currency ACCOUNT_EQUITY = 40 # Account equity in the deposit currency ACCOUNT_MARGIN = 41 # Account margin used in the deposit currency ACCOUNT_MARGIN_FREE = 42 # Free margin of an account in the deposit currency ACCOUNT_MARGIN_LEVEL = 43 # Account margin level in percents ACCOUNT_MARGIN_SO_CALL = 45 # Margin call level ACCOUNT_MARGIN_SO_SO = 46 # Margin stop out level ACCOUNT_MARGIN_INITIAL = 48 # Initial margin ACCOUNT_MARGIN_MAINTENANCE = 49 # Maintenance margin ACCOUNT_ASSETS = 50 # The current assets of an account ACCOUNT_LIABILITIES = 51 # The current liabilities on an account ACCOUNT_COMMISSION_BLOCKED = 52 # The current blocked commission amount on an account class ENUM_ACCOUNT_INFO_STRING(IntEnum): ACCOUNT_NAME = 1 # Client name ACCOUNT_SERVER = 3 # Trade server name ACCOUNT_CURRENCY = 36 # Account currency ACCOUNT_COMPANY = 2 # Name of a company that serves the account class ENUM_ACCOUNT_TRADE_MODE(IntEnum): ACCOUNT_TRADE_MODE_DEMO = 0 # Demo account ACCOUNT_TRADE_MODE_CONTEST = 1 # Contest account ACCOUNT_TRADE_MODE_REAL = 2 # Real account class ENUM_ACCOUNT_STOPOUT_MODE(IntEnum): ACCOUNT_STOPOUT_MODE_PERCENT = 0 # Account stop out mode in percents ACCOUNT_STOPOUT_MODE_MONEY = 1 # Account stop out mode in money class ENUM_ACCOUNT_MARGIN_MODE(IntEnum): ACCOUNT_MARGIN_MODE_RETAIL_NETTING = 0 # Used for the OTC markets to interpret positions in the "netting" mode ACCOUNT_MARGIN_MODE_EXCHANGE = 1 # Used for the exchange markets ACCOUNT_MARGIN_MODE_RETAIL_HEDGING = 2 # Used for the exchange markets where individual positions are possible # Trade Constants: # History Database Properties class ENUM_SERIES_INFO_INTEGER(IntEnum): SERIES_BARS_COUNT = 0 # Bars count for the symbol-period for the current moment SERIES_FIRSTDATE = 1 # The very first date for the symbol-period for the current moment SERIES_LASTBAR_DATE = 5 # Open time of the last bar of the symbol-period SERIES_SERVER_FIRSTDATE = ( 2 # The very first date in the history of the symbol on the server regardless of the timeframe ) SERIES_TERMINAL_FIRSTDATE = ( 3 # The very first date in the history of the symbol in the client terminal, regardless of the timeframe ) SERIES_SYNCHRONIZED = 4 # S ymbol/period data synchronization flag for the current moment # Order Properties class ENUM_ORDER_PROPERTY_INTEGER(IntEnum): ORDER_TICKET = 22 # Order ticket. Unique number assigned to each order ORDER_TIME_SETUP = 1 # Order setup time ORDER_TYPE = 4 # Order type ORDER_STATE = 14 # Order state ORDER_TIME_EXPIRATION = 2 # Order expiration time ORDER_TIME_DONE = 3 # Order execution or cancellation time ORDER_TIME_SETUP_MSC = 18 # The time of placing an order for execution in milliseconds since 01.01.1970 ORDER_TIME_DONE_MSC = 19 # Order execution/cancellation time in milliseconds since 01.01.1970 ORDER_TYPE_FILLING = 5 # Order filling type ORDER_TYPE_TIME = 6 # Order lifetime ORDER_MAGIC = 15 # ID of an Expert Advisor that has placed the order (designed to ensure that each Expert Advisor places its own unique number) ORDER_REASON = 23 # The reason or source for placing an order ORDER_POSITION_ID = 17 # Position identifier that is set to an order as soon as it is executed. # Each executed order results in a deal that opens or modifies an already existing position. The identifier of exactly this position is set to the executed order at this moment. ORDER_POSITION_BY_ID = 21 # Identifier of an opposite position used for closing by order ORDER_TYPE_CLOSE_BY class ENUM_ORDER_PROPERTY_DOUBLE(IntEnum): ORDER_VOLUME_INITIAL = 7 # Order initial volume ORDER_VOLUME_CURRENT = 8 # Order current volume ORDER_PRICE_OPEN = 9 # Price specified in the order ORDER_SL = 12 # Stop Loss value ORDER_TP = 13 # Take Profit value ORDER_PRICE_CURRENT = 10 # The current price of the order symbol ORDER_PRICE_STOPLIMIT = 11 # The Limit order price for the StopLimit order class ENUM_ORDER_PROPERTY_STRING(IntEnum): ORDER_SYMBOL = 0 # Symbol of the order ORDER_COMMENT = 16 # Order comment ORDER_EXTERNAL_ID = 20 # Order identifier in an external trading system (on the Exchange) class ENUM_ORDER_TYPE(IntEnum): ORDER_TYPE_BUY = 0 # Market Buy order ORDER_TYPE_SELL = 1 # Market Sell order ORDER_TYPE_BUY_LIMIT = 2 # Buy Limit pending order ORDER_TYPE_SELL_LIMIT = 3 # Sell Limit pending order ORDER_TYPE_BUY_STOP = 4 # Buy Stop pending order ORDER_TYPE_SELL_STOP = 5 # Sell Stop pending order ORDER_TYPE_BUY_STOP_LIMIT = ( 6 # Upon reaching the order price, a pending Buy Limit order is places at the StopLimit price ) ORDER_TYPE_SELL_STOP_LIMIT = ( 7 # Upon reaching the order price, a pending Sell Limit order is places at the StopLimit price ) ORDER_TYPE_CLOSE_BY = 8 # Order to close a position by an opposite one class ENUM_ORDER_STATE(IntEnum): ORDER_STATE_STARTED = 0 # Order checked, but not yet accepted by broker ORDER_STATE_PLACED = 1 # Order accepted ORDER_STATE_CANCELED = 2 # Order canceled by client ORDER_STATE_PARTIAL = 3 # Order partially executed ORDER_STATE_FILLED = 4 # Order fully executed ORDER_STATE_REJECTED = 5 # Order rejected ORDER_STATE_EXPIRED = 6 # Order expired ORDER_STATE_REQUEST_ADD = 7 # Order is being registered (placing to the trading system) ORDER_STATE_REQUEST_MODIFY = 8 # Order is being modified (changing its parameters) ORDER_STATE_REQUEST_CANCEL = 9 # Order is being deleted (deleting from the trading system) class ENUM_ORDER_TYPE_FILLING(IntEnum): ORDER_FILLING_FOK = 0 ORDER_FILLING_IOC = 1 ORDER_FILLING_RETURN = 2 class ENUM_ORDER_TYPE_TIME(IntEnum): ORDER_TIME_GTC = 0 ORDER_TIME_DAY = 1 ORDER_TIME_SPECIFIED = 2 ORDER_TIME_SPECIFIED_DAY = 3 class ENUM_ORDER_REASON(IntEnum): ORDER_REASON_CLIENT = 0 # The order was placed from a desktop terminal ORDER_REASON_MOBILE = 1 # The order was placed from a mobile application ORDER_REASON_WEB = 2 # The order was placed from a web platform ORDER_REASON_EXPERT = 3 # The order was placed from an MQL5-program, i.e. by an Expert Advisor or a script ORDER_REASON_SL = 4 # The order was placed as a result of Stop Loss activation ORDER_REASON_TP = 5 # The order was placed as a result of Take Profit activation ORDER_REASON_SO = 6 # The order was placed as a result of the Stop Out event # Position Properties class ENUM_POSITION_PROPERTY_INTEGER(IntEnum): POSITION_TICKET = 17 # Position ticket POSITION_TIME = 1 # Position open time POSITION_TIME_MSC = 14 # Position opening time in milliseconds since 01.01.1970 POSITION_TIME_UPDATE = 15 # Position changing time in seconds since 01.01.1970 POSITION_TIME_UPDATE_MSC = 16 # Position changing time in milliseconds since 01.01.1970 POSITION_TYPE = 2 # Position type POSITION_MAGIC = 12 # Position magic number POSITION_IDENTIFIER = 13 # Position identifier is a unique number that is assigned to every newly opened position # and doesn't change during the entire lifetime of the position. Position turnover doesn't change its identifier. POSITION_REASON = 18 # The reason for opening a position class ENUM_POSITION_PROPERTY_DOUBLE(IntEnum): POSITION_VOLUME = 3 # Position volume POSITION_PRICE_OPEN = 4 # Position open price POSITION_SL = 6 # Stop Loss level of opened position POSITION_TP = 7 # Take Profit level of opened position POSITION_PRICE_CURRENT = 5 # Current price of the position symbol POSITION_SWAP = 9 # Cumulative swap POSITION_PROFIT = 10 # Current profit class ENUM_POSITION_PROPERTY_STRING(IntEnum): POSITION_SYMBOL = 0 # Symbol of the position POSITION_COMMENT = 11 # Position comment class ENUM_POSITION_TYPE(IntEnum): POSITION_TYPE_BUY = 0 # Buy POSITION_TYPE_SELL = 1 # Sell class ENUM_POSITION_REASON(IntEnum): POSITION_REASON_CLIENT = ( 0 # The position was opened as a result of activation of an order placed from a desktop terminal ) POSITION_REASON_MOBILE = ( 1 # The position was opened as a result of activation of an order placed from a mobile application ) POSITION_REASON_WEB = ( 2 # The position was opened as a result of activation of an order placed from the web platform ) POSITION_REASON_EXPERT = ( 3 # The position was opened as a result of activation of an order placed from an MQL5 program ) # Deal Properties class ENUM_DEAL_PROPERTY_INTEGER(IntEnum): DEAL_TICKET = 15 # Deal ticket. Unique number assigned to each deal DEAL_ORDER = 1 # Deal order number DEAL_TIME = 2 # Deal time DEAL_TIME_MSC = 13 # The time of a deal execution in milliseconds since 01.01.1970 DEAL_TYPE = 3 # Deal type DEAL_ENTRY = 4 # Deal entry - entry in, entry out, reverse DEAL_MAGIC = 11 # Deal magic number DEAL_REASON = 16 # The reason or source for deal execution DEAL_POSITION_ID = 12 # Identifier of a position class ENUM_DEAL_PROPERTY_DOUBLE(IntEnum): DEAL_VOLUME = 5 # Deal volume DEAL_PRICE = 6 # Deal price DEAL_COMMISSION = 7 # Deal commission DEAL_SWAP = 8 # Cumulative swap on close DEAL_PROFIT = 9 # Deal profit class ENUM_DEAL_PROPERTY_STRING(IntEnum): DEAL_SYMBOL = 0 # Deal symbol DEAL_COMMENT = 10 # Deal comment DEAL_EXTERNAL_ID = 14 # Deal identifier in an external trading system (on the Exchange) class ENUM_DEAL_TYPE(IntEnum): DEAL_TYPE_BUY = 0 # Buy DEAL_TYPE_SELL = 1 # Sell DEAL_TYPE_BALANCE = 2 # Balance DEAL_TYPE_CREDIT = 3 # Credit DEAL_TYPE_CHARGE = 4 # Additional charge DEAL_TYPE_CORRECTION = 5 # Correction DEAL_TYPE_BONUS = 6 # Bonus DEAL_TYPE_COMMISSION = 7 # Additional commission DEAL_TYPE_COMMISSION_DAILY = 8 # Daily commission DEAL_TYPE_COMMISSION_MONTHLY = 9 # Monthly commission DEAL_TYPE_COMMISSION_AGENT_DAILY = 10 # Daily agent commission DEAL_TYPE_COMMISSION_AGENT_MONTHLY = 11 # Monthly agent commission DEAL_TYPE_INTEREST = 12 # Interest rate DEAL_TYPE_BUY_CANCELED = 13 # Canceled buy deal DEAL_TYPE_SELL_CANCELED = 14 # Canceled sell deal DEAL_DIVIDEND = 15 # Dividend operations DEAL_DIVIDEND_FRANKED = 16 # Franked (non-taxable) dividend operations DEAL_TAX = 17 # Tax charges class ENUM_DEAL_ENTRY(IntEnum): DEAL_ENTRY_IN = 0 # Entry in DEAL_ENTRY_OUT = 1 # Entry out DEAL_ENTRY_INOUT = 2 # Reverse DEAL_ENTRY_STATE = 255 # Close a position by an opposite one class ENUM_DEAL_REASON(IntEnum): DEAL_REASON_CLIENT = 0 # The deal was executed as a result of activation of an order placed from a desktop terminal DEAL_REASON_MOBILE = ( 1 # The deal was executed as a result of activation of an order placed from a mobile application ) DEAL_REASON_WEB = 2 # The deal was executed as a result of activation of an order placed from the web platform DEAL_REASON_EXPERT = 3 # The deal was executed as a result of activation of an order placed from an MQL5 program, i.e. an Expert Advisor or a script DEAL_REASON_SL = 4 # The deal was executed as a result of Stop Loss activation DEAL_REASON_TP = 5 # The deal was executed as a result of Take Profit activation DEAL_REASON_SO = 6 # The deal was executed as a result of the Stop Out event DEAL_REASON_ROLLOVER = 7 # The deal was executed due to a rollover DEAL_REASON_VMARGIN = 8 # The deal was executed after charging the variation margin DEAL_REASON_SPLIT = 9 # The deal was executed after the split (price reduction) of an instrument, which had an open position during split announcement # Trade Operation Types class ENUM_TRADE_REQUEST_ACTIONS(IntEnum): TRADE_ACTION_DEAL = 1 # Place a trade order for an immediate execution with the specified parameters (market order) TRADE_ACTION_PENDING = 5 # Place a trade order for the execution under specified conditions (pending order) TRADE_ACTION_SLTP = 6 # Modify Stop Loss and Take Profit values of an opened position TRADE_ACTION_MODIFY = 7 # Modify the parameters of the order placed previously TRADE_ACTION_REMOVE = 8 # Delete the pending order placed previously TRADE_ACTION_CLOSE_BY = 10 # Close a position by an opposite one # Trade Transaction Types class ENUM_TRADE_TRANSACTION_TYPE(IntEnum): TRADE_TRANSACTION_ORDER_ADD = 0 # Adding a new open order TRADE_TRANSACTION_ORDER_UPDATE = ( 1 # Updating an open order. The updates include not only evident changes from the client terminal ) # or a trade server sides but also changes of an order state when setting it # (for example, transition from ORDER_STATE_STARTED to ORDER_STATE_PLACED or from ORDER_STATE_PLACED to ORDER_STATE_PARTIAL, etc.). TRADE_TRANSACTION_ORDER_DELETE = 2 # Removing an order from the list of the open ones. An order can be deleted from the open ones as a result of setting an appropriate request # or execution (filling) and moving to the history. TRADE_TRANSACTION_DEAL_ADD = 6 # Adding a deal to the history. The action is performed as a result of an order execution or performing operations with an account balance. TRADE_TRANSACTION_DEAL_UPDATE = ( 7 # Updating a deal in the history. There may be cases when a previously executed deal is changed on a server. ) # For example, a deal has been changed in an external trading system (exchange) where it was previously transferred by a broker. TRADE_TRANSACTION_DEAL_DELETE = 8 # Deleting a deal from the history. There may be cases when a previously executed deal is deleted from a server. # For example, a deal has been deleted in an external trading system (exchange) where it was previously transferred by a broker. TRADE_TRANSACTION_HISTORY_ADD = 3 # Adding an order to the history as a result of execution or cancellation. TRADE_TRANSACTION_HISTORY_UPDATE = 4 # Changing an order located in the orders history. This type is provided for enhancing functionality on a trade server side. TRADE_TRANSACTION_HISTORY_DELETE = 5 # Deleting an order from the orders history. This type is provided for enhancing functionality on a trade server side. TRADE_TRANSACTION_POSITION = 9 # Changing a position not related to a deal execution. This type of transaction shows that a position has been changed on a trade server side. # Position volume, open price, Stop Loss and Take Profit levels can be changed. Data on changes are submitted in MqlTradeTransaction structure via OnTradeTransaction handler. # Position change (adding, changing or closing), as a result of a deal execution, does not lead to the occurrence of TRADE_TRANSACTION_POSITION transaction. TRADE_TRANSACTION_REQUEST = 10 # Notification of the fact that a trade request has been processed by a server and processing result has been received. # Only type field (trade transaction type) must be analyzed for such transactions in MqlTradeTransaction structure. # The second and third parameters of OnTradeTransaction (request and result) must be analyzed for additional data. # Trade Orders in Depth Of Market class ENUM_BOOK_TYPE(IntEnum): BOOK_TYPE_SELL = 1 # Sell order (Offer) BOOK_TYPE_BUY = 2 # Buy order (Bid) BOOK_TYPE_SELL_MARKET = 3 # Sell order by Market BOOK_TYPE_BUY_MARKET = 4 # Buy order by Market # Object Types class ENUM_OBJECT(IntEnum): OBJ_VLINE = 0 # Vertical Line OBJ_HLINE = 1 # Horizontal Line OBJ_TREND = 2 # Trend Line OBJ_TRENDBYANGLE = 3 # Trend Line By Angle OBJ_CYCLES = 4 # Cycle Lines OBJ_ARROWED_LINE = 108 # Arrowed Line OBJ_CHANNEL = 5 # Equidistant Channel OBJ_STDDEVCHANNEL = 6 # Standard Deviation Channel OBJ_REGRESSION = 7 # Linear Regression Channel OBJ_PITCHFORK = 8 # Andrews’ Pitchfork OBJ_GANNLINE = 9 # Gann Line OBJ_GANNFAN = 10 # Gann Fan OBJ_GANNGRID = 11 # Gann Grid OBJ_FIBO = 12 # Fibonacci Retracement OBJ_FIBOTIMES = 13 # Fibonacci Time Zones OBJ_FIBOFAN = 14 # Fibonacci Fan OBJ_FIBOARC = 15 # Fibonacci Arcs OBJ_FIBOCHANNEL = 16 # Fibonacci Channel OBJ_EXPANSION = 17 # Fibonacci Expansion OBJ_ELLIOTWAVE5 = 18 # Elliott Motive Wave OBJ_ELLIOTWAVE3 = 19 # Elliott Correction Wave OBJ_RECTANGLE = 20 # Rectangle OBJ_TRIANGLE = 21 # Triangle OBJ_ELLIPSE = 22 # Ellipse OBJ_ARROW_THUMB_UP = 23 # Thumbs Up OBJ_ARROW_THUMB_DOWN = 24 # Thumbs Down OBJ_ARROW_UP = 25 # Arrow Up OBJ_ARROW_DOWN = 26 # Arrow Down OBJ_ARROW_STOP = 27 # Stop Sign OBJ_ARROW_CHECK = 28 # Check Sign OBJ_ARROW_LEFT_PRICE = 29 # Left Price Label OBJ_ARROW_RIGHT_PRICE = 30 # Right Price Label OBJ_ARROW_BUY = 31 # Buy Sign OBJ_ARROW_SELL = 32 # Sell Sign OBJ_ARROW = 100 # Arrow OBJ_TEXT = 101 # Text OBJ_LABEL = 102 # Label OBJ_BUTTON = 103 # Button OBJ_CHART = 104 # Chart OBJ_BITMAP = 105 # Bitmap OBJ_BITMAP_LABEL = 106 # Bitmap Label OBJ_EDIT = 107 # Edit OBJ_EVENT = 109 # The "Event" object corresponding to an event in the economic calendar OBJ_RECTANGLE_LABEL = 110 # The "Rectangle label" object for creating and designing the custom graphical interface. # Object Properties class ENUM_OBJECT_PROPERTY_DOUBLE(IntEnum): OBJPROP_PRICE = 9 # Price coordinate OBJPROP_LEVELVALUE = 204 # Level value OBJPROP_SCALE = 1006 # Scale (properties of Gann objects and Fibonacci Arcs) OBJPROP_ANGLE = 1007 # Angle. For the objects with no angle specified, created from a program, the value is equal to EMPTY_VALUE OBJPROP_DEVIATION = 1010 # Deviation for the Standard Deviation Channel class ENUM_OBJECT_PROPERTY_INTEGER(IntEnum): OBJPROP_COLOR = 0 # Color OBJPROP_STYLE = 1 # Style OBJPROP_WIDTH = 2 # Line thickness OBJPROP_BACK = 3 # Object in the background OBJPROP_ZORDER = ( 207 # Priority of a graphical object for receiving events of clicking on a chart (CHARTEVENT_CLICK). ) # The default zero value is set when creating an object; the priority can be increased if necessary. # When objects are placed one atop another, only one of them with the highest priority will receive the CHARTEVENT_CLICK event. OBJPROP_FILL = 1031 # Fill an object with color (for OBJ_RECTANGLE, OBJ_TRIANGLE, OBJ_ELLIPSE, OBJ_CHANNEL, OBJ_STDDEVCHANNEL, OBJ_REGRESSION) OBJPROP_HIDDEN = 208 # Prohibit showing of the name of a graphical object in the list of objects from the terminal menu "Charts" - "Objects" - "List of objects". # The true value allows to hide an object from the list. By default, true is set to the objects that display calendar events, # trading history and to the objects created from MQL5 programs. To see such graphical objects and access their properties, click on the "All" button in the "List of objects" window. OBJPROP_SELECTED = 4 # Object is selected OBJPROP_READONLY = 1028 # Ability to edit text in the Edit object OBJPROP_TYPE = 7 # Object type OBJPROP_TIME = 8 # Time coordinate OBJPROP_SELECTABLE = 10 # Object availability OBJPROP_CREATETIME = 11 # Time of object creation OBJPROP_LEVELS = 200 # Number of levels OBJPROP_LEVELCOLOR = 201 # Color of the line-level OBJPROP_LEVELSTYLE = 202 # Style of the line-level OBJPROP_LEVELWIDTH = 203 # Thickness of the line-level OBJPROP_ALIGN = 1036 # Horizontal text alignment in the "Edit" object (OBJ_EDIT) OBJPROP_FONTSIZE = 1002 # Font size OBJPROP_RAY_LEFT = 1003 # Ray goes to the left OBJPROP_RAY_RIGHT = 1004 # Ray goes to the right OBJPROP_RAY = 1032 # A vertical line goes through all the windows of a chart OBJPROP_ELLIPSE = 1005 # Showing the full ellipse of the Fibonacci Arc object (OBJ_FIBOARC) OBJPROP_ARROWCODE = 1008 # Arrow code for the Arrow object OBJPROP_TIMEFRAMES = 12 # Visibility of an object at timeframes OBJPROP_ANCHOR = 1011 # Location of the anchor point of a graphical object OBJPROP_XDISTANCE = 1012 # The distance in pixels along the X axis from the binding corner OBJPROP_YDISTANCE = 1013 # The distance in pixels along the Y axis from the binding corner OBJPROP_DIRECTION = 1014 # Trend of the Gann object OBJPROP_DEGREE = 1015 # Level of the Elliott Wave Marking OBJPROP_DRAWLINES = 1016 # Displaying lines for marking the Elliott Wave OBJPROP_STATE = 1018 # Button state (pressed / depressed) OBJPROP_CHART_ID = 1030 # ID of the "Chart" object (OBJ_CHART). It allows working with the properties of this object like with a normal chart using the functions described in Chart Operations, but there some exceptions. OBJPROP_XSIZE = 1019 # The object's width along the X axis in pixels. Specified for OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL objects. OBJPROP_YSIZE = 1020 # The object's height along the Y axis in pixels. Specified for OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL objects. OBJPROP_XOFFSET = 1033 # The X coordinate of the upper left corner of the rectangular visible area in the graphical objects "Bitmap Label" and "Bitmap" (OBJ_BITMAP_LABEL and OBJ_BITMAP). # The value is set in pixels relative to the upper left corner of the original image. OBJPROP_YOFFSET = 1034 # The Y coordinate of the upper left corner of the rectangular visible area in the graphical objects "Bitmap Label" and "Bitmap" (OBJ_BITMAP_LABEL and OBJ_BITMAP). # The value is set in pixels relative to the upper left corner of the original image. OBJPROP_PERIOD = 1022 # Timeframe for the Chart object OBJPROP_DATE_SCALE = 1023 # Displaying the time scale for the Chart object OBJPROP_PRICE_SCALE = 1024 # Displaying the price scale for the Chart object OBJPROP_CHART_SCALE = 1027 # The scale for the Chart object OBJPROP_BGCOLOR = 1025 # The background color for OBJ_EDIT, OBJ_BUTTON, OBJ_RECTANGLE_LABEL OBJPROP_CORNER = 1026 # The corner of the chart to link a graphical object OBJPROP_BORDER_TYPE = 1029 # Border type for the "Rectangle label" object OBJPROP_BORDER_COLOR = 1035 # Border color for the OBJ_EDIT and OBJ_BUTTON objects class ENUM_OBJECT_PROPERTY_STRING(IntEnum): OBJPROP_NAME = 5 # Object name OBJPROP_TEXT = 6 # Description of the object (the text contained in the object) OBJPROP_TOOLTIP = 206 # The text of a tooltip. If the property is not set, then the tooltip generated automatically by the terminal is shown. A tooltip can be disabled by setting the "\n" (line feed) value to it OBJPROP_LEVELTEXT = 205 # Level description OBJPROP_FONT = 1001 # Font OBJPROP_BMPFILE = 1017 # The name of BMP-file for Bitmap Label. OBJPROP_SYMBOL = 1021 # Symbol for the Chart object class ENUM_BORDER_TYPE(IntEnum): BORDER_FLAT = 0 # Flat form BORDER_RAISED = 1 # Prominent form BORDER_SUNKEN = 2 # Concave form class ENUM_ALIGN_MODE(IntEnum): ALIGN_LEFT = 1 # Left alignment ALIGN_CENTER = 2 # Centered (only for the Edit object) ALIGN_RIGHT = 0 # Right alignment # Price Constants class ENUM_APPLIED_PRICE(IntEnum): PRICE_CLOSE = 1 # Close price PRICE_OPEN = 2 # Open price PRICE_HIGH = 3 # The maximum price for the period PRICE_LOW = 4 # The minimum price for the period PRICE_MEDIAN = 5 # Median price, (high + low)/2 PRICE_TYPICAL = 6 # Typical price, (high + low + close)/3 PRICE_WEIGHTED = 7 # Average price, (high + low + close + close)/4 class ENUM_APPLIED_VOLUME(IntEnum): VOLUME_TICK = 0 # Tick volume VOLUME_REAL = 1 # Trade volume class ENUM_STO_PRICE(IntEnum): STO_LOWHIGH = 0 # Calculation is based on Low/High prices STO_CLOSECLOSE = 1 # Calculation is based on Close/Close prices # Smoothing Methods class ENUM_MA_METHOD(IntEnum): MODE_SMA = 0 # Simple averaging MODE_EMA = 1 # Exponential averaging MODE_SMMA = 2 # Smoothed averaging MODE_LWMA = 3 # Linear-weighted averaging # Indicator constants class ENUM_INDICATOR(IntEnum): IND_AC = 5 # Accelerator Oscillator IND_AD = 6 # Accumulation/Distribution IND_ADX = 8 # Average Directional Index IND_ADXW = 9 # ADX by Welles Wilder IND_ALLIGATOR = 7 # Alligator IND_AMA = 40 # Adaptive Moving Average IND_AO = 11 # Awesome Oscillator IND_ATR = 10 # Average True Range IND_BANDS = 13 # Bollinger Bands® IND_BEARS = 12 # Bears Power IND_BULLS = 14 # Bulls Power IND_BWMFI = 22 # Market Facilitation Index IND_CCI = 15 # Commodity Channel Index IND_CHAIKIN = 41 # Chaikin Oscillator IND_CUSTOM = 43 # Custom indicator IND_DEMA = 36 # Double Exponential Moving Average IND_DEMARKER = 16 # DeMarker IND_ENVELOPES = 17 # Envelopes IND_FORCE = 18 # Force Index IND_FRACTALS = 19 # Fractals IND_FRAMA = 39 # Fractal Adaptive Moving Average IND_GATOR = 20 # Gator Oscillator IND_ICHIMOKU = 21 # Ichimoku Kinko Hyo IND_MA = 26 # Moving Average IND_MACD = 23 # MACD IND_MFI = 25 # Money Flow Index IND_MOMENTUM = 24 # Momentum IND_OBV = 28 # On Balance Volume IND_OSMA = 27 # OsMA IND_RSI = 30 # Relative Strength Index IND_RVI = 31 # Relative Vigor Index IND_SAR = 29 # Parabolic SAR IND_STDDEV = 32 # Standard Deviation IND_STOCHASTIC = 33 # Stochastic Oscillator IND_TEMA = 37 # Triple Exponential Moving Average IND_TRIX = 38 # Triple Exponential Moving Averages Oscillator IND_VIDYA = 42 # Variable Index Dynamic Average IND_VOLUMES = 34 # Volumes IND_WPR = 35 # Williams' Percent Ranges class ENUM_DATATYPE(IntEnum): TYPE_BOOL = 1 TYPE_CHAR = 2 TYPE_UCHAR = 3 TYPE_SHORT = 4 TYPE_USHORT = 5 TYPE_COLOR = 6 TYPE_INT = 7 TYPE_UINT = 8 TYPE_DATETIME = 9 TYPE_LONG = 10 TYPE_ULONG = 11 TYPE_FLOAT = 12 TYPE_DOUBLE = 13 TYPE_STRING = 14 class CopyTicksFlag(IntEnum): Info = 1 # ticks with Bid and/or Ask changes Trade = 2 # ticks with changes in Last and Volume All = -1 # all ticks