Простой эксперт

 

Здравствуйте. Подскажите, пожалуйста, где найти код эксперта (или блок учета ордеров), где сделка может быть открыта только одна и закрывается либо по стопу, либо по тейку, т.е. советник не будет постоянно держать открытую позу - будут периоды "вне рынка" до наступления нового сигнала.

Общими усилиями соберем стандартный "надежный" набор блоков советника, в который потом каждый сможет вставить свою "секретную" функцию с условиями входа?

Вот что-то, от чего отталкиваться: 

Файлы:
exp_0.mq4  13 kb
 
Yaroslav Gladkov:

Уже написан. Полгода назад на экспертизу мною была отправлена статья на эту тему. Сказали, что не дошла, хотя и поныне черновик висит как на проверке.

Оч. жаль, но мне уже не хочется ей заниматься. Код, можно сказать, утерян - перестановка компа.

 
Yaroslav Gladkov:

Здравствуйте. Подскажите, пожалуйста, где найти код эксперта (или блок учета ордеров), где сделка может быть открыта только одна и закрывается либо по стопу, либо по тейку, т.е. советник не будет постоянно держать открытую позу - будут периоды "вне рынка" до наступления нового сигнала.

Ну дык и проверьте наличие в рынке ордеров OP_BUY, OP_SELL с требуемым магиком и названием инструмента.

 

int CalculateCurrentOrders(int mode) {

   int num=0;

   for(int i=0;i<OrdersTotal();i++) {

      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

      if (OrderMagicNumber() == MAGIC)

      if (OrderSymbol() == Symbol())

      if ((OrderType()==mode) || (mode==-1)) num++;

     }

   return(num);

}

 
Yuriy Asaulenko:

Уже написан. Полгода назад на экспертизу мною была отправлена статья на эту тему. Сказали, что не дошла, хотя и поныне черновик висит как на проверке.

Оч. жаль, но мне уже не хочется ей заниматься. Код, можно сказать, утерян - перестановка компа.

Гениальная, очевидно, статья была по подсчету открытых ордеров в рынке.
 

Если МТ4 то вот

https://www.mql5.com/ru/forum/131859 

Только "Полезные функции от KimIV". (Yuriy Tokman) - MQL4 форум
Только "Полезные функции от KimIV". (Yuriy Tokman) - MQL4 форум
  • www.mql5.com
Только "Полезные функции от KimIV". (Yuriy Tokman) - MQL4 форум
 
Sergey Deev:

Ну дык и проверьте наличие в рынке ордеров OP_BUY, OP_SELL (жесть)с требуемым магиком и названием инструмента.

 

int CalculateCurrentOrders(int mode) {

   int num=0;

   for(int i=0;i<OrdersTotal();i++) {

      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

      if (OrderMagicNumber() == MAGIC)

      if (OrderSymbol() == Symbol())

      if ((OrderType()==mode) || (mode==-1)) num++;

     }

   return(num);

}

И что за бред выйдет на выходе, если ввести в mode = -1 ? нужно посчитать позиции, так он будет считать и ордера, в итоге если будет висеть ордер, то он не откроет позицию до тех пор, пока не удалите ордер,или он не превратится в позицию и не закроется.

Вы считайте или позиции, или ордера! Вы и на заказ такое пишете, или это опечатка? 

 
Vitaly Muzichenko:

И что за бред выйдет на выходе, если ввести в mode = -1 ? нужно посчитать позиции, так он будет считать и ордера, в итоге если будет висеть ордер, то он не откроет позицию до тех пор, пока не удалите ордер,или он не превратится в позицию и не закроется.

Вы считайте или позиции, или ордера! Вы и на заказ такое пишете, или это опечатка? 

А вы ум включите прежде чем свой бред писать..

- CalculateCurrentOrders(OP_BUY) - подсчет buy-ордеров;

- CalculateCurrentOrders(OP_SELL) - подсчет sell-ордеров; 

- CalculateCurrentOrders(-1) - подсчет всех открытых и отложенных ордеров. 

 
Sergey Deev:

А вы ум включите прежде чем свой бред писать..

- CalculateCurrentOrders(OP_BUY) - подсчет buy-ордеров;

- CalculateCurrentOrders(OP_SELL) - подсчет sell-ордеров; 

- CalculateCurrentOrders(-1) - подсчет всех открытых и отложенных ордеров. 

Ну так если мне нужно подсчитать бай и селл, значит по логике нужно поставить CalculateCurrentOrders(-1)  , ну или изворачиваться, сначала получать количество бай, потом селл и их плюсовать, как-то не вяжется, если в расчёте нужны только позиции. Я так и написал, но вы оказывается ещё и читать не умеете, что если ввести -1, то на выходе получим лабуду, он будет считать всё, что нужно, и не нужно.
 
Vitaly Muzichenko:
Ну так если мне нужно подсчитать бай и селл, значит по логике нужно поставить CalculateCurrentOrders(-1)  , ну или изворачиваться, сначала получать количество бай, потом селл и их плюсовать, как-то не вяжется, если в расчёте нужны только позиции. Я так и написал, но вы оказывается ещё и читать не умеете, что если ввести -1, то на выходе получим лабуду, он будет считать всё, что нужно, и не нужно.

хромает ваша логика на всю голову

CalculateCurrentOrders(OP_BUY)+CalculateCurrentOrders(OP_SELL) = сумма buy и sell

CalculateCurrentOrders(-1) - это не лабуда, а сумма всех ордеров (открытых и отложенных) по текущему магику и символу.

 только про нагрузку на сервер сейчас ничего не придумывайте - данные из терминала 

 
Sergey Deev:

хромает ваша логика на всю голову

CalculateCurrentOrders(OP_BUY)+CalculateCurrentOrders(OP_SELL) = сумма buy и sell

CalculateCurrentOrders(-1) - это не лабуда, а сумма всех ордеров (открытых и отложенных) по текущему магику и символу.

 только про нагрузку на сервер сейчас ничего не придумывайте - данные из терминала 

Мне жаль ваших клиентов, но выбор за ними.
 
Vitaly Muzichenko:
Мне жаль ваших клиентов, но выбор за ними.
Аргументы кончились? И причем здесь клиенты?
Причина обращения: