
- www.mql5.com
- Помощь Copilot - Разработка программ
- Возможности веб-версии - MetaTrader 5
- Гибкая торговая система MetaTrader 5 со всеми видами ордеров
чуть не забыл это в мт4
Вам как, кодом или подсказать в какую сторону идти?
Если подсказать, то как-то так.
- Объявляем одну глобальную переменную типа int, называем, например "PrevCountOrders"
- В теле start, объявляем переменную currentCountOrders
- На каждом тике в цикле пробегаем по ордерам, проверяем символ, тип и т.п.
- Если нужный нам ордер, добавляем к переменной currentCountOrders единицу.
- По окончанию цикла, проверяем, если PrevCountOrders не равно currentCountOrder, то записываем значение currentCountOrder в PrevCountOrders, ну а далее ...(Выполняем что хотим)
Если кодом, в теории вот так:
#property copyright "mrProF 2012" #property link "http://" int PrevCountOrders = -1; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int total = OrdersTotal(); int currentCountOrders = 0; for (int i = 0;i<total;i++) { if (OrderSelect(i,SELECT_BY_POS)) { if (OrderSymbol()!=Symbol()) //Считаем только на текущем символе { continue; } //if (OrderType()>OP_SELL) //Чтобы считать без отложенных //{ // continue; //} currentCountOrders++; } } if (PrevCountOrders==-1)//пропускам при первом тике, или можно не пропускать, тогда удалить этот блок { return(0); } if (currentCountOrders-PrevCountOrders==1) { Print("Было: ",PrevCountOrders," стало: ",currentCountOrders); PrevCountOrders = currentCountOrders; //Вот тут творим, что хотим } //---- return(0); } //+------------------------------------------------------------------+
спасибо большое. правда я чуть по проще сделал
int prevtotal;
int start()
{
if(OrdersTotal()>prevtotal) { prevtotal=OrdersTotal(); то...; }
Здравствуйте.
Вам как, кодом или подсказать в какую сторону идти?
Если подсказать, то как-то так.
- Объявляем одну глобальную переменную типа int, называем, например "PrevCountOrders"
- В теле start, объявляем переменную currentCountOrders
- На каждом тике в цикле пробегаем по ордерам, проверяем символ, тип и т.п.
- Если нужный нам ордер, добавляем к переменной currentCountOrders единицу.
- По окончанию цикла, проверяем, если PrevCountOrders не равно currentCountOrder, то записываем значение currentCountOrder в PrevCountOrders, ну а далее ...(Выполняем что хотим)
Если кодом, в теории вот так
А вот если откроется больше одного, то не сработает.
В общем я написал то, что Вы просили в первом сообщении, для конкретных задач, нужно подходить по другому.
Вам вобще это для чего?
хочу сделать советник который будет отправлять определенные сообщения при появлении ордера на определенной паре при этом для каждой волютной пары будет отдельное сообщение, а сов будет устанавливаться только на одну пару.
хочу сделать советник который будет отправлять определенные сообщения при появлении ордера на определенной паре при этом для каждой волютной пары будет отдельное сообщение, а сов будет устанавливаться только на одну пару.
Сейчас накидаю.
Так, взял код отсюда https://book.mql4.com/ru/build/structure
Чуток переделал, вырезал лишнее.Архив распаковать в experts, скомпилировать controler и индикатор inform(его можно накинуть на график, там всякая фигня писаться будет).
В файле Events я добавил Print, в тех местах можно вставить отправку сообщений. Так-же куча комментарий.
- book.mql4.com

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования