Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 28

 
Renat:

У MQL5 есть встроенные средства мониторинга памяти: https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/cterminalinfo/cterminalinfomemoryused

Спасибо. То что нужно. Сделал скрипт и ... замерил. В документации ошибка TERMINAL_MEMORY_TOTAL и TERMINAL_MEMORY_AVAILABLE так и не понял, что они выдают и в каких измерениях, но похоже не то что задумано.
 
paladin800:

Подскажите как правельнее в коде проверять условия, напр:

По совокупности 1 самый нормальный.
 
Использую стандартную библиотеку, чтобы получать текущий бид:

CSymbolInfo m_symbol;

m_symbol.Bid()


В тестере (Все тики, М1) получаю, что это не текущий бид, а цена открытия бара. Может я чего-то не дочитал? Как правильно проверять цену по тикам, чтоб в тестере отрабатывалось корректно?

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
tyun:
Использую стандартную библиотеку, чтобы получать текущий бид:

CSymbolInfo m_symbol;

m_symbol.Bid()


В тестере (Все тики, М1) получаю, что это не текущий бид, а цена открытия бара. Может я чего-то не дочитал? Как правильно проверять цену по тикам, чтоб в тестере отрабатывалось корректно?

https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinforefreshrates
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates
  • www.mql5.com
Стандартная библиотека / Торговые классы / CSymbolInfo / RefreshRates - Документация по MQL5
 

Открываю сделку с помощью CTrade со стоплоссом.

А как отловить момент закрытия сделки по стоплоссу в методе OnTrade или OnTransactionTrade?

 Знаю тикет, знаю диал, но в OnTransactionTrade они всегда другие (хотя понятно почему)

 
WiND:

Открываю сделку с помощью CTrade со стоплоссом.

А как отловить момент закрытия сделки по стоплоссу в методе OnTrade или OnTransactionTrade?

 Знаю тикет, знаю диал, но в OnTransactionTrade они всегда другие (хотя понятно почему)

По комментарию можно узнать была ли закрыта позиция по Stop Loss/Take Profit. Для Stop Loss проверяйте в комментарии sl, а для Take Profit tp.
 
tol64:
По комментарию можно узнать была ли закрыта позиция по Stop Loss/Take Profit. Для Stop Loss проверяйте в комментарии sl, а для Take Profit tp.

Про комментарий я думал, но насколько я помню комментарии могут изменяться сервером. 

Вообще, мне не важно закрыт он будет по стоплоссу, или по тейкпрофиту, или вручную человеком.

Главное идентифицировать сам момент закрытия конкретного ордера

 
WiND:

Про комментарий я думал, но насколько я помню комментарии могут изменяться сервером. 

Вообще, мне не важно закрыт он будет по стоплоссу, или по тейкпрофиту, или вручную человеком.

Главное идентифицировать сам момент закрытия конкретного ордера

Можно ещё по идентификатору DEAL_ENTRY_OUT из перечисления ENUM_DEAL_ENTRY понять, что позиция была закрыта.

Справка: Свойства сделок.

 

Здравствуйте!

У меня есть советник в MQl4 надо перевести в MQL5. Помогите пожалуйста, разобраться с функцией CopyBuffer().

В  MQl4 код выглядит так:

....
int start()
{ 
   induk_real1 = iCustom(NULL, PERIOD_H1, "Laguerre", gamma, 950, 0, 0);
   induk1 = NormalizeDouble(induk_real1,2);
 
   if(OrdersTotal( )<1){
  
   if(induk1==1) {

......
}}}

 В MQL5 так. При компиляции выдает ошибку 'CopyBuffer' - no one of the overloads can be applied to the function call.

....
int OnInit()
  {
   SymbolSelect(_Symbol,true);
   induk_handle = iCustom(NULL,PERIOD_H1,"Laguerre",gamma); 
   return(0);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
   CopyBuffer(induk_handle,0,1,2,induk_real1);
   induk1 = NormalizeDouble(induk_real1,2);
   
    if(OrdersTotal()<1){
    if(induk1==1) {
    ......
     }}}   
 
Aid:

Здравствуйте!

У меня есть советник в MQl4 надо перевести в MQL5. Помогите пожалуйста, разобраться с функцией CopyBuffer().

В  MQl4 код выглядит так:

 В MQL5 так. При компиляции выдает ошибку 'CopyBuffer' - no one of the overloads can be applied to the function call.

induk_real1 - должен быть массив.
Причина обращения: