| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- //+------------------------------------------------------------------+
- //| MetaTrader 5 API |
- //| Copyright 2000-2019, MetaQuotes Software Corp. |
- //| http://www.metaquotes.net |
- //+------------------------------------------------------------------+
- #pragma once
- //+------------------------------------------------------------------+
- //| Client record interface |
- //+------------------------------------------------------------------+
- class IMTClient
- {
- public:
- //--- genders
- enum EnGender
- {
- GENDER_UNSPECIFIED =0, // unspecified
- GENDER_MALE =1, // male
- GENDER_FEMALE =2, // female
- //--- enumeration borders
- GENDER_FIRST =GENDER_UNSPECIFIED,
- GENDER_LAST =GENDER_FEMALE
- };
- //--- client types
- enum EnClientType
- {
- CLIENT_TYPE_UNDEFINED =0, // undefined
- CLIENT_TYPE_INDIVIDUAL =1, // individual person
- CLIENT_TYPE_CORPORATE =2, // corporate
- CLIENT_TYPE_FUND =3, // fund
- //--- enumeration borders
- CLIENT_TYPE_FIRST =CLIENT_TYPE_UNDEFINED,
- CLIENT_TYPE_LAST =CLIENT_TYPE_FUND
- };
- //--- client statuses
- enum EnClientStatus
- {
- //--- demo account registered
- CLIENT_STATUS_UNREGISTERED =0, // anonymous client (demo account without any data)
- CLIENT_STATUS_REGISTERED =100, // client that opened demo account and filled contact data
- CLIENT_STATUS_NOTINTERESTED =200, // client that opened demo account and filled contact data, but doesn't have interest to open real account
- //--- preliminary account registered
- CLIENT_STATUS_APPLICATION_INCOMPLETED=300, // client that filled data for real account
- CLIENT_STATUS_APPLICATION_COMPLETED =400, // client that filled data for real account and attached all documents
- CLIENT_STATUS_APPLICATION_INFORMATION=500, // need more information for next processing to open real account
- CLIENT_STATUS_APPLICATION_REJECTED =600, // client was rejected
- //--- client
- CLIENT_STATUS_APPROVED =700, // client with real account
- CLIENT_STATUS_FUNDED =800, // client that was funded his real account
- CLIENT_STATUS_ACTIVE =900, // client that have trading activity for some period
- CLIENT_STATUS_INACTIVE =1000, // client that haven't trading activity for some period
- CLIENT_STATUS_SUSPENDED =1100, // client that was suspended
- //--- closed
- CLIENT_STATUS_CLOSED =1200, // closed by himself
- CLIENT_STATUS_TERMINATED =1300, // closed by company
- //--- enumeration borders
- CLIENT_STATUS_FIRST =CLIENT_STATUS_UNREGISTERED,
- CLIENT_STATUS_LAST =CLIENT_STATUS_TERMINATED
- };
- //--- preferred communications
- enum EnPreferredCommunication
- {
- PREFERRED_COMMUNICATION_UNDEFINED =0, // undefined
- PREFERRED_COMMUNICATION_EMAIL =1, // email
- PREFERRED_COMMUNICATION_PHONE =2, // phone
- PREFERRED_COMMUNICATION_PHONE_SMS =3, // SMS
- PREFERRED_COMMUNICATION_MESSENGER =4, // messenger
- //--- enumeration borders
- PREFERRED_COMMUNICATION_FIRST =PREFERRED_COMMUNICATION_UNDEFINED,
- PREFERRED_COMMUNICATION_LAST =PREFERRED_COMMUNICATION_MESSENGER,
- };
- //--- experiences
- enum EnTradingExperience
- {
- EXPERIENCE_LESS_1_YEAR =0, // less than one year
- EXPERIENCE_1_3_YEAR =1, // from one to three years
- EXPERIENCE_ABOVE_3_YEAR =2, // above three years
- //--- enumeration borders
- EXPERIENCE_FIRST =EXPERIENCE_LESS_1_YEAR,
- EXPERIENCE_LAST =EXPERIENCE_ABOVE_3_YEAR,
- };
- //--- employments
- enum EnEmployment
- {
- EMPLOYMENT_UNEMPLOYED =0, // unemployed
- EMPLOYMENT_EMPLOYED =1, // employed
- EMPLOYMENT_SELF_EMPLOYED =2, // self employed
- EMPLOYMENT_RETIRED =3, // retired
- EMPLOYMENT_STUDENT =4, // student
- EMPLOYMENT_OTHER =5, // other
- //--- enumeration borders
- EMPLOYMENT_FIRST =EMPLOYMENT_UNEMPLOYED,
- EMPLOYMENT_LAST =EMPLOYMENT_OTHER
- };
- //--- employment industries
- enum EnEmploymentIndustry
- {
- INDUSTRY_NONE =0, // none
- INDUSTRY_AGRICULTURE =1, // agriculture
- INDUSTRY_CONSTRUCTION =2, // construction
- INDUSTRY_MANAGEMENT =3, // management
- INDUSTRY_COMMUNICATION =4, // communication
- INDUSTRY_EDUCATION =5, // education
- INDUSTRY_GOVERNMENT =6, // government
- INDUSTRY_HEALTHCARE =7, // health care
- INDUSTRY_TOURISM =8, // tourism
- INDUSTRY_IT =9, // IT
- INDUSTRY_SECURITY =10, // security
- INDUSTRY_MANUFACTURING =11, // manufacturing
- INDUSTRY_MARKETING =12, // marketing
- INDUSTRY_SCIENCE =13, // science
- INDUSTRY_ENGINEERING =14, // engineering
- INDUSTRY_TRANSPORT =15, // transport
- INDUSTRY_OTHER =16, // other
- //--- enumeration borders
- INDUSTRY_FIRST =INDUSTRY_AGRICULTURE,
- INDUSTRY_LAST =INDUSTRY_OTHER
- };
- //--- education levels
- enum EnEducationLevel
- {
- EDUCATION_LEVEL_NONE =0, // none
- EDUCATION_LEVEL_HIGH_SCHOOL =1, // high school
- EDUCATION_LEVEL_BACHELOR =2, // bachelor
- EDUCATION_LEVEL_MASTER =3, // master
- EDUCATION_LEVEL_PHD =4, // PHD
- EDUCATION_LEVEL_OTHER =5, // other
- //--- enumeration borders
- EDUCATION_LEVEL_FIRST =EDUCATION_LEVEL_NONE,
- EDUCATION_LEVEL_LAST =EDUCATION_LEVEL_OTHER
- };
- //--- wealth sources
- enum EnWealthSource
- {
- WEALTH_SOURCE_EMPLOYMENT =0, // employment
- WEALTH_SOURCE_SAVINGS =1, // savings
- WEALTH_SOURCE_INHERITANCE =2, // inheritance
- WEALTH_SOURCE_OTHER =3, // other
- //--- enumeration borders
- WEALTH_SOURCE_FIRST =WEALTH_SOURCE_EMPLOYMENT,
- WEALTH_SOURCE_LAST =WEALTH_SOURCE_OTHER
- };
- //--- client origins
- enum EnClientOrigin
- {
- CLIENT_ORIGIN_MANUAL =0, // manual created
- CLIENT_ORIGIN_DEMO =1, // automatic was created from demo account
- CLIENT_ORIGIN_CONTEST =2, // automatic was created from contest account
- CLIENT_ORIGIN_PRELIMINARY =3, // automatic was created from preliminary account
- CLIENT_ORIGIN_REAL =4, // automatic was created from real account
- //--- enumeration borders
- CLIENT_ORIGIN_FIRST =CLIENT_ORIGIN_MANUAL,
- CLIENT_ORIGIN_LAST =CLIENT_ORIGIN_REAL,
- };
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTClient* client)=0;
- virtual MTAPIRES Clear(void)=0;
- //--- record id
- virtual UINT64 RecordID(void) const=0;
- virtual MTAPIRES RecordID(const UINT64 record_id)=0;
- //--- client type
- virtual UINT ClientType(void) const=0;
- virtual MTAPIRES ClientType(const UINT type)=0;
- //--- client status
- virtual UINT ClientStatus(void) const=0;
- virtual MTAPIRES ClientStatus(const UINT status)=0;
- //--- assigned manager
- virtual UINT64 AssignedManager(void) const=0;
- virtual MTAPIRES AssignedManager(const UINT64 manager)=0;
- //--- compliance approved by
- virtual UINT64 ComplianceApprovedBy(void) const=0;
- virtual MTAPIRES ComplianceApprovedBy(const UINT64 manager)=0;
- //--- compliance client category
- virtual LPCWSTR ComplianceClientCategory(void) const=0;
- virtual MTAPIRES ComplianceClientCategory(LPCWSTR category)=0;
- //--- compliance date approval
- virtual INT64 ComplianceDateApproval(void) const=0;
- virtual MTAPIRES ComplianceDateApproval(const INT64 date)=0;
- //--- compliance date termination
- virtual INT64 ComplianceDateTermination(void) const=0;
- virtual MTAPIRES ComplianceDateTermination(const INT64 date)=0;
- //--- lead campaign
- virtual LPCWSTR LeadCampaign(void) const=0;
- virtual MTAPIRES LeadCampaign(LPCWSTR campaign)=0;
- //--- lead source
- virtual LPCWSTR LeadSource(void) const=0;
- virtual MTAPIRES LeadSource(LPCWSTR source)=0;
- //--- introducer
- virtual LPCWSTR Introducer(void) const=0;
- virtual MTAPIRES Introducer(LPCWSTR introducer)=0;
- //--- person title
- virtual LPCWSTR PersonTitle(void) const=0;
- virtual MTAPIRES PersonTitle(LPCWSTR title)=0;
- //--- person name
- virtual LPCWSTR PersonName(void) const=0;
- virtual MTAPIRES PersonName(LPCWSTR name)=0;
- //--- person middle name
- virtual LPCWSTR PersonMiddleName(void) const=0;
- virtual MTAPIRES PersonMiddleName(LPCWSTR middle_name)=0;
- //--- person last name
- virtual LPCWSTR PersonLastName(void) const=0;
- virtual MTAPIRES PersonLastName(LPCWSTR last_name)=0;
- //--- person birth date
- virtual INT64 PersonBirthDate(void) const=0;
- virtual MTAPIRES PersonBirthDate(const INT64 date)=0;
- //--- person citizenship
- virtual LPCWSTR PersonCitizenship(void) const=0;
- virtual MTAPIRES PersonCitizenship(LPCWSTR citizenship)=0;
- //--- person gender
- virtual UINT PersonGender(void) const=0;
- virtual MTAPIRES PersonGender(const UINT gender)=0;
- //--- person taxid
- virtual LPCWSTR PersonTaxID(void) const=0;
- virtual MTAPIRES PersonTaxID(LPCWSTR taxid)=0;
- //--- person document type
- virtual LPCWSTR PersonDocumentType(void) const=0;
- virtual MTAPIRES PersonDocumentType(LPCWSTR type)=0;
- //--- person document number
- virtual LPCWSTR PersonDocumentNumber(void) const=0;
- virtual MTAPIRES PersonDocumentNumber(LPCWSTR number)=0;
- //--- person document date
- virtual INT64 PersonDocumentDate(void) const=0;
- virtual MTAPIRES PersonDocumentDate(const INT64 date)=0;
- //--- person document extra
- virtual LPCWSTR PersonDocumentExtra(void) const=0;
- virtual MTAPIRES PersonDocumentExtra(LPCWSTR extra)=0;
- //--- person employment
- virtual UINT PersonEmployment(void) const=0;
- virtual MTAPIRES PersonEmployment(const UINT employment)=0;
- //--- person industry
- virtual UINT PersonIndustry(void) const=0;
- virtual MTAPIRES PersonIndustry(const UINT industry)=0;
- //--- person education
- virtual UINT PersonEducation(void) const=0;
- virtual MTAPIRES PersonEducation(const UINT education)=0;
- //--- person wealth source
- virtual UINT PersonWealthSource(void) const=0;
- virtual MTAPIRES PersonWealthSource(const UINT source)=0;
- //--- person annual income
- virtual double PersonAnnualIncome(void) const=0;
- virtual MTAPIRES PersonAnnualIncome(const double income)=0;
- //--- person net worth
- virtual double PersonNetWorth(void) const=0;
- virtual MTAPIRES PersonNetWorth(const double worth)=0;
- //--- person annual deposit
- virtual double PersonAnnualDeposit(void) const=0;
- virtual MTAPIRES PersonAnnualDeposit(const double deposit)=0;
- //--- company name
- virtual LPCWSTR CompanyName(void) const=0;
- virtual MTAPIRES CompanyName(LPCWSTR name)=0;
- //--- company registration number
- virtual LPCWSTR CompanyRegNumber(void) const=0;
- virtual MTAPIRES CompanyRegNumber(LPCWSTR number)=0;
- //--- company registration date
- virtual INT64 CompanyRegDate(void) const=0;
- virtual MTAPIRES CompanyRegDate(const INT64 date)=0;
- //--- company registration authority
- virtual LPCWSTR CompanyRegAuthority(void) const=0;
- virtual MTAPIRES CompanyRegAuthority(LPCWSTR authority)=0;
- //--- company VAT
- virtual LPCWSTR CompanyVat(void) const=0;
- virtual MTAPIRES CompanyVat(LPCWSTR vat)=0;
- //--- company LEI
- virtual LPCWSTR CompanyLei(void) const=0;
- virtual MTAPIRES CompanyLei(LPCWSTR lei)=0;
- //--- company license number
- virtual LPCWSTR CompanyLicenseNumber(void) const=0;
- virtual MTAPIRES CompanyLicenseNumber(LPCWSTR number)=0;
- //--- company license authority
- virtual LPCWSTR CompanyLicenseAuthority(void) const=0;
- virtual MTAPIRES CompanyLicenseAuthority(LPCWSTR authority)=0;
- //--- company country
- virtual LPCWSTR CompanyCountry(void) const=0;
- virtual MTAPIRES CompanyCountry(LPCWSTR country)=0;
- //--- company address
- virtual LPCWSTR CompanyAddress(void) const=0;
- virtual MTAPIRES CompanyAddress(LPCWSTR address)=0;
- //--- company website
- virtual LPCWSTR CompanyWebsite(void) const=0;
- virtual MTAPIRES CompanyWebsite(LPCWSTR website)=0;
- //--- contact preferred
- virtual UINT ContactPreferred(void) const=0;
- virtual MTAPIRES ContactPreferred(const UINT preferred)=0;
- //--- contact language
- virtual LPCWSTR ContactLanguage(void) const=0;
- virtual MTAPIRES ContactLanguage(LPCWSTR language)=0;
- //--- contact email
- virtual LPCWSTR ContactEmail(void) const=0;
- virtual MTAPIRES ContactEmail(LPCWSTR email)=0;
- //--- contact phone
- virtual LPCWSTR ContactPhone(void) const=0;
- virtual MTAPIRES ContactPhone(LPCWSTR phone)=0;
- //--- contact messengers
- virtual LPCWSTR ContactMessengers(void) const=0;
- virtual MTAPIRES ContactMessengers(LPCWSTR messengers)=0;
- //--- contact social networks
- virtual LPCWSTR ContactSocialNetworks(void) const=0;
- virtual MTAPIRES ContactSocialNetworks(LPCWSTR social_networks)=0;
- //--- ñontact last date
- virtual INT64 ContactLastDate(void) const=0;
- virtual MTAPIRES ContactLastDate(const INT64 date)=0;
- //--- address country
- virtual LPCWSTR AddressCountry(void) const=0;
- virtual MTAPIRES AddressCountry(LPCWSTR country)=0;
- //--- address postcode
- virtual LPCWSTR AddressPostcode(void) const=0;
- virtual MTAPIRES AddressPostcode(LPCWSTR postcode)=0;
- //--- address street
- virtual LPCWSTR AddressStreet(void) const=0;
- virtual MTAPIRES AddressStreet(LPCWSTR street)=0;
- //--- address state
- virtual LPCWSTR AddressState(void) const=0;
- virtual MTAPIRES AddressState(LPCWSTR state)=0;
- //--- address city
- virtual LPCWSTR AddressCity(void) const=0;
- virtual MTAPIRES AddressCity(LPCWSTR city)=0;
- //--- experience of FX
- virtual UINT ExperienceFX(void) const=0;
- virtual MTAPIRES ExperienceFX(const UINT experience)=0;
- //--- experience of CFD
- virtual UINT ExperienceCFD(void) const=0;
- virtual MTAPIRES ExperienceCFD(const UINT experience)=0;
- //--- experience of Futures
- virtual UINT ExperienceFutures(void) const=0;
- virtual MTAPIRES ExperienceFutures(const UINT experience)=0;
- //--- experience of Stocks
- virtual UINT ExperienceStocks(void) const=0;
- virtual MTAPIRES ExperienceStocks(const UINT experience)=0;
- //--- trading group
- virtual LPCWSTR TradingGroup(void) const=0;
- virtual MTAPIRES TradingGroup(LPCWSTR group)=0;
- //--- client origin
- virtual UINT ClientOrigin(void) const=0;
- virtual MTAPIRES ClientOrigin(const UINT origin)=0;
- //--- client origin login
- virtual UINT64 ClientOriginLogin(void) const=0;
- virtual MTAPIRES ClientOriginLogin(const UINT64 login)=0;
- //--- external ID
- virtual LPCWSTR ClientExternalID(void) const=0;
- virtual MTAPIRES ClientExternalID(LPCWSTR external_id)=0;
- };
- //+------------------------------------------------------------------+
- //| Client array interface |
- //+------------------------------------------------------------------+
- class IMTClientArray
- {
- public:
- //--- common methods
- virtual void Release(void)=0;
- virtual MTAPIRES Assign(const IMTClientArray* array)=0;
- virtual MTAPIRES Clear(void)=0;
- //--- add
- virtual MTAPIRES Add(IMTClient* client)=0;
- virtual MTAPIRES AddCopy(const IMTClient* client)=0;
- virtual MTAPIRES Add(IMTClientArray* array)=0;
- virtual MTAPIRES AddCopy(const IMTClientArray* array)=0;
- //--- delete & detach
- virtual MTAPIRES Delete(const UINT pos)=0;
- virtual IMTClient *Detach(const UINT pos)=0;
- //--- update
- virtual MTAPIRES Update(const UINT pos,IMTClient* client)=0;
- virtual MTAPIRES UpdateCopy(const UINT pos,const IMTClient* client)=0;
- virtual MTAPIRES Shift(const UINT pos,const int shift)=0;
- //--- data access
- virtual UINT Total(void) const=0;
- virtual IMTClient*Next(const UINT index) const=0;
- //--- sorting and search
- virtual MTAPIRES Sort(MTSortFunctionPtr sort_function)=0;
- virtual int Search(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchGreatOrEq(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchGreater(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchLessOrEq(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchLess(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchLeft(const void *key,MTSortFunctionPtr sort_function) const=0;
- virtual int SearchRight(const void *key,MTSortFunctionPtr sort_function) const=0;
- };
- //+------------------------------------------------------------------+
- //| Client records notification interface |
- //+------------------------------------------------------------------+
- class IMTClientSink
- {
- public:
- //--- events
- virtual void OnClientAdd(const IMTClient* /*client*/) { }
- virtual void OnClientUpdate(const IMTClient* /*client*/) { }
- virtual void OnClientDelete(const IMTClient* /*client*/) { }
- };
- //+------------------------------------------------------------------+
|