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

 
Alexey Viktorov:

Очевидно, что сравнить цену «вчера» и «сегодня». Грубо говоря, какая была и какая теперь. Если изменилась, значит это то что надо.

То есть, мне где-то хранить вчерашнюю цену? В OnTradeTransaction я же её получить не могу?

 
leonerd:

То есть, мне где-то хранить вчерашнюю цену? В OnTradeTransaction я же её получить не могу?

Только при размещении ордера. Тип транзакции TRADE_TRANSACTION_ORDER_ADD

А потом её надо хранить до изменения.

 

Вы к

Alexey Viktorov:

Только при размещении ордера. Тип транзакции TRADE_TRANSACTION_ORDER_ADD

А потом её надо хранить до изменения.

Как вы вообще себе представляете это? Я храню в каком-то массиве или списке все ордера и их цены открытия. Каждый раз при обновлении (TRADE_TRANSACTION_ORDER_UPDATE) я пробегаю по этому списку с целью отыскать ордер с нужным тикетом? Неужели нет поэлегантнее решения?

 
leonerd:

Вы к

Как вы вообще себе представляете это? Я храню в каком-то массиве или списке все ордера и их цены открытия. Каждый раз при обновлении (TRADE_TRANSACTION_ORDER_UPDATE) я пробегаю по этому списку с целью отыскать ордер с нужным тикетом? Неужели нет поэлегантнее решения?

Смотря какая цель ловли обновления. Может просто перезаполнить массив?

 
Alexey Viktorov:

Смотря какая цель ловли обновления. Может просто перезаполнить массив?

А какая разница какая цель? Вопрос ведь в том, почему такое очевидное событие так трудно отловить, при том, что там до жути других менее используемых и нужных свойств. В данном случае цель - нотификация (алерт). 

 
leonerd:

А какая разница какая цель? Вопрос ведь в том, почему такое очевидное событие так трудно отловить, при том, что там до жути других менее используемых и нужных свойств. В данном случае цель - нотификация (алерт). 

Так вот именно это очевидное событие и выделено в тип транзакции. Попробуйте библиотеку Тришкина в 58ми статьях. Может в ней есть простой вариант.

 
в 58ми статьях

Ну спасибо ))

Подозреваю, что он так же ведёт свой реестр.

Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состояния ORDER_STATE_STARTED в ORDER_STATE_PLACED или из ORDER_STATE_PLACED в ORDER_STATE_PARTIAL и т.д.).


Мне достаточно было бы знать, что это не первый ORDER_STATE_PLACED по конкретному тикету ордера.

Получается два TRADE_TRANSACTION_ORDER_UPDATE приходят при первом размещении ордера. Вот, а третий мне бы уже подошёл, как изменение, которое в моем случае только изменение цены. Либо второй ORDER_STATE_PLACED.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 
Надо еще ORDER_TIME_SETUP проверить. Он каждый раз новый?
 
Сделал по примеру с МТ4 "СТРОКИ: ТАБЛИЦА СИМВОЛОВ ASCII И ЕЁ ИСПОЛЬЗОВАНИЕ"

//+------------------------------------------------------------------+
//| StringLowerCase |
//+------------------------------------------------------------------+
string StringLowerCase(string str)
  {
   string s = str;
   int lenght = StringLen(str) - 1, symbol;
   while(lenght >= 0)
     {
      symbol = StringGetChar(s, lenght);
      if((symbol > 64 && symbol < 91) || (symbol > 191 && symbol < 224))
         s = StringSetChar(s, lenght, symbol + 32);// тут possible loss of data due to type conversion
      else
         if(symbol > -65 && symbol < -32)
            s = StringSetChar(s, lenght, symbol + 288);// тут possible loss of data due to type conversion
      lenght--;
     }
   return(s);
  }
//+------------------------------------------------------------------+
//| StringUpperCase |
//+------------------------------------------------------------------+
string StringUpperCase(string str)
  {
   string s = str;
   int lenght = StringLen(str) - 1, symbol;
   while(lenght >= 0)
     {
      symbol = StringGetChar(s, lenght);
      if((symbol > 96 && symbol < 123) || (symbol > 223 && symbol < 256))
         s = StringSetChar(s, lenght, symbol - 32);// тут possible loss of data due to type conversion
      else
         if(symbol > -33 && symbol < 0)
            s = StringSetChar(s, lenght, symbol + 224);// тут possible loss of data due to type conversion
      lenght--;
     }
   return(s);
  }

Если не сложно помоги пожалуйста исправить..
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Приведение типов - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SGarnov:
Сделал по примеру с МТ4 "СТРОКИ: ТАБЛИЦА СИМВОЛОВ ASCII И ЕЁ ИСПОЛЬЗОВАНИЕ"


Если не сложно помоги пожалуйста исправить..

StringSetChart() bool же возвращает, вроде как. А вы к стринговой переменной присваиваете.. Если в этом вопрос.