| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848 |
- //+------------------------------------------------------------------+
- //| MetaTrader 4 Manager API |
- //| Copyright 2001-2017, MetaQuotes Software Corp. |
- //| http://www.metaquotes.net |
- //+------------------------------------------------------------------+
- //| DO NOT EDIT THIS FILE!!! |
- //+------------------------------------------------------------------+
- // NoStyler
- #pragma once
- //+------------------------------------------------------------------+
- //| API Version |
- //+------------------------------------------------------------------+
- #define ManAPIProgramVersion 400
- #define ManAPIProgramBuild 1090
- #define ManAPIVersion MAKELONG(ManAPIProgramBuild,ManAPIProgramVersion)
- //+------------------------------------------------------------------+
- //| MSVS6 Compatibility |
- //+------------------------------------------------------------------+
- #if _MSC_VER <= 1200
- #define __time32_t time_t
- #define __ptr32
- #endif
- //+------------------------------------------------------------------+
- //| Server Configurations |
- //+------------------------------------------------------------------+
- //| Configuration types |
- //+------------------------------------------------------------------+
- enum
- {
- CONFIG_ALL=0, // all configurations
- CONFIG_COMMON, // common configuration
- CONFIG_ACCESS, // IP access list configuration
- CONFIG_SERVERS, // data servers
- CONFIG_TIME, // working time configuration
- CONFIG_HOLIDAYS, // holidays configuration
- CONFIG_SYMBOLS, // symbols configuration
- CONFIG_SYMB_GROUPS, // securities configuration
- CONFIG_GROUPS, // groups configuration
- CONFIG_MANAGERS, // manager's rights configuration
- CONFIG_DATAFEEDS, // data feeds configuration
- CONFIG_BACKUP, // backups configuration
- CONFIG_LIVEUPDATE, // LiveUpdate configuration
- CONFIG_SYNC, // synchronization configuration
- CONFIG_PLUGINS, // plugins configuration
- CONFIG_GATEWAY_ACCOUNTS, // gateway accounts
- CONFIG_GATEWAY_MARKUPS, // gateway markups
- CONFIG_GATEWAY_RULES, // gateway rules
- CONFIG_END=255 // last (unused)
- };
- //+------------------------------------------------------------------+
- //| Configuration structures |
- //+------------------------------------------------------------------+
- //| Common configuration |
- //+------------------------------------------------------------------+
- struct ConCommon
- {
- char owner[128]; // servers owner (include version & build)
- char name[32]; // server name
- ULONG address; // IP address assigned to the server
- int port; // port
- DWORD timeout; // sockets timeout
- int typeofdemo; // demo-accounts type (DEMO_DISABLED, DEMO_PROLONG, DEMO_FIXED)
- int timeofdemo; // demo-account living time
- int daylightcorrection; // allow daylight correction
- char internal[60]; // reserved
- int timezone_real; // time zone with day light mode
- int timezone; // time zone 0-GMT;-1=GMT-1;1=GMT+1;
- char timesync[64]; // time synchronization server address
- //---
- int minclient; // minimal authorized client version
- int minapi; // minimal authorized client version
- DWORD feeder_timeout; // data feed switch timeout
- int keepemails; // internal mail keep period
- int endhour,endminute; // end of day time-hour & minute
- //---
- int optimization_time; // optimization start time (minutes)
- int optimization_lasttime; // optimization last time
- int optimization_counter; // internal variable
- int optimization_unused[8];// reserved for future use
- //---
- int antiflood; // enable antiflood control
- int floodcontrol; // max. antiflood connections
- //---
- int liveupdate_mode; // LiveUpdate mode (LIVE_UPDATE_NO,LIVE_UPDATE_ALL,LIVE_UPDATE_NO_SERVER)
- //---
- int lastorder; // last order's ticket (read only)
- int lastlogin; // last account's number (read only)
- int lostlogin; // lost commission's login (read only)
- //---
- int rollovers_mode; // rollover mode (ROLLOVER_NORMAL,ROLLOVER_REOPEN_BY_CLOSE_PRICE,ROLLOVER_REOPEN_BY_BID)
- //---
- char path_database[256]; // path to databases
- char path_history[256]; // path to history bases
- char path_log[256]; // path to log
- //--- overnigths
- __time32_t overnight_last_day; // day of last overnight
- __time32_t overnight_last_time; // time of last overnight
- __time32_t overnight_prev_time; // time of next to last overnight
- //--- month reports
- __time32_t overmonth_last_month; // month of last report
- //--- performance base
- char adapters[256]; // network adapters list (read-only)
- ULONG bind_adresses[8]; // array of avaible IP addresses
- short server_version; // server version
- short server_build; // server build
- ULONG web_adresses[8]; // web services access list (comma separated IP addresses)
- int statement_mode; // statement generation time (STATEMENT_END_DAY,STATEMENT_START_DAY)
- int monthly_state_mode; // monthly statement generation day (MONTHLY_STATEMENT_END_MONTH,MONTHLY_STATEMENT_START_MONTH)
- int keepticks; // ticks keep period
- int statement_weekend; // generate statements at weekends
- __time32_t last_activate; // last activation datetime
- __time32_t stop_last; // last stop datetime
- int stop_delay; // last stop delay
- int stop_reason; // last stop reason
- char account_url[128]; // account allocation URL
- int reserved[16];
- };
- //--- deno-accounts type
- enum { DEMO_DISABLED, DEMO_PROLONG, DEMO_FIXED };
- //--- rollover mode
- enum { ROLLOVER_NORMAL, ROLLOVER_REOPEN_BY_CLOSE_PRICE, ROLLOVER_REOPEN_BY_BID };
- //--- LiveUpdate mode
- enum { LIVE_UPDATE_NO=0, LIVE_UPDATE_RELEASE=1, LIVE_UPDATE_NO_SERVER=2, LIVE_UPDATE_BETA=3 };
- //--- statement mode
- enum { STATEMENT_END_DAY, STATEMENT_START_DAY };
- //--- monthly statement mode
- enum { MONTHLY_STATEMENT_END_MONTH, MONTHLY_STATEMENT_START_MONTH };
- //--- server stop reason
- enum { STOP_REASON_NONE, STOP_REASON_RESTART, STOP_REASON_SHUTDOWN, STOP_REASON_LIVEUPDATE };
- //+------------------------------------------------------------------+
- //| Access configuration |
- //+------------------------------------------------------------------+
- struct ConAccess
- {
- int action; // type of action (FW_BLOCK,FW_PERMIT)
- unsigned long from,to; // from, to addresses
- char comment[64]; // comment
- int reserved[17]; // reserved
- };
- //--- access action
- enum { FW_BLOCK,FW_PERMIT };
- //+------------------------------------------------------------------+
- //| Data Servers configuration |
- //+------------------------------------------------------------------+
- struct ConDataServer
- {
- char server[64]; // server address (server:ip)
- ULONG ip; // server IP
- char description[64]; // server description
- int isproxy; // can server be proxy?
- int priority; // priority: 0-7 base, 255-idle
- UINT loading; // server loading (UINT_MAX-server does not inform its loading)
- ULONG ip_internal; // internal IP address
- int reserved[2]; // reserved
- ConDataServer* __ptr32 next; // internal (not used)
- };
- //+------------------------------------------------------------------+
- //| Time configuration |
- //+------------------------------------------------------------------+
- struct ConTime
- {
- int days[7][24]; // server's accessebility (7 days-24 hours, 0-denied, 1-allowed)
- int dayscontrol; // internal variable
- int reserved[3]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Backup configuration |
- //+------------------------------------------------------------------+
- struct ConBackup
- {
- //---
- char fullbackup_path[256]; // path to backup
- int fullbackup_period; // full backup's period-BACKUP_1HOUR, BACKUP_4HOURS, BACKUP_1DAY
- int fullbackup_store; // full backup's store time-BU_STORE_1MONTH, BU_STORE_3MONTHS, BU_STORE_6MONTHS,BU_STORE_1YEAR
- __time32_t fullbackup_lasttime; // full backup's last execution time
- short fullbackup_shift; // full backup timeshift (minutes)
- //---
- char external_path[256]; // path to external processing directory
- //---
- int archive_period; // period of archive backup-ARC_BACKUP_5MIN, ARC_BACKUP_15MIN, ARC_BACKUP_30MIN, ARC_BACKUP_1HOUR
- int archive_store; // archive backup's store time-ARC_STORE_1WEEK, ARC_STORE_2WEEKS, ARC_STORE_1MONTH, ARC_STORE_3MONTH, ARC_STORE_6MONTH
- __time32_t archive_lasttime; // archive backup's last execution time
- //---
- char export_securities[512]; // comma separated list of exported securities
- char export_path[256]; // path to export script
- int export_period; // export period-enumeration EXPORT_1MIN, EXPORT_5MIN, EXPORT_15MIN, EXPORT_30MIN,EXPORT_1HOUR
- __time32_t export_lasttime; // export's last execution time
- //--- watch dog
- int watch_role; // server role { WATCH_STAND_ALONE, WATCH_MASTER, WATCH_SLAVE }
- char watch_password[16]; // slave server password
- char watch_opposite[24]; // opposite server IP address and port
- int watch_ip; // opposite server IP
- //---
- char archive_shift; // shift of archive backup time (in minutes)
- //---
- char watch_state; // watch dog state
- char watch_failover; // watch dog failover mode
- unsigned char watch_timeout; // watch dog timeout
- int watch_login; // watch dog login
- __time32_t watch_timestamp; // watch dog timestamp
- };
- //--- server role
- enum { WATCH_STAND_ALONE,WATCH_MASTER,WATCH_SLAVE };
- //--- full backup execution periods: 1 hour, 4 hours, 1 day
- enum { BACKUP_1HOUR,BACKUP_4HOURS,BACKUP_1DAY };
- //--- full backup store period: 1 month, 3 months, 6 months, 1 year
- enum { BU_STORE_1MONTH,BU_STORE_3MONTHS,BU_STORE_6MONTHS,BU_STORE_1YEAR };
- //--- arc. backup execution periods: 5 min, 15 min, 30 min, 1 hour
- enum { ARC_BACKUP_DISABLED,ARC_BACKUP_5MIN,ARC_BACKUP_15MIN,ARC_BACKUP_30MIN,ARC_BACKUP_1HOUR };
- //--- arc. backup store period: 1 day, 3 days, 1 week, 2 weeks, 1 month,3 months, 6 months,1 year
- enum { ARC_STORE_1DAY,ARC_STORE_3DAYS,ARC_STORE_1WEEK,ARC_STORE_2WEEKS,ARC_STORE_1MONTH,ARC_STORE_3MONTH,ARC_STORE_6MONTH };
- //--- export execution period: 1 min, 5 min, 15 min, 30 min, 1 hour
- enum { EXPORT_1MIN,EXPORT_5MIN,EXPORT_15MIN,EXPORT_30MIN,EXPORT_1HOUR };
- //--- watchdog state
- enum { WS_DISCONNECTED, WS_SYNCHRONIZING, WS_SYNCHRONIZED };
- //--- watchdog failover mode
- enum { FAILOVER_OFF, FAILOVER_MOST, FAILOVER_FULL };
- //+------------------------------------------------------------------+
- //| Datafeed configuration |
- //+------------------------------------------------------------------+
- struct ConFeeder
- {
- char name[64]; // name
- char file[256]; // datafeed filename
- char server[64]; // server address
- char login[32]; // datafeed login
- char pass[32]; // datafeed password
- char keywords[256]; // keywords (news filtration)
- int enable; // enable feeder
- int mode; // datafeed mode-enumeration FEED_QUOTES, FEED_NEWS, FEED_QUOTESNEWS
- int timeout; // max. freeze time (default ~120 sec.)
- int timeout_reconnect; // reconnect timeout before attemps_sleep connect attempts (default ~ 5 sec)
- int timeout_sleep; // reconnect timeout after attemps_sleep connect attempts (default ~ 60 sec)
- int attemps_sleep; // reconnect count (see timeout_reconnect & timeout_sleep)
- int news_langid; // news language id
- int unused[33]; // reserved
- };
- //--- datafeed modes-receive quotes, receive news, receive quotes and news
- enum { FEED_QUOTES=0, FEED_NEWS=1, FEED_QUOTESNEWS=2 };
- //+------------------------------------------------------------------+
- //| Security group configuration for client group |
- //+------------------------------------------------------------------+
- #define MAX_SEC_GROUPS (32)
- #define MAX_SEC_GROPS_MARGIN (128)
- //---
- struct ConGroupSec
- {
- int show,trade; // enable show and trade for this group of securites
- int execution; // dealing mode-EXECUTION_MANUAL,EXECUTION_AUTO,EXECUTION_ACTIVITY
- //--- comission settings
- double comm_base; // standart commission
- int comm_type; // commission type-COMM_TYPE_MONEY,COMM_TYPE_PIPS,COMM_TYPE_PERCENT
- int comm_lots; // commission lots mode-COMMISSION_PER_LOT,COMMISSION_PER_DEAL
- double comm_agent; // agent commission
- int comm_agent_type; // agent commission mode-COMM_TYPE_MONEY, COMM_TYPE_PIPS
- //---
- int spread_diff; // spread difference in compare with default security spread
- //---
- int lot_min,lot_max; // allowed minimal and maximal lot values
- int lot_step; // allowed step value (10 lot-1000, 1 lot-100, 0.1 lot-10)
- int ie_deviation; // maximum price deviation in Instant Execution mode
- int confirmation; // use confirmation in Request mode
- int trade_rights; // clients trade rights-bit mask see TRADE_DENY_NONE,TRADE_DENY_CLOSEBY,TRADE_DENY_MUCLOSEBY
- int ie_quick_mode; // do not resend request to the dealer when client uses deviation
- int autocloseout_mode; // auto close-out method { CLOSE_OUT_NONE, CLOSE_OUT_HIHI, CLOSE_OUT_LOLO, CLOSE_OUT_HILO, CLOSE_OUT_LOHI, CLOSE_OUT_LOHI, CLOSE_OUT_FIFO, CLOSE_OUT_LIFO, CLOSE_OUT_INTRDAY_FIFO }
- double comm_tax; // commission taxes
- int comm_agent_lots; // agent commission per lot/per deal { COMMISSION_PER_LOT,COMMISSION_PER_DEAL }
- int freemargin_mode; // "soft" margin check
- int reserved[3]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Special securities configurations for client group |
- //+------------------------------------------------------------------+
- struct ConGroupMargin
- {
- char symbol[12]; // security
- double swap_long,swap_short; // swap size for long and short positions
- double margin_divider; // margin divider
- int reserved[7];
- };
- //--- dealing mode
- enum { EXECUTION_MANUAL, EXECUTION_AUTO, EXECUTION_ACTIVITY };
- //--- commission type
- enum { COMM_TYPE_MONEY, COMM_TYPE_PIPS, COMM_TYPE_PERCENT };
- //--- comission lots mode
- enum { COMMISSION_PER_LOT, COMMISSION_PER_DEAL };
- //--- clients trade rights
- enum { TRADE_DENY_NONE=0, TRADE_DENY_CLOSEBY=1, TRADE_DENY_MUCLOSEBY=2 };
- //--- auto close-out method
- enum { CLOSE_OUT_NONE, CLOSE_OUT_HIHI, CLOSE_OUT_LOLO, CLOSE_OUT_HILO, CLOSE_OUT_LOHI, CLOSE_OUT_FIFO, CLOSE_OUT_LIFO, CLOSE_OUT_INTRDAY_FIFO };
- //+------------------------------------------------------------------+
- //| Client group configuration |
- //+------------------------------------------------------------------+
- struct ConGroup
- {
- //--- common settings
- char group[16]; // group name
- int enable; // enable group
- int timeout; // trade confirmation timeout (seconds)
- int otp_mode; // one-time password mode
- //--- statements
- char company[128]; // company name
- char signature[128]; // statements signature
- char support_page[128]; // company support page
- char smtp_server[64]; // statements SMTP server
- char smtp_login[32]; // statements SMTP login
- char smtp_password[32]; // statements SMTP password
- char support_email[64]; // support email
- char templates[32]; // path to directory with custom templates
- int copies; // copy statements on support email
- int reports; // enable statements
- //--- default settings
- int default_leverage; // default leverage (user don't specify leverage himself)
- double default_deposit; // default deposit (user don't specify balance himself)
- //--- securities
- int maxsecurities; // maximum simultaneous securities
- ConGroupSec secgroups[MAX_SEC_GROUPS]; // security group settings
- ConGroupMargin secmargins[MAX_SEC_GROPS_MARGIN]; // special securities settings
- int secmargins_total; // count of special securities settings
- //--- margin & interest
- char currency[12]; // deposit currency
- double credit; // virtual credit
- int margin_call; // margin call level (percents)
- int margin_mode; // margin mode-MARGIN_DONT_USE,MARGIN_USE_ALL,MARGIN_USE_PROFIT,MARGIN_USE_LOSS
- int margin_stopout; // stop out level
- double interestrate; // annual interest rate (percents)
- int use_swap; // use rollovers & interestrate
- //--- rights
- int news; // news mode
- int rights; // rights bit mask-ALLOW_FLAG_EMAIL
- int check_ie_prices; // check IE prices on requests
- int maxpositions; // maximum orders and open positions
- int close_reopen; // partial close mode (if !=0 original position will be fully closed and remain position will be fully reopened)
- int hedge_prohibited; // hedge prohibition flag
- int close_fifo; // fifo rule
- int hedge_largeleg; // use large leg margin for hedged positions
- int unused_rights[2]; // reserved
- char securities_hash[16]; // internal data
- //---
- int margin_type; // margin controlling type { MARGIN_TYPE_PERCENT, MARGIN_TYPE_CURRENCY }
- //--- archives
- int archive_period; // inactivity period after which account moves to archive base (in days)
- int archive_max_balance; // maxumum balance of accounts to move in archive base
- //---
- int stopout_skip_hedged; // skip fully hedged accounts when checking for stopout
- int archive_pending_period; // pendings clean period
- //--- allowed news languages
- UINT news_languages[8]; // LANGID array
- UINT news_languages_total; // news languages total
- //--- reserved
- int reserved[17];
- };
- //--- margin calculation mode
- enum { MARGIN_MODE_DONT_USE,MARGIN_MODE_USE_ALL,MARGIN_MODE_USE_PROFIT,MARGIN_MODE_USE_LOSS };
- //--- margin controlling type
- enum { MARGIN_TYPE_PERCENT, MARGIN_TYPE_CURRENCY };
- //--- news mode-no news, only topics, full news (topic+body)
- enum { NEWS_NO, NEWS_TOPICS, NEWS_FULL };
- //--- group rights
- enum
- {
- ALLOW_FLAG_EMAIL =1,
- ALLOW_FLAG_TRAILING =2,
- ALLOW_FLAG_ADVISOR =4,
- ALLOW_FLAG_EXPIRATION =8,
- ALLOW_FLAG_SIGNALS_ALL =16,
- ALLOW_FLAG_SIGNALS_OWN =32,
- ALLOW_FLAG_RISK_WARNING =64,
- ALLOW_FLAG_FORCED_OTP_USAGE=128,
- };
- //--- group one-time password mode
- enum
- {
- OTP_MODE_DISABLED =0,
- OTP_MODE_TOTP_SHA256 =1,
- };
- //+------------------------------------------------------------------+
- //| Hollidays configuration |
- //+------------------------------------------------------------------+
- struct ConHoliday
- {
- int year; // year
- int month; // month
- int day; // day
- int from,to; // work time-from & to (minutes)
- char symbol[32]; // security name or symbol's group name or "All"
- char description[128]; // description
- int enable; // enable
- int reserved[13]; // reserved
- ConHoliday * __ptr32 next; // internal data
- };
- //+------------------------------------------------------------------+
- //| LiveUpdate configuration |
- //+------------------------------------------------------------------+
- #define LIVE_FILES_MAX (128)
- //---
- struct LiveInfoFile
- {
- char file[256]; // file name
- int size; // file size
- char hash[36]; // file hash
- int reserved[10]; // reserved
- };
- //---
- struct ConLiveUpdate
- {
- char company[128]; // company
- char path[256]; // path to LiveUpdate
- int version; // version
- int build; // build
- int maxconnect; // max. simultaneous connections
- int connections; // current connections (read only)
- int type; // type LIVE_UPDATE_*
- int enable; // enable
- int totalfiles; // total files count
- LiveInfoFile files[LIVE_FILES_MAX]; // files' configurations
- int reserved[16]; // reserved
- ConLiveUpdate * __ptr32 next; // internal data
- };
- //--- LiveUpdate type
- enum
- {
- LIVE_UPDATE_CLIENT,
- LIVE_UPDATE_MANAGER,
- LIVE_UPDATE_ADMIN,
- LIVE_UPDATE_DATACENTER,
- LIVE_UPDATE_CLIENT_PPC2002,
- LIVE_UPDATE_CLIENT_PPC2003,
- LIVE_UPDATE_MULTI,
- LIVE_UPDATE_WD,
- LIVE_UPDATE_CLIENT_PHONE,
- LIVE_UPDATE_LAST
- };
- //+------------------------------------------------------------------+
- //| Manager rights for security groups |
- //+------------------------------------------------------------------+
- struct ConManagerSec
- {
- int internal; // internal data
- int enable; // enable
- int minimum_lots; // min. lots
- int maximum_lots; // max. lots
- int unused[16]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Manager configuration |
- //+------------------------------------------------------------------+
- struct ConManager
- {
- int login; // login
- //--- rights
- int manager; // right to add & change client records
- int money; // right to balance & credit management
- int online; // right to see online users
- int riskman; // right to use analyzer
- int broker; // right to deal
- int admin; // right to server administration
- int logs; // right to see logs
- int reports; // right to see reports
- int trades; // right to add/modify/delete trades
- int market_watch; // right to change spread, spread balance, stop levels, execution mode and send quotes
- int email; // right to send internal mail
- int user_details; // right to see clients private data-name,country,address,phone,email etc.
- int see_trades; // right to see trades
- int news; // right to send news
- int plugins; // right to configure plugins
- int server_reports; // right to receive server reports
- int techsupport; // right to access to technical support page
- int market; // right to access server applications market
- int notifications; // right to push notifications
- int unused[9];
- //--- IP filtration
- int ipfilter; // enable IP control
- unsigned long ip_from,ip_to; // range of allowed IPs
- //---
- char mailbox[64]; // name of mailbox for internal mail
- char groups[1024]; // comma separated list of managed groups (allowed '*' wildcard)
- ConManagerSec secgroups[MAX_SEC_GROUPS]; // manager rights for security groups
- DWORD exp_time; // internal data
- char name[32]; // manager name (read only)
- int info_depth; // maximum available data (in days)
- //---
- int reserved[22];
- };
- //+------------------------------------------------------------------+
- //| Symbol configurations |
- //+------------------------------------------------------------------+
- //| Symbol sessions configurations |
- //+------------------------------------------------------------------+
- struct ConSession
- {
- short open_hour,open_min; // session open time: hour & minute
- short close_hour,close_min; // session close time: hour & minute
- int open,close; // internal data
- short align[7]; // internal data
- };
- //---
- struct ConSessions
- {
- //---
- ConSession quote[3]; // quote sessions
- ConSession trade[3]; // trade sessions
- //---
- int quote_overnight; // internal data
- int trade_overnight; // internal data
- int reserved[2]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Symbol configuration |
- //+------------------------------------------------------------------+
- #define MAX_SYMBOLS 1024
- //---
- struct ConSymbol
- {
- //--- common settings
- char symbol[12]; // name
- char description[64]; // description
- char source[12]; // synonym
- char currency[12]; // currency
- int type; // security group (see ConSymbolGroup)
- int digits; // security precision
- int trade; // trade mode
- //--- external settings
- COLORREF background_color; // background color
- int count; // symbols index
- int count_original; // symbols index in market watch
- int external_unused[7];
- //--- sessions
- int realtime; // allow real time quotes
- __time32_t starting; // trades starting date (UNIX time)
- __time32_t expiration; // trades end date (UNIX time)
- ConSessions sessions[7]; // quote & trade sessions
- //--- profits
- int profit_mode; // profit calculation mode
- int profit_reserved; // reserved
- //--- filtration
- int filter; // filter value
- int filter_counter; // filtration parameter
- double filter_limit; // max. permissible deviation from last quote (percents)
- int filter_smoothing; // smoothing
- float filter_reserved; // reserved
- int logging; // enable to log quotes
- //--- spread & swaps
- int spread; // spread
- int spread_balance; // spread balance
- int exemode; // execution mode
- int swap_enable; // enable swaps
- int swap_type; // swap type
- double swap_long,swap_short; // swaps values for long & short postions
- int swap_rollover3days; // triple rollover day-0-Monday,1-Tuesday...4-Friday
- double contract_size; // contract size
- double tick_value; // one tick value
- double tick_size; // one tick size
- int stops_level; // stops deviation value
- //---
- int gtc_pendings; // GTC mode { ORDERS_DAILY, ORDERS_GTC, ORDERS_DAILY_NO_STOPS }
- //--- margin calculation
- int margin_mode; // margin calculation mode
- double margin_initial; // initial margin
- double margin_maintenance; // margin maintenance
- double margin_hedged; // hedged margin
- double margin_divider; // margin divider
- //--- calclulated variables (internal data)
- double point; // point size-(1/(10^digits)
- double multiply; // multiply 10^digits
- double bid_tickvalue; // tickvalue for bid
- double ask_tickvalue; // tickvalue for ask
- //---
- int long_only; // allow only BUY positions
- int instant_max_volume; // max. volume for Instant Execution
- //---
- char margin_currency[12]; // currency of margin requirments
- int freeze_level; // modification freeze level
- int margin_hedged_strong; // strong hedged margin mode
- __time32_t value_date; // value date
- int quotes_delay; // quotes delay after session start
- int swap_openprice; // use open price at swaps calculation in SWAP_BY_INTEREST mode
- int swap_variation_margin; // charge variation margin on rollover
- //---
- int unused[21]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Symbols enumeration |
- //+------------------------------------------------------------------+
- //--- symbol execution mode
- enum { EXE_REQUEST,EXE_INSTANT,EXE_MARKET };
- //--- trade mode
- enum { TRADE_NO,TRADE_CLOSE,TRADE_FULL };
- //--- swap type
- enum { SWAP_BY_POINTS,SWAP_BY_DOLLARS,SWAP_BY_INTEREST,SWAP_BY_MARGIN_CURRENCY };
- //--- profit calculation mode
- enum { PROFIT_CALC_FOREX,PROFIT_CALC_CFD,PROFIT_CALC_FUTURES };
- //--- margin calculation mode
- enum { MARGIN_CALC_FOREX,MARGIN_CALC_CFD,MARGIN_CALC_FUTURES,MARGIN_CALC_CFDINDEX,MARGIN_CALC_CFDLEVERAGE };
- //--- GTC mode
- enum { ORDERS_DAILY, ORDERS_GTC, ORDERS_DAILY_NO_STOPS };
- //+------------------------------------------------------------------+
- //| Symbol groups |
- //+------------------------------------------------------------------+
- #define MAX_SEC_GROUP (32)
- struct ConSymbolGroup
- {
- char name[16]; // group name
- char description[64]; // group description
- };
- //+------------------------------------------------------------------+
- //| Synchronization configuration |
- //+------------------------------------------------------------------+
- struct ConSync
- {
- char server[64]; // name (address
- int unusedport; // port
- char login[32]; // for future use-login
- char password[32]; // for future use=password
- int enable; // enable sychronization
- int mode; // synchronization mode: HB_ADD,HB_UPDATE,HB_INSERT
- __time32_t from,to; // synchronization range (<0-whole chart)
- char securities[1024]; // symbols list
- int timecorrection; // time correction in minutes
- int reserved[13]; // reserved
- ConSync * __ptr32 next; // internal (do not use)
- };
- //--- synchronization mode
- enum { HB_ADD,HB_UPDATE,HB_INSERT,HB_DELETE,HB_LAST };
- //+------------------------------------------------------------------+
- //| Plugin configuration |
- //+------------------------------------------------------------------+
- //| Plugin description |
- //+------------------------------------------------------------------+
- struct PluginInfo
- {
- char name[128]; // plugin name
- unsigned int version; // plugin version
- char copyright[128]; // plugin copyright
- int reserved[32]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Plugin configuration parameter |
- //+------------------------------------------------------------------+
- struct PluginCfg
- {
- char name[32]; // parameter name
- char value[128]; // parameter value
- int reserved[16]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Plugin configuration |
- //+------------------------------------------------------------------+
- struct ConPlugin
- {
- char file[256]; // plugin file name
- PluginInfo info; // plugin description
- int enabled; // plugin enabled/disabled
- int configurable; // is plugin configurable
- int manager_access; // plugin can be accessed from manager terminal
- int reserved[62]; // reserved
- };
- //--- plugin with parameters
- struct ConPluginParam
- {
- ConPlugin plugin; // plugin configuration
- PluginCfg* __ptr32 params; // plugin parameters
- int total; // total plugin parameters
- };
- //+------------------------------------------------------------------+
- //| Gateway configuration |
- //+------------------------------------------------------------------+
- //+------------------------------------------------------------------+
- //| Gateway account configuration |
- //+------------------------------------------------------------------+
- struct ConGatewayAccount
- {
- int enable; // enable flag 0 - disabled, 1 - enabled
- char name[64]; // public name
- int id; // internal id
- int type; // type (obsolete)
- int login; // STP MT4 login
- char address[64]; // MT4 server address
- char password[64]; // STP MT4 password
- int notify_logins[8]; // list of logins for internal email notification
- int flags; // flag fields
- int reserved[23]; // reserved
- };
- //--- gateway account flags
- enum EnGatewayAccountFlags { GATEWAY_FLAG_NONE=0, GATEWAY_FLAG_QUOTES=1 };
- //+------------------------------------------------------------------+
- //| Gateway markup configuration |
- //+------------------------------------------------------------------+
- struct ConGatewayMarkup
- {
- int enable; // enable flag 0 - disabled, 1 - enabled
- char source[128]; // source symbol\symbols mask\symbols group name
- char symbol[12]; // local symbol name
- char account_name[64]; // account name (obsolete)
- int account_id; // account internal id (obsolete)
- int bid_markup; // bid markup in pips
- int ask_markup; // ask markup in pips
- int reserved[16]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Gateway rules configuration |
- //+------------------------------------------------------------------+
- struct ConGatewayRule
- {
- int enable; // enable flag 0 - disabled, 1 - enabled
- char name[64]; // public name
- char request_symbol[128]; // symbol\symbols mask\symbols group name
- char request_group[128]; // group name or group mask
- int request_reserved[32]; // reserved
- char exe_account_name[64]; // account name
- int exe_account_id; // account internal id
- int exe_max_deviation; // max. devation
- int exe_max_profit_slippage; // max profit slippage in pips
- int exe_max_profit_slippage_lots; // max profit slippage volume in lots
- int exe_max_losing_slippage; // max losing slippage in pips
- int exe_max_losing_slippage_lots; // max losing slippage volume in lots
- int exe_account_pos; // account current position
- int exe_volume_percent; // coverage percentage
- int exe_reserved[26]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Result codes |
- //+------------------------------------------------------------------+
- enum
- {
- //--- common errors
- RET_OK =0, // all OK
- RET_OK_NONE, // all OK-no operation
- RET_ERROR, // general error
- RET_INVALID_DATA, // invalid data
- RET_TECH_PROBLEM, // server technical problem
- RET_OLD_VERSION, // old client terminal
- RET_NO_CONNECT, // no connection
- RET_NOT_ENOUGH_RIGHTS, // no enough rights
- RET_TOO_FREQUENT, // too frequently access to server
- RET_MALFUNCTION, // mulfunctional operation
- RET_GENERATE_KEY, // need to send public key
- RET_SECURITY_SESSION, // security session start
- //--- account status
- RET_ACCOUNT_DISABLED =64, // account blocked
- RET_BAD_ACCOUNT_INFO, // bad account info
- RET_PUBLIC_KEY_MISSING, // public key missing on external auth
- //--- trade
- RET_TRADE_TIMEOUT =128, // trade transatcion timeou expired
- RET_TRADE_BAD_PRICES, // order has wrong prices
- RET_TRADE_BAD_STOPS, // wrong stops level
- RET_TRADE_BAD_VOLUME, // wrong lot size
- RET_TRADE_MARKET_CLOSED, // market closed
- RET_TRADE_DISABLE, // trade disabled
- RET_TRADE_NO_MONEY, // no enough money for order execution
- RET_TRADE_PRICE_CHANGED, // price changed
- RET_TRADE_OFFQUOTES, // no quotes
- RET_TRADE_BROKER_BUSY, // broker is busy
- RET_TRADE_REQUOTE, // requote
- RET_TRADE_ORDER_LOCKED, // order is proceed by dealer and cannot be changed
- RET_TRADE_LONG_ONLY, // allowed only BUY orders
- RET_TRADE_TOO_MANY_REQ, // too many requests from one client
- //--- order status notification
- RET_TRADE_ACCEPTED, // trade request accepted by server and placed in request queue
- RET_TRADE_PROCESS, // trade request accepted by dealerd
- RET_TRADE_USER_CANCEL, // trade request canceled by client
- //--- additional return codes
- RET_TRADE_MODIFY_DENIED, // trade modification denied
- RET_TRADE_CONTEXT_BUSY, // trade context is busy (used in client terminal)
- RET_TRADE_EXPIRATION_DENIED, // using expiration date denied
- RET_TRADE_TOO_MANY_ORDERS, // too many orders
- RET_TRADE_HEDGE_PROHIBITED, // hedge is prohibited
- RET_TRADE_PROHIBITED_BY_FIFO // prohibited by fifo rule
- };
- //+------------------------------------------------------------------+
- //| Pumping mode flags |
- //+------------------------------------------------------------------+
- enum
- {
- //--- user flags
- CLIENT_FLAGS_HIDETICKS =1, // do not send ticks
- CLIENT_FLAGS_HIDENEWS =2, // do not send news
- CLIENT_FLAGS_HIDEMAIL =4, // do not send mails
- CLIENT_FLAGS_SENDFULLNEWS=8, // send news body with news header in pumping mode
- CLIENT_FLAGS_RESERVED =16, // reserved
- //--- manager flags
- CLIENT_FLAGS_HIDEONLINE =32, // do not send online users table
- CLIENT_FLAGS_HIDEUSERS =64 // do not send users table
- };
- //+------------------------------------------------------------------+
- //| Server datafeed descritopn |
- //+------------------------------------------------------------------+
- struct FeedDescription
- {
- int version; // data source version
- char name[128]; // data source name
- char copyright[128]; // copyright string
- char web[128]; // data source web
- char email[128]; // data source email
- char server[128]; // feeder server
- char username[32]; // default feeder name
- char userpass[32]; // default feeder password
- int modes; // feeder modes (enum FeederModes)
- char description[512]; // feeder description
- char module[32]; // datafeed name in license
- int reserved[54]; // reserved
- };
- //--- feeder modes
- enum FeederModes
- {
- modeOnlyQuotes =0, // only quotes feeder
- modeOnlyNews =1, // only news feeder
- modeQuotesAndNews =2, // quotes and news feeder
- modeQuotesOrNews =3 // quotes or news feeder
- };
- //--- server datafeed
- struct ServerFeed
- {
- char file[256]; // feeder file name
- FeedDescription feed; // feeder description
- };
- //+------------------------------------------------------------------+
- //| Charts |
- //+------------------------------------------------------------------+
- //| Request chart history struct |
- //+------------------------------------------------------------------+
- struct ChartInfo
- {
- char symbol[12]; // symbol
- int period; // period (PERIOD_*)
- __time32_t start; // start of chart block
- __time32_t end; // end of chart block
- __time32_t timesign; // timestamp of existing chart base
- int mode; // request mode
- };
- //--- chart period
- enum { PERIOD_M1=1, PERIOD_M5=5, PERIOD_M15=15, PERIOD_M30=30,
- PERIOD_H1=60, PERIOD_H4=240, PERIOD_D1=1440, PERIOD_W1=10080,
- PERIOD_MN1=43200 };
- //--- request mode
- enum { CHART_RANGE_IN,CHART_RANGE_OUT,CHART_RANGE_LAST };
- //+------------------------------------------------------------------+
- //| Rate the in chart base |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct RateInfoOld
- {
- __time32_t ctm; // rate time
- int open; // open price: 11987=119.87
- short high,low,close; // high,low,close shift from open
- double vol; // volume
- };
- struct RateInfo
- {
- __time32_t ctm; // rate time
- int open; // open price: 11987=119.87
- int high,low,close; // high,low,close shift from open
- double vol; // volume
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Tick record in base |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct TickRecord
- {
- __time32_t ctm; // tick time
- double bid,ask; // bid, ask
- int datafeed; // index if datafeed
- char flags; // TICK_FLAG_* flags
- };
- #pragma pack(pop)
- //---
- enum { TICK_FLAG_RAW=1, TICK_FLAG_NORMAL=2,TICK_FLAG_ALL=TICK_FLAG_RAW+TICK_FLAG_NORMAL };
- //+------------------------------------------------------------------+
- //| Tick request |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct TickRequest
- {
- char symbol[12]; // symbol
- __time32_t from; // start of period
- __time32_t to; // end of period
- char flags; // TICK_FLAG_* flags
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Performance information |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct PerformanceInfo
- {
- __time32_t ctm;
- short users; // online users
- short cpu; // processor loading (%)
- int freemem; // free memory (Kb)
- int network; // network activity (Kb/s)
- int sockets; // all open sockets in system
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Backup file information |
- //+------------------------------------------------------------------+
- struct BackupInfo
- {
- char file[256]; // file name
- int size; // file size
- __time32_t time; // file time
- int reserved[6]; // reserved
- };
- //--- backup mode
- enum
- {
- BACKUPS_ALL, // all backup
- BACKUPS_PERIODICAL, // periodical backups
- BACKUPS_STARTUP, // backups on startup
- BACKUPS_DELETE // backups on delete
- };
- //+------------------------------------------------------------------+
- //| Databases |
- //+------------------------------------------------------------------+
- //| Transaction types |
- //+------------------------------------------------------------------+
- enum { TRANS_ADD, TRANS_DELETE, TRANS_UPDATE, TRANS_CHANGE_GRP };
- //+------------------------------------------------------------------+
- //| User Record |
- //+------------------------------------------------------------------+
- #define PUBLIC_KEY_SIZE 272 // RSA key size // (((1024+64)/32)*4*2)
- #define USER_COLOR_NONE (0xFF000000) // default user color
- //---
- struct UserRecord
- {
- //--- common settings
- int login; // login
- char group[16]; // group
- char password[16]; // password
- //--- access flags
- int enable; // enable
- int enable_change_password; // allow to change password
- int enable_read_only; // allow to open/positions (TRUE-may not trade)
- int enable_otp; // allow to use one-time password
- int enable_reserved[2]; // for future use
- //---
- char password_investor[16]; // read-only mode password
- char password_phone[32]; // phone password
- char name[128]; // name
- char country[32]; // country
- char city[32]; // city
- char state[32]; // state
- char zipcode[16]; // zipcode
- char address[96]; // address
- char lead_source[32]; // lead source
- char phone[32]; // phone
- char email[48]; // email
- char comment[64]; // comment
- char id[32]; // SSN (IRD)
- char status[16]; // status
- __time32_t regdate; // registration date
- __time32_t lastdate; // last coonection time
- //--- trade settings
- int leverage; // leverage
- int agent_account; // agent account
- __time32_t timestamp; // timestamp
- int last_ip; // last visit ip
- //--- trade data
- double balance; // balance
- double prevmonthbalance; // previous month balance
- double prevbalance; // previous day balance
- double credit; // credit
- double interestrate; // accumulated interest rate
- double taxes; // taxes
- double prevmonthequity; // previous month equity
- double prevequity; // previous day equity
- double reserved2[2]; // for future use
- //---
- char otp_secret[32]; // one-time password secret
- char secure_reserved[240]; // secure data reserved
- int send_reports; // enable send reports by email
- unsigned int mqid; // MQ client identificator
- COLORREF user_color; // color got to client (used by MT Manager)
- //---
- char unused[40]; // for future use
- char api_data[16]; // for API usage
- };
- //+------------------------------------------------------------------+
- //| Users group operation |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct GroupCommandInfo
- {
- int len; // length of users list
- char command; // group coommand
- char newgroup[16]; // new group
- int leverage; // new leverage
- int reserved[8]; // reserved
- };
- #pragma pack(pop)
- //--- group commands
- enum { GROUP_DELETE,GROUP_ENABLE,GROUP_DISABLE,GROUP_LEVERAGE,GROUP_SETGROUP };
- //+------------------------------------------------------------------+
- //| Online user description |
- //+------------------------------------------------------------------+
- struct OnlineRecord
- {
- int counter; // connections counter
- int reserved; // reserved
- int login; // user login
- UINT ip; // connection ip address
- char group[16]; // user group
- };
- //+------------------------------------------------------------------+
- //| Trade Record |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct TradeRecord
- {
- int order; // order ticket
- int login; // owner's login
- char symbol[12]; // security
- int digits; // security precision
- int cmd; // trade command
- int volume; // volume
- //---
- __time32_t open_time; // open time
- int state; // reserved
- double open_price; // open price
- double sl,tp; // stop loss & take profit
- __time32_t close_time; // close time
- int gw_volume; // gateway order volume
- __time32_t expiration; // pending order's expiration time
- char reason; // trade reason
- char conv_reserv[3]; // reserved fields
- double conv_rates[2]; // convertation rates from profit currency to group deposit currency
- // (first element-for open time, second element-for close time)
- double commission; // commission
- double commission_agent; // agent commission
- double storage; // order swaps
- double close_price; // close price
- double profit; // profit
- double taxes; // taxes
- int magic; // special value used by client experts
- char comment[32]; // comment
- int gw_order; // gateway order ticket
- int activation; // used by MT Manager
- short gw_open_price; // gateway order price deviation (pips) from order open price
- short gw_close_price; // gateway order price deviation (pips) from order close price
- double margin_rate; // margin convertation rate (rate of convertation from margin currency to deposit one)
- __time32_t timestamp; // timestamp
- int api_data[4]; // for api usage
- TradeRecord *__ptr32 next; // internal data
- };
- #pragma pack(pop)
- //--- trade commands
- enum { OP_BUY=0,OP_SELL,OP_BUY_LIMIT,OP_SELL_LIMIT,OP_BUY_STOP,OP_SELL_STOP,OP_BALANCE,OP_CREDIT };
- //--- trade record state
- enum { TS_OPEN_NORMAL, TS_OPEN_REMAND, TS_OPEN_RESTORED, TS_CLOSED_NORMAL, TS_CLOSED_PART, TS_CLOSED_BY, TS_DELETED };
- //--- trade record reasons
- enum
- {
- TR_REASON_CLIENT =0, // client terminal
- TR_REASON_EXPERT =1, // expert
- TR_REASON_DEALER =2, // dealer
- TR_REASON_SIGNAL =3, // signal
- TR_REASON_GATEWAY=4, // gateway
- TR_REASON_MOBILE =5, // mobile terminal
- TR_REASON_WEB =6, // Web terminal
- TR_REASON_API =7, // API
- };
- //--- activation types
- //--- *_ROLLBACK=current price roll back from activation price level
- enum
- {
- //--- no activation
- ACTIVATION_NONE=0,
- //--- stoploss, takeprofit, pendings
- ACTIVATION_SL,ACTIVATION_TP,ACTIVATION_PENDING,
- //--- stopout
- ACTIVATION_STOPOUT,
- //--- rollbacks
- ACTIVATION_SL_ROLLBACK =-ACTIVATION_SL,
- ACTIVATION_TP_ROLLBACK =-ACTIVATION_TP,
- ACTIVATION_PENDING_ROLLBACK=-ACTIVATION_PENDING,
- ACTIVATION_STOPOUT_ROLLBACK=-ACTIVATION_STOPOUT
- };
- //+------------------------------------------------------------------+
- //| TradeRecord restoring from backup result |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct TradeRestoreResult
- {
- int order; // order
- UCHAR res; // RET_OK - order restored
- // RET_ERROR - error restoring order
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Trade transaction |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct TradeTransInfo
- {
- UCHAR type; // trade transaction type
- char flags; // flags
- short cmd; // trade command
- int order,orderby; // order, order by
- char symbol[12]; // trade symbol
- int volume; // trade volume
- double price; // trade price
- double sl,tp; // stoploss, takeprofit
- int ie_deviation; // deviation on IE
- char comment[32]; // comment
- __time32_t expiration; // pending order expiration time
- int crc; // crc
- };
- #pragma pack(pop)
- //--- trade transaction types
- enum
- {
- //---
- TT_PRICES_GET, // prices requets
- TT_PRICES_REQUOTE, // requote
- //--- client trade transaction
- TT_ORDER_IE_OPEN=64, // open order (Instant Execution)
- TT_ORDER_REQ_OPEN, // open order (Request Execution)
- TT_ORDER_MK_OPEN, // open order (Market Execution)
- TT_ORDER_PENDING_OPEN, // open pending order
- //---
- TT_ORDER_IE_CLOSE, // close order (Instant Execution)
- TT_ORDER_REQ_CLOSE, // close order (Request Execution)
- TT_ORDER_MK_CLOSE, // close order (Market Execution)
- //---
- TT_ORDER_MODIFY, // modify pending order
- TT_ORDER_DELETE, // delete pending order
- TT_ORDER_CLOSE_BY, // close order by order
- TT_ORDER_CLOSE_ALL, // close all orders by symbol
- //--- broker trade transactions
- TT_BR_ORDER_OPEN, // open order
- TT_BR_ORDER_CLOSE, // close order
- TT_BR_ORDER_DELETE, // delete order (ANY OPEN ORDER!!!)
- TT_BR_ORDER_CLOSE_BY, // close order by order
- TT_BR_ORDER_CLOSE_ALL, // close all orders by symbol
- TT_BR_ORDER_MODIFY, // modify open price, stoploss, takeprofit etc. of order
- TT_BR_ORDER_ACTIVATE, // activate pending order
- TT_BR_ORDER_COMMENT, // modify comment of order
- TT_BR_BALANCE // balance/credit
- };
- //--- trade request flags
- enum EnReqFlags
- {
- TT_FLAG_NONE =0x00000000, // flags none
- TT_FLAG_SIGNAL =0x00000001, // placed by signal
- TT_FLAG_EXPERT =0x00000002, // placed by expert
- TT_FLAG_GATEWAY=0x00000004, // placed by gateway
- TT_FLAG_MOBILE =0x00000008, // placed by mobile terminal
- TT_FLAG_WEB =0x00000010, // placed by web terminal
- TT_FLAG_API =0x00000020, // placed by api
- };
- //+------------------------------------------------------------------+
- //| Margin level of the user |
- //+------------------------------------------------------------------+
- struct MarginLevel
- {
- int login; // user login
- char group[16]; // user group
- int leverage; // user leverage
- int updated; // (internal)
- double balance; // balance+credit
- double equity; // equity
- int volume; // lots
- double margin; // margin requirements
- double margin_free; // free margin
- double margin_level; // margin level
- int margin_type; // margin controlling type (percent/currency)
- int level_type; // level type(ok/margincall/stopout)
- };
- //--- margin level type
- enum { MARGINLEVEL_OK=0, MARGINLEVEL_MARGINCALL, MARGINLEVEL_STOPOUT };
- //+------------------------------------------------------------------+
- //| Trade request |
- //+------------------------------------------------------------------+
- struct RequestInfo
- {
- //--- general props
- int id; // request id
- char status; // request status
- DWORD time; // request time
- int manager; // manager processing request (if any)
- //--- user info
- int login; // user login
- char group[16]; // user group
- double balance; // user balance
- double credit; // user credit
- //--- processing trade transaction
- double prices[2]; // bid/ask
- TradeTransInfo trade; // trade transaction
- int gw_volume; // gateway order volume
- int gw_order; // gateway order ticket
- short gw_price; // gateway order price deviation (pips) from request price
- //---
- RequestInfo* __ptr32 prev;
- RequestInfo* __ptr32 next; // (internal use)
- };
- //--- trade request status
- enum { DC_EMPTY,DC_REQUEST,DC_LOCKED,DC_ANSWERED,DC_RESETED,DC_CANCELED };
- //--- time conversion ratio
- #define TIME_RATE ((double)1.6777216)
- //--- conversion from our time to standard __time32_t
- #define STDTIME(custom_time) ((DWORD)((double)(custom_time)*TIME_RATE))
- //--- conversion from standard __time32_t to our time
- #define OURTIME(stdtime) ((DWORD)((double)(stdtime)/TIME_RATE))
- //--- request confirmation modes
- enum EnConfirmModes
- {
- CONFIRM_MODE_ADD_PRICES=0x00000001, // throw in prices
- CONFIRM_MODE_PACKET =0x00000002 // multiple execution
- };
- //+------------------------------------------------------------------+
- //| Daily report |
- //+------------------------------------------------------------------+
- struct DailyReport
- {
- int login; // login
- __time32_t ctm; // time
- char group[16]; // group
- char bank[64]; // bank
- double balance_prev; // previous balance
- double balance; // balance
- double deposit; // deposit
- double credit; // credit
- double profit_closed; // closed profit/loss
- double profit; // floating profit/loss
- double equity; // equity
- double margin; // used margin
- double margin_free; // free margin
- //---
- int next; // (internal)
- int reserved[3]; // reserved
- };
- //+------------------------------------------------------------------+
- //| Reports request |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct ReportGroupRequest
- {
- char name[32]; // request group name
- __time32_t from; // from
- __time32_t to; // to
- int total; // total logins in request group
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Daily reports request |
- //+------------------------------------------------------------------+
- struct DailyGroupRequest
- {
- char name[32]; // group name
- __time32_t from; // from
- __time32_t to; // to
- int total; // total logins in request group
- int reserved; // reserved
- };
- //+------------------------------------------------------------------+
- //| Selected symbol information |
- //+------------------------------------------------------------------+
- struct SymbolInfo
- {
- char symbol[12]; // symbol name
- int digits; // floating point digits
- int count; // symbol counter
- int visible; // visibility
- //---
- int type; // symbol type (symbols group index)
- double point; // symbol point=1/pow(10,digits)
- int spread; // symbol spread
- int spread_balance; // spread balance
- //---
- int direction; // direction
- int updateflag; // update flag
- __time32_t lasttime; // last tick time
- double bid,ask; // bid, ask
- double high,low; // high, low
- double commission; // commission
- int comm_type; // commission type
- };
- //--- symbol price direction
- enum { SDIR_UP,SDIR_DOWN,SDIR_NONE };
- //+------------------------------------------------------------------+
- //| Symbol summary |
- //+------------------------------------------------------------------+
- struct SymbolSummary
- {
- char symbol[12]; // symbol
- int count; // symbol counter
- int digits; // floating point digits
- int type; // symbol type (symbol group index)
- //--- clients summary
- int orders; // number of client orders
- __int64 buylots; // buy volume
- __int64 selllots; // sell volume
- double buyprice; // average buy price
- double sellprice; // average sell price
- double profit; // clients profit
- //--- coverage summary
- int covorders; // number of coverage orders
- __int64 covbuylots; // buy volume
- __int64 covselllots; // sell volume
- double covbuyprice; // average buy price
- double covsellprice; // average sell price
- double covprofit; // coverage profit
- };
- //+------------------------------------------------------------------+
- //| Currence exposure |
- //+------------------------------------------------------------------+
- struct ExposureValue
- {
- char currency[4]; // currency
- double clients; // clients volume
- double coverage; // coverage volume
- };
- //+------------------------------------------------------------------+
- //| Symbol properties |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct SymbolPropertiesOld
- {
- char symbol[12]; // symbol
- COLORREF color; // symbol color
- int spread; // symbol spread
- int spread_balance; // spread balance
- int stops_level; // stops level
- int exemode; // execution mode
- };
- #pragma pack(pop)
- //---
- #pragma pack(push,1)
- struct SymbolProperties
- {
- char symbol[12]; // symbol
- COLORREF color; // symbol color
- int spread; // symbol spread
- int spread_balance; // spread balance
- int stops_level; // stops level
- int smoothing; // smoothing
- int exemode; // execution mode
- int reserved[8]; // reserved
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Symbol tick |
- //+------------------------------------------------------------------+
- struct TickInfo
- {
- char symbol[12]; // symbol
- __time32_t ctm; // tick time
- double bid; // bid
- double ask; // ask
- };
- //+------------------------------------------------------------------+
- //| Mail |
- //+------------------------------------------------------------------+
- struct MailBox
- {
- __time32_t time; // receive time
- int sender; // mail sender (login)
- char from[64]; // mail sender (name)
- int to; // mail recipient
- char subject[128]; // mail sumbect
- int readed; // readed flag
- char* __ptr32 body; // pointer to mail body
- int bodylen; // mail body length
- short build_min; // minimum build
- short build_max; // maximum build
- int reserved; // reserved
- };
- //+------------------------------------------------------------------+
- //| News topic |
- //+------------------------------------------------------------------+
- struct NewsTopic
- {
- ULONG key; // news key
- __time32_t time; // news time
- char ctm[32]; // news source time ("yyyy/mm/dd hh:mm:ss")
- char topic[256]; // news topic
- char category[64]; // news category
- char keywords[256]; // news keywords
- char* __ptr32 body; // body (if present)
- int bodylen; // body length
- int readed; // readed flag
- int priority; // news priority: 0-general, 1-high
- int langid; // news LANGID
- int reserved[1];
- };
- //+------------------------------------------------------------------+
- //| Extended news structure |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct NewsTopicNew
- {
- //--- constants
- enum constants
- {
- MAX_NEWS_BODY_LEN=15*1024*1024 // max. body len
- };
- //--- news topic flags
- enum EnNewsFlags
- {
- FLAG_PRIORITY =1, // priority flag
- FLAG_CALENDAR =2, // calendar item flag
- FLAG_MIME =4, // MIME news content
- FLAG_ALLOW_DEMO =8 // allow body for demo accounts
- };
- ULONG key; // news key
- UINT language; // news language (WinAPI LANGID)
- wchar_t subject[256]; // news subject
- wchar_t category[256]; // news category
- UINT flags; // EnNewsFlags
- wchar_t* __ptr32 body; // body
- UINT body_len; // body length
- UINT languages_list[32]; // list of languages available for news
- INT64 datetime; // news time
- UINT reserved[30]; // reserved
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Server journal record |
- //+------------------------------------------------------------------+
- struct ServerLog
- {
- int code; // code
- char time[24]; // time
- char ip[256]; // ip
- char message[512]; // message
- };
- //--- log record codes
- enum EnErrLogTypes {
- CmdOK, // OK
- CmdTrade, // trades only
- CmdLogin, // logins only
- CmdWarn, // warnings
- CmdErr, // errors
- CmdAtt // attention, important errors
- };
- //--- request logs type
- enum EnLogType {
- LOG_TYPE_STANDARD=0, // all except logins
- LOG_TYPE_LOGINS =1, // logins only
- LOG_TYPE_TRADES =2, // trades only
- LOG_TYPE_ERRORS =3, // errors
- LOG_TYPE_FULL =4, // full log
- //---
- LOG_TYPE_UPDATER =16, // live update
- LOG_TYPE_SENDMAIL=17, // send mail
- LOG_TYPE_FAILOVER=18 // failover
- };
- //--- request logs type
- enum EnLogMode {
- LOG_MODE_ENABLED, // manager api logs enabled
- LOG_MODE_DISABLED, // manager api logs disabled
- };
- //+------------------------------------------------------------------+
- //| Balance check |
- //+------------------------------------------------------------------+
- #pragma pack(push,1)
- struct BalanceDiff
- {
- int login;
- double diff;
- };
- #pragma pack(pop)
- //+------------------------------------------------------------------+
- //| Pumping notification codes |
- //+------------------------------------------------------------------+
- enum
- {
- PUMP_START_PUMPING=0, // pumping started
- PUMP_UPDATE_SYMBOLS, // update symbols
- PUMP_UPDATE_GROUPS, // update groups
- PUMP_UPDATE_USERS, // update users
- PUMP_UPDATE_ONLINE, // update online users
- PUMP_UPDATE_BIDASK, // update bid/ask
- PUMP_UPDATE_NEWS, // update news
- PUMP_UPDATE_NEWS_BODY, // update news body
- PUMP_UPDATE_MAIL, // update news
- PUMP_UPDATE_TRADES, // update trades
- PUMP_UPDATE_REQUESTS, // update trade requests
- PUMP_UPDATE_PLUGINS, // update server plugins
- PUMP_UPDATE_ACTIVATION, // new order for activation (sl/sp/stopout)
- PUMP_UPDATE_MARGINCALL, // new margin calls
- PUMP_STOP_PUMPING, // pumping stopped
- PUMP_PING, // ping
- PUMP_UPDATE_NEWS_NEW, // update news in new format (NewsTopicNew structure)
- };
- //+------------------------------------------------------------------+
- //| Dealing notification codes |
- //+------------------------------------------------------------------+
- enum
- {
- DEAL_START_DEALING=0, // dealing dispatcher started
- DEAL_REQUEST_NEW, // new request
- DEAL_STOP_DEALING // dealing dispatcher stopped
- };
- //+------------------------------------------------------------------+
- //| Notification callback function |
- //+------------------------------------------------------------------+
- typedef void (__stdcall *MTAPI_NOTIFY_FUNC)(int code);
- //+------------------------------------------------------------------+
- //| Notification callback function |
- //+------------------------------------------------------------------+
- typedef void (__stdcall *MTAPI_NOTIFY_FUNC_EX)(int code,int type,void * data,void *param);
- //+------------------------------------------------------------------+
- //| MetaTrader Manager Interface |
- //+------------------------------------------------------------------+
- class CManagerInterface
- {
- public:
- //--- dummy methods for delphi
- virtual int __stdcall QueryInterface(REFIID riid,LPVOID* obj)=0;
- virtual int __stdcall AddRef() =0;
- //--- release
- virtual int __stdcall Release()=0;
- //--- service methods
- virtual void __stdcall MemFree(void* ptr) =0;
- virtual LPCSTR __stdcall ErrorDescription(const int code)=0;
- virtual void __stdcall WorkingDirectory(LPCSTR path) =0;
- //--- connection
- virtual int __stdcall Connect(LPCSTR server) =0;
- virtual int __stdcall Disconnect() =0;
- virtual int __stdcall IsConnected() =0;
- virtual int __stdcall Login(const int login,LPCSTR password)=0;
- virtual int __stdcall LoginSecured(LPCSTR key_path) =0;
- virtual int __stdcall KeysSend(LPCSTR key_path) =0;
- virtual int __stdcall Ping() =0;
- virtual int __stdcall PasswordChange(LPCSTR pass,const int is_investor)=0;
- virtual int __stdcall ManagerRights(ConManager *man) =0;
- //--- server administration commands
- virtual int __stdcall SrvRestart() =0;
- virtual int __stdcall SrvChartsSync() =0;
- virtual int __stdcall SrvLiveUpdateStart()=0;
- virtual int __stdcall SrvFeedsRestart() =0;
- //--- server configuration
- //--- configuration request
- virtual int __stdcall CfgRequestCommon(ConCommon *cfg)=0;
- virtual int __stdcall CfgRequestTime(ConTime *cfg) =0;
- virtual int __stdcall CfgRequestBackup(ConBackup *cfg)=0;
- virtual int __stdcall CfgRequestSymbolGroup(ConSymbolGroup *cfg)=0;
- virtual ConAccess* __stdcall CfgRequestAccess(int *total) =0;
- virtual ConDataServer* __stdcall CfgRequestDataServer(int *total)=0;
- virtual ConHoliday* __stdcall CfgRequestHoliday(int *total) =0;
- virtual ConSymbol* __stdcall CfgRequestSymbol(int *total) =0;
- virtual ConGroup* __stdcall CfgRequestGroup(int *total) =0;
- virtual ConManager* __stdcall CfgRequestManager(int *total) =0;
- virtual ConFeeder* __stdcall CfgRequestFeeder(int *total) =0;
- virtual ConLiveUpdate* __stdcall CfgRequestLiveUpdate(int *total)=0;
- virtual ConSync* __stdcall CfgRequestSync(int *total) =0;
- virtual ConPluginParam* __stdcall CfgRequestPlugin(int *total) =0;
- //--- configuration update
- virtual int __stdcall CfgUpdateCommon(const ConCommon* cfg) =0;
- virtual int __stdcall CfgUpdateAccess(const ConAccess* cfg,const int pos) =0;
- virtual int __stdcall CfgUpdateDataServer(const ConDataServer *cfg,const int pos) =0;
- virtual int __stdcall CfgUpdateTime(const ConTime *cfg) =0;
- virtual int __stdcall CfgUpdateHoliday(const ConHoliday *cfg,const int pos) =0;
- virtual int __stdcall CfgUpdateSymbol(const ConSymbol *cfg) =0;
- virtual int __stdcall CfgUpdateSymbolGroup(const ConSymbolGroup *cfg,const int pos)=0;
- virtual int __stdcall CfgUpdateGroup(const ConGroup *cfg) =0;
- virtual int __stdcall CfgUpdateManager(const ConManager *cfg) =0;
- virtual int __stdcall CfgUpdateFeeder(const ConFeeder *cfg) =0;
- virtual int __stdcall CfgUpdateBackup(const ConBackup *cfg) =0;
- virtual int __stdcall CfgUpdateLiveUpdate(const ConLiveUpdate *cfg) =0;
- virtual int __stdcall CfgUpdateSync(const ConSync *cfg) =0;
- virtual int __stdcall CfgUpdatePlugin(const ConPlugin *cfg,const PluginCfg *parupd,const int total)=0;
- //--- configuration delete
- virtual int __stdcall CfgDeleteAccess(const int pos) =0;
- virtual int __stdcall CfgDeleteDataServer(const int pos)=0;
- virtual int __stdcall CfgDeleteHoliday(const int pos) =0;
- virtual int __stdcall CfgDeleteSymbol(const int pos) =0;
- virtual int __stdcall CfgDeleteGroup(const int pos) =0;
- virtual int __stdcall CfgDeleteManager(const int pos) =0;
- virtual int __stdcall CfgDeleteFeeder(const int pos) =0;
- virtual int __stdcall CfgDeleteLiveUpdate(const int pos)=0;
- virtual int __stdcall CfgDeleteSync(const int pos) =0;
- //--- configuration shift
- virtual int __stdcall CfgShiftAccess(const int pos,const int shift) =0;
- virtual int __stdcall CfgShiftDataServer(const int pos,const int shift)=0;
- virtual int __stdcall CfgShiftHoliday(const int pos,const int shift) =0;
- virtual int __stdcall CfgShiftSymbol(const int pos,const int shift) =0;
- virtual int __stdcall CfgShiftGroup(const int pos,const int shift) =0;
- virtual int __stdcall CfgShiftManager(const int pos,const int shift) =0;
- virtual int __stdcall CfgShiftFeeder(const int pos,const int shift) =0;
- virtual int __stdcall CfgShiftLiveUpdate(const int pos,const int shift)=0;
- virtual int __stdcall CfgShiftSync(const int pos,const int shift) =0;
- virtual int __stdcall CfgShiftPlugin(const int pos,const int shift) =0;
- //--- server feeders
- virtual ServerFeed* __stdcall SrvFeeders(int *total) =0;
- virtual LPSTR __stdcall SrvFeederLog(LPCSTR name,int *len)=0;
- //--- chart bases
- virtual RateInfoOld* __stdcall ChartRequestObsolete(const ChartInfo *chart,__time32_t *timesign,int *total) =0;
- virtual int __stdcall ChartAddObsolete(LPCSTR symbol,const int period,const RateInfoOld* rates,int *count) =0;
- virtual int __stdcall ChartUpdateObsolete(LPCSTR symbol,const int period,const RateInfoOld* rates,int *count)=0;
- virtual int __stdcall ChartDeleteObsolete(LPCSTR symbol,const int period,const RateInfoOld* rates,int *count)=0;
- //--- performance info
- virtual PerformanceInfo* __stdcall PerformanceRequest(__time32_t from,int *total)=0;
- //--- users/trades backups
- virtual BackupInfo* __stdcall BackupInfoUsers(const int mode,int *total) =0;
- virtual BackupInfo* __stdcall BackupInfoOrders(const int mode,int *total)=0;
- virtual UserRecord* __stdcall BackupRequestUsers(LPCSTR file,LPCSTR request,int *total) =0;
- virtual TradeRecord* __stdcall BackupRequestOrders(LPCSTR file,LPCSTR request,int *total)=0;
- virtual int __stdcall BackupRestoreUsers(const UserRecord *users,const int total) =0;
- virtual TradeRestoreResult* __stdcall BackupRestoreOrders(const TradeRecord *trades,int *total)=0;
- //--- administrator databases commands
- virtual UserRecord* __stdcall AdmUsersRequest(LPCSTR group,int *total) =0;
- virtual TradeRecord* __stdcall AdmTradesRequest(LPCSTR group,const int open_only,int *total)=0;
- virtual int __stdcall AdmBalanceCheckObsolete(int *logins,int *total) =0;
- virtual int __stdcall AdmBalanceFix(const int *logins,const int total) =0;
- virtual int __stdcall AdmTradesDelete(const int *orders,const int total)=0;
- virtual int __stdcall AdmTradeRecordModify(const TradeRecord *trade) =0;
- //--- symbols
- virtual int __stdcall SymbolsRefresh() =0;
- virtual ConSymbol* __stdcall SymbolsGetAll(int *total) =0;
- virtual int __stdcall SymbolGet(LPCSTR symbol,ConSymbol *cs) =0;
- virtual int __stdcall SymbolInfoGet(LPCSTR symbol,SymbolInfo *si)=0;
- virtual int __stdcall SymbolAdd(LPCSTR symbol) =0;
- virtual int __stdcall SymbolHide(LPCSTR symbol) =0;
- //--- symbol commands
- virtual int __stdcall SymbolChangeObsolete(const SymbolPropertiesOld *prop)=0;
- virtual int __stdcall SymbolSendTick(LPCSTR symbol,const double bid,const double ask)=0;
- //--- manager commands
- virtual ConGroup* __stdcall GroupsRequest(int *total) =0;
- virtual int __stdcall MailSend(const MailBox* mail,const int *logins)=0;
- virtual int __stdcall NewsSend(const NewsTopic *news) =0;
- //--- journal
- virtual ServerLog* __stdcall JournalRequest(const int mode,const __time32_t from,const __time32_t to,LPCSTR filter,int *total)=0;
- //--- databases: direct request to the server
- //--- users
- virtual UserRecord* __stdcall UsersRequest(int *total) =0;
- virtual UserRecord* __stdcall UserRecordsRequest(const int *logins,int *total)=0;
- virtual int __stdcall UserRecordNew(UserRecord *user) =0;
- virtual int __stdcall UserRecordUpdate(const UserRecord *user) =0;
- virtual int __stdcall UsersGroupOp(const GroupCommandInfo *info,const int *logins)=0;
- virtual int __stdcall UserPasswordCheck(const int login,LPCSTR password)=0;
- virtual int __stdcall UserPasswordSet(const int login,LPCSTR password,const int change_investor,const int clean_pubkey)=0;
- virtual OnlineRecord* __stdcall OnlineRequest(int *total) =0;
- //--- orders
- virtual int __stdcall TradeTransaction(TradeTransInfo *info) =0;
- virtual TradeRecord* __stdcall TradesRequest(int *total) =0;
- virtual TradeRecord* __stdcall TradeRecordsRequest(const int *orders,int *total)=0;
- virtual TradeRecord* __stdcall TradesUserHistory(const int login,const __time32_t from,const __time32_t to,int *total)=0;
- virtual int __stdcall TradeCheckStops(const TradeTransInfo *trade,const double price)=0;
- //--- reports
- virtual TradeRecord* __stdcall ReportsRequest(const ReportGroupRequest *req,const int *logins,int *total) =0;
- virtual DailyReport* __stdcall DailyReportsRequest(const DailyGroupRequest *req,const int *logins,int *total)=0;
- //--- external command
- virtual int __stdcall ExternalCommand(LPCSTR data_in,const int size_in,LPSTR *data_out,int *size_out)=0;
- //--- plugins
- virtual int __stdcall PluginUpdate(const ConPluginParam *plugin)=0;
- //--- pumping
- virtual int __stdcall PumpingSwitch(MTAPI_NOTIFY_FUNC pfnFunc,const HWND destwnd,const UINT eventmsg,const int flags)=0;
- virtual ConGroup* __stdcall GroupsGet(int *total) =0;
- virtual int __stdcall GroupRecordGet(LPCSTR name,ConGroup *group) =0;
- virtual int __stdcall SymbolInfoUpdated(SymbolInfo *si,const int max_info) =0;
- virtual UserRecord* __stdcall UsersGet(int *total) =0;
- virtual int __stdcall UserRecordGet(const int login,UserRecord *user) =0;
- virtual OnlineRecord* __stdcall OnlineGet(int *total) =0;
- virtual int __stdcall OnlineRecordGet(const int login,OnlineRecord *user) =0;
- virtual TradeRecord* __stdcall TradesGet(int *total) =0;
- virtual TradeRecord* __stdcall TradesGetBySymbol(LPCSTR symbol,int *total) =0;
- virtual TradeRecord* __stdcall TradesGetByLogin(const int login,LPCSTR group,int *total)=0;
- virtual TradeRecord* __stdcall TradesGetByMarket(int *total) =0;
- virtual int __stdcall TradeRecordGet(const int order,TradeRecord *trade) =0;
- virtual int __stdcall TradeClearRollback(const int order) =0;
- virtual MarginLevel* __stdcall MarginsGet(int *total) =0;
- virtual int __stdcall MarginLevelGet(const int login,LPCSTR group,MarginLevel *margin)=0;
- virtual RequestInfo* __stdcall RequestsGet(int *total) =0;
- virtual int __stdcall RequestInfoGet(const int pos,RequestInfo *info) =0;
- virtual ConPlugin* __stdcall PluginsGet(int *total) =0;
- virtual int __stdcall PluginParamGet(const int pos,ConPluginParam *plugin) =0;
- virtual int __stdcall MailLast(LPSTR path,int *length) =0;
- virtual NewsTopic* __stdcall NewsGet(int *total) =0;
- virtual int __stdcall NewsTotal() =0;
- virtual int __stdcall NewsTopicGet(const int pos,NewsTopic *news) =0;
- virtual void __stdcall NewsBodyRequest(const int key) =0;
- virtual LPSTR __stdcall NewsBodyGet(const int key) =0;
- //--- dealing
- virtual int __stdcall DealerSwitch(MTAPI_NOTIFY_FUNC pfnFunc,const HWND destwnd,const UINT eventmsg)=0;
- virtual int __stdcall DealerRequestGet(RequestInfo *info) =0;
- virtual int __stdcall DealerSend(const RequestInfo *info,const int requote,const int mode)=0;
- virtual int __stdcall DealerReject(const int id) =0;
- virtual int __stdcall DealerReset(const int id) =0;
- //---
- virtual TickInfo* __stdcall TickInfoLast(LPCSTR symbol,int *total)=0;
- virtual int __stdcall SymbolsGroupsGet(ConSymbolGroup *grp) =0;
- virtual __time32_t __stdcall ServerTime() =0;
- virtual MailBox* __stdcall MailsRequest(int *total) =0;
- //--- risk management
- virtual SymbolSummary* __stdcall SummaryGetAll(int *total) =0;
- virtual int __stdcall SummaryGet(LPCSTR symbol,SymbolSummary *info) =0;
- virtual int __stdcall SummaryGetByCount(const int symbol,SymbolSummary *info)=0;
- virtual int __stdcall SummaryGetByType(const int sectype,SymbolSummary *info)=0;
- virtual int __stdcall SummaryCurrency(LPSTR cur,const int maxchars) =0;
- virtual ExposureValue* __stdcall ExposureGet(int *total) =0;
- virtual int __stdcall ExposureValueGet(LPCSTR cur,ExposureValue *info) =0;
- //---
- virtual int __stdcall MarginLevelRequest(const int login,MarginLevel *level) =0;
- virtual int __stdcall HistoryCorrect(LPCSTR symbol,int *updated) =0;
- //--- new chart bases
- virtual RateInfo * __stdcall ChartRequest(const ChartInfo *chart,__time32_t *timesign,int *total) =0;
- virtual int __stdcall ChartAdd(LPCSTR symbol,const int period,const RateInfo *rates,int *count) =0;
- virtual int __stdcall ChartUpdate(LPCSTR symbol,const int period,const RateInfo *rates,int *count)=0;
- virtual int __stdcall ChartDelete(LPCSTR symbol,const int period,const RateInfo *rates,int *count)=0;
- //--- ticks base
- virtual TickRecord* __stdcall TicksRequest(const TickRequest *request,int *total)=0;
- //--- internal methods
- virtual int __stdcall PumpingSwitchEx(MTAPI_NOTIFY_FUNC_EX pfnFunc,const int flags,void *param)=0;
- virtual int __stdcall UsersSyncStart(const __time32_t timestamp)=0;
- virtual UserRecord* __stdcall UsersSyncRead(int* users_total)=0;
- virtual int* __stdcall UsersSnapshot(int* users_total)=0;
- virtual int __stdcall TradesSyncStart(const __time32_t timestamp)=0;
- virtual TradeRecord* __stdcall TradesSyncRead(int* trades_total)=0;
- virtual int* __stdcall TradesSnapshot(int* trades_total)=0;
- virtual int __stdcall DailySyncStart(const __time32_t timestamp)=0;
- virtual DailyReport* __stdcall DailySyncRead(int* daily_total)=0;
- //--- profit recalculation
- virtual int __stdcall TradeCalcProfit(TradeRecord *trade)=0;
- //--- new symbol commands
- virtual int __stdcall SymbolChange(const SymbolProperties *prop) =0;
- //--- network statistics
- virtual int __stdcall BytesSent()=0;
- virtual int __stdcall BytesReceived()=0;
- //---
- virtual int __stdcall ManagerCommon(ConCommon *common)=0;
- //--- log access
- virtual void __stdcall LogsOut(const int code,LPCSTR source,LPCSTR msg)=0;
- virtual void __stdcall LogsMode(const int mode)=0;
- //--- check license
- virtual int __stdcall LicenseCheck(LPCSTR license_name)=0;
- //--- gateway configs
- virtual ConGatewayAccount* __stdcall CfgRequestGatewayAccount(int *total)=0;
- virtual ConGatewayMarkup* __stdcall CfgRequestGatewayMarkup(int *total)=0;
- virtual ConGatewayRule* __stdcall CfgRequestGatewayRule(int *total)=0;
- //--- configuration update
- virtual int __stdcall CfgUpdateGatewayAccount(const ConGatewayAccount* cfg)=0;
- virtual int __stdcall CfgUpdateGatewayMarkup(const ConGatewayMarkup* cfg)=0;
- virtual int __stdcall CfgUpdateGatewayRule(const ConGatewayRule *cfg)=0;
- //--- configuration delete
- virtual int __stdcall CfgDeleteGatewayAccount(const int pos)=0;
- virtual int __stdcall CfgDeleteGatewayMarkup(const int pos)=0;
- virtual int __stdcall CfgDeleteGatewayRule(const int pos)=0;
- //--- configuration shift
- virtual int __stdcall CfgShiftGatewayAccount(const int pos,const int shift)=0;
- virtual int __stdcall CfgShiftGatewayMarkup(const int pos,const int shift)=0;
- virtual int __stdcall CfgShiftGatewayRule(const int pos,const int shift)=0;
- //--- administrator databases commands
- virtual BalanceDiff* __stdcall AdmBalanceCheck(int *logins,int *total)=0;
- //--- notifications
- virtual int __stdcall NotificationsSend(LPWSTR metaquotes_ids,LPCWSTR message)=0;
- virtual int __stdcall NotificationsSend(const int* logins,const UINT logins_total,LPCWSTR message)=0;
- };
- //+------------------------------------------------------------------+
- //| Functions |
- //+------------------------------------------------------------------+
- typedef int (*MtManVersion_t)(void);
- typedef int (*MtManCreate_t)(int version,CManagerInterface **man);
- //+------------------------------------------------------------------+
- //| Factory |
- //+------------------------------------------------------------------+
- #ifndef _MT4MANDLL
- class CManagerFactory
- {
- private:
- HMODULE m_lib;
- MtManVersion_t m_pfnManVersion;
- MtManCreate_t m_pfnManCreate;
- public:
- //--- constructor
- CManagerFactory(LPCSTR lib_path=NULL):m_lib(NULL)
- {
- Init(lib_path);
- }
- //--- destructor
- ~CManagerFactory()
- {
- if(m_lib)
- {
- m_pfnManVersion=NULL;
- m_pfnManCreate =NULL;
- ::FreeLibrary(m_lib);
- m_lib=NULL;
- }
- }
- //--- initialization
- inline void Init(LPCSTR lib_path=NULL)
- {
- char path[256]="";
- //---
- if(lib_path!=NULL)
- {
- strcpy_s(path,lib_path);
- path[sizeof(path)-1]=0;
- }
- else
- {
- #ifndef _WIN64
- strcpy_s(path,"mtmanapi.dll");
- path[sizeof(path)-1]=0;
- #else
- strcpy_s(path,"mtmanapi64.dll");
- path[sizeof(path)-1]=0;
- #endif
- }
- //---
- if(m_lib)
- ::FreeLibrary(m_lib);
- if((m_lib=::LoadLibraryA(path))!=NULL)
- {
- m_pfnManVersion=reinterpret_cast<MtManVersion_t>(::GetProcAddress(m_lib,"MtManVersion"));
- m_pfnManCreate =reinterpret_cast<MtManCreate_t>(::GetProcAddress(m_lib,"MtManCreate"));
- }
- else
- {
- m_pfnManVersion=NULL;
- m_pfnManCreate =NULL;
- }
- //---
- }
- //--- winsock startup/cleanup
- inline int WinsockStartup() const
- {
- WSADATA wsa;
- return(WSAStartup(0x0202,&wsa)!=0 ? RET_ERROR:RET_OK);
- }
- inline void WinsockCleanup() const
- {
- WSACleanup();
- }
- //---
- inline int IsValid() const
- {
- return(m_lib!=NULL && m_pfnManVersion!=NULL && m_pfnManCreate!=NULL) ? TRUE:FALSE;
- }
- inline int Version() const
- {
- return(m_pfnManVersion?(*m_pfnManVersion)():0);
- }
- inline CManagerInterface* Create(const int version) const
- {
- CManagerInterface *man=NULL;
- if(m_pfnManCreate) (*m_pfnManCreate)(version,&man);
- return(man);
- }
- };
- #endif
- //+------------------------------------------------------------------+
|