class COrderSend
Класс для отправки торговых ордеров в MetaTrader 5 через синхронные вызовы OrderSend.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «cordersend.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
COrderSend — это MQL5-библиотека (include-файл), предоставляющая набор классов для программной отправки и управления торговыми ордерами в MetaTrader 5. Библиотека содержит два класса: синхронный COrderSend и асинхронный COrderSendAsync, каждый из которых реализует аналогичный набор методов для работы с торговым сервером.
Основные возможности включают отправку рыночных ордеров (MarketOrder), отложенных ордеров типов Limit, Stop и StopLimit, а также модификацию ордеров, изменение стоп-лосса и тейк-профита, удаление отложенных ордеров. Для каждого действия предусмотрены синхронные и асинхронные варианты вызова.
Внутри классов используются стандартные структуры MQL5 (MqlTradeRequest, MqlTradeResult) и торговые функции OrderSend / OrderSendAsync. Доступ к результатам операций осуществляется через вспомогательные методы получения кода возврата и тикета ордера. Библиотека не содержит пользовательских настроек и не требует параметров конфигурации.
Классов: 2 · методов: 18 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 0
class COrderSend
Класс для отправки торговых ордеров в MetaTrader 5 через синхронные вызовы OrderSend.
class COrderSendAsync
Класс для отправки торговых ордеров в MetaTrader 5 через асинхронные вызовы OrderSendAsync.
bool MarketOrder(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const string comment,const int magic)
Отправка рыночного ордера (BUY/SELL) на указанный инструмент с заданным объёмом, комментарием и magic-номером.
bool PendingOrderLimit(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const double price,const double sl,const double tp, const string comment,const int magic)
Отправка отложенного ордера типа Limit (Buy/Sell Limit) с ценой открытия, стоп-лоссом, тейком-профитом и параметрами.
bool PendingOrderStop(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const double price,const double sl,const double tp, const string comment,const int magic)
Отправка отложенного ордера типа Stop (Buy/Sell Stop) с ценой срабатывания, стоп-лоссом и тейком-профитом.
bool PendingOrderStopLimit(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const double price,const double stoplimit, const double sl,const double tp,const string comment,const int magic)
Отправка отложенного ордера типа StopLimit (Buy/Sell Stop Limit) с ценой, stoplimit, стоп-лоссом и тейком-профитом.
bool ModifyOrder(ulong order_ticket,const double price,const double stoplimit,const double sl,const double tp,const string comment,const int magic)
Модификация существующего ордера по его тикету: изменение цены, stoplimit, стоп-лосса и тейка-профита.
bool ModifySLTP(const string symbol,const double sl,const double tp,const string comment,const int magic)
Модификация стоп-лосса и тейк-профита у открытой позиции на указанном инструменте.
bool RemoveOrder(const string symbol,ulong order_ticket,const string comment,const int magic)
Удаление отложенного ордера по его тикету на указанном инструменте.
bool CheckPriceRange(const string a_symbol, const double price)
Проверка, находится ли указанная цена в допустимом диапазоне цены инструмента (в пределах сессионных лимитов).
uint AccessRetcode()
Возврат кода результата последней торговой операции из структуры результата.
ulong AccessOrderTicket()
Возврат тикета последнего отправленного ордера из структуры результата.
bool MarketOrderAsync(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const string comment,const int magic)
Асинхронная отправка рыночного ордера (BUY/SELL) на указанный инструмент с заданным объёмом, комментарием и magic-номером.
bool PendingOrderLimitAsync(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const double price,const double sl,const double tp, const string comment,const int magic)
Асинхронная отправка отложенного ордера типа Limit с ценой, стоп-лоссом, тейком-профитом и параметрами.
bool PendingOrderStopAsync(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const double price,const double sl,const double tp, const string comment,const int magic)
Асинхронная отправка отложенного ордера типа Stop с ценой срабатывания, стоп-лоссом и тейком-профитом.
bool PendingOrderStopLimitAsync(const string symbol,const int volume,const ENUM_ORDER_TYPE order_type,const double price,const double stoplimit, const double sl,const double tp,const string comment,const int magic)
Асинхронная отправка отложенного ордера типа StopLimit с ценой, stoplimit, стоп-лоссом и тейком-профитом.
bool ModifyOrderAsync(ulong order_ticket,const double price,const double stoplimit,const double sl,const double tp,const string comment,const int magic)
Асинхронная модификация существующего ордера по тикету: изменение цены, stoplimit, стоп-лосса и тейка-профита.
bool ModifySLTPAsync(const string symbol,const double sl,const double tp,const string comment,const int magic)
Асинхронная модификация стоп-лосса и тейк-профита у позиции на указанном инструменте.
bool RemoveOrderAsync(const string symbol,ulong order_ticket,const string comment,const int magic)
Асинхронное удаление отложенного ордера по его тикету на указанном инструменте.
uint AccessRetcode()
Возврат кода результата последней асинхронной торговой операции из структуры результата.
??/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
/ / | C O r d e r S e n d |
/ / | ;0AA >1@01>B:8 >@45@>2 |
/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
# p r o p e r t y c o p y r i g h t " C o p y r i g h t 2 0 1 7 "
# p r o p e r t y l i n k " "
# p r o p e r t y s t r i c t
/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
/ / | A l l p o s s i b l e f u n c t i o n d O r d e r S e n d ( )
/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
c l a s s C O r d e r S e n d
{
p r i v a t e :
M q l T r a d e R e q u e s t m _ r e q u e s t ; / / AB@C:BC@0 70?@>A0 =0 18@6C
M q l T r a d e C h e c k R e s u l t m _ c h e c k _ r e s u l t ; / / AB@C:BC@0 >B25B0 =0 ?@>25@:C
/ / M q l T r a d e R e s u l t m _ r e s u l t ;
v o i d C l e a r S t r u c t u r e s ( v o i d ) ;
p u b l i c :
M q l T r a d e R e s u l t m _ r e s u l t ;
/ / c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e ; / / >B25B =0 B@0=70:F8N
/ / 1 . @K=>G=K9 >@45@ =0 ?>:C?:C 8;8 ?@>406C A 2KAB02;5=85< 70O2:8 =0 ?;0=:C
b o o l M a r k e t O r d e r ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 2 . B>@3>2K9 ?@8:07 =0 CAB0=>2:C >B;>65==>3> >@45@0 ( ;8<8B:0)
b o o l P e n d i n g O r d e r L i m i t ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 ,
c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 3 . CAB0=>2:0 >B;>65==>3> AB>? >@45@0 ( AB>? ?> @K=:C A 2KAB02;5=85< 70O2:8 =0 ?;0=:C ?@8 A@010BK20=88)
b o o l P e n d i n g O r d e r S t o p ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 ,
c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 4 . > 4>AB865=88 F5=K >@45@0 2KAB02;O5BAO >B;>65==K9 >@45@ B u y / S e l l L i m i t ?> F5=5 S t o p L i m i t
b o o l P e n d i n g O r d e r S t o p L i m i t ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s t o p l i m i t ,
c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 5 . 87<5=8BL >B;>65==K9 >@45@
b o o l M o d i f y O r d e r ( u l o n g o r d e r _ t i c k e t , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s t o p l i m i t , c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 6 . 87<5=8BL C >B:@KB>9 ?>7K AB>? 8 ?@>D8B
b o o l M o d i f y S L T P ( c o n s t s t r i n g s y m b o l , c o n s t d o u b l e s l , c o n s t d o u b l e t p , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 7 . C40;5=85 >B;>65==>3> >@45@0
b o o l R e m o v e O r d e r ( c o n s t s t r i n g s y m b o l , u l o n g o r d e r _ t i c k e t , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 8 . ?@>25@:0 =0 <0:A8<0;L=CN- <8=8<0;L=CN F5=C
b o o l C h e c k P r i c e R a n g e ( c o n s t s t r i n g a _ s y m b o l , c o n s t d o u b l e p r i c e ) ;
u i n t A c c e s s R e t c o d e ( ) { r e t u r n m _ r e s u l t . r e t c o d e ; }
u l o n g A c c e s s O r d e r T i c k e t ( ) { r e t u r n m _ r e s u l t . o r d e r ; }
} ;
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
c l a s s C O r d e r S e n d A s y n c
{
p r i v a t e :
M q l T r a d e R e q u e s t m _ r e q u e s t ; / / AB@C:BC@0 70?@>A0 =0 18@6C
M q l T r a d e R e s u l t m _ r e s u l t ;
v o i d C l e a r S t r u c t u r e s ( v o i d ) ;
p u b l i c :
/ / c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e ; / / >B25B =0 B@0=70:F8N
/ / 1 . @K=>G=K9 >@45@ =0 ?>:C?:C 8;8 ?@>406C A 2KAB02;5=85< 70O2:8 =0 ?;0=:C
b o o l M a r k e t O r d e r A s y n c ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 2 . B>@3>2K9 ?@8:07 =0 CAB0=>2:C >B;>65==>3> >@45@0 ( ;8<8B:0)
b o o l P e n d i n g O r d e r L i m i t A s y n c ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 ,
c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 3 . CAB0=>2:0 >B;>65==>3> AB>? >@45@0 ( AB>? ?> @K=:C A 2KAB02;5=85< 70O2:8 =0 ?;0=:C ?@8 A@010BK20=88)
b o o l P e n d i n g O r d e r S t o p A s y n c ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 ,
c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 4 . > 4>AB865=88 F5=K >@45@0 2KAB02;O5BAO >B;>65==K9 >@45@ B u y / S e l l L i m i t ?> F5=5 S t o p L i m i t
b o o l P e n d i n g O r d e r S t o p L i m i t A s y n c ( c o n s t s t r i n g s y m b o l , c o n s t i n t v o l u m e , c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s t o p l i m i t ,
c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 5 . 87<5=8BL >B;>65==K9 >@45@
b o o l M o d i f y O r d e r A s y n c ( u l o n g o r d e r _ t i c k e t , c o n s t d o u b l e p r i c e , c o n s t d o u b l e s t o p l i m i t , c o n s t d o u b l e s l = 0 . 0 , c o n s t d o u b l e t p = 0 . 0 , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 6 . 87<5=8BL C >B:@KB>9 ?>7K AB>? 8 ?@>D8B
b o o l M o d i f y S L T P A s y n c ( c o n s t s t r i n g s y m b o l , c o n s t d o u b l e s l , c o n s t d o u b l e t p , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
/ / 7 . C40;5=85 >B;>65==>3> >@45@0
b o o l R e m o v e O r d e r A s y n c ( c o n s t s t r i n g s y m b o l , u l o n g o r d e r _ t i c k e t , c o n s t s t r i n g c o m m e n t = " " , c o n s t i n t m a g i c = 0 ) ;
u i n t A c c e s s R e t c o d e ( ) { r e t u r n m _ r e s u l t . r e t c o d e ; }
} ;
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
v o i d C O r d e r S e n d : : C l e a r S t r u c t u r e s ( )
{
Z e r o M e m o r y ( m _ r e q u e s t ) ;
Z e r o M e m o r y ( m _ r e s u l t ) ;
}
v o i d C O r d e r S e n d A s y n c : : C l e a r S t r u c t u r e s ( )
{
Z e r o M e m o r y ( m _ r e q u e s t ) ;
Z e r o M e m o r y ( m _ r e s u l t ) ;
}
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
/ / " +" " |
/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
b o o l C O r d e r S e n d : : M a r k e t O r d e r ( c o n s t s t r i n g s y m b o l ,
c o n s t i n t v o l u m e ,
c o n s t E N U M _ O R D E R _ T Y P E o r d e r _ t y p e ,
c o n s t s t r i n g c o m m e n t ,
c o n s t i n t m a g i c = 0 )
{
i f ( I s S t o p p e d ( ) ) r e t u r n ( f a l s e ) ;
C l e a r S t r u c t u r e s ( ) ;
i f ( o r d e r _ t y p e ! = O R D E R _ T Y P E _ B U Y &