Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 115

 
gyfto:
С dll можно читать AccountNumber() и как? Намекните хотя бы куда копать. Я имею ввиду без передачи значения функции в dll, то есть с самой динамической библиотеки.
Из заголовка окна МТ4, но его можно легко подменить. Надо думать, как отследить подмену.
 
pako:

не понимаю зачем все так усложнять
так не проще будет???

Эх... если б я сам мог решать как делать... Раз заказчику нужно пересчитывать тейки всех позиций (тем более, что могут открываться следующие усредняющие позиции с ещё более увеличенным лотом и общий тейк опять пересчитывается) и закрываться именно по стоп-приказам, а не советником, значит приходится именно так и делать.
 
Zhunko:
Из заголовка окна МТ4, но его можно легко подменить. Надо думать, как отследить подмену.

Но в одном я почти уверен: в Windows негде посмотреть время последнего доступа к буферу окна.
 
gyfto:
Но в одном я почти уверен: в Windows негде посмотреть время последнего доступа к буферу окна.
Надо перехватывать сообщения.
 

Нужна помощь, не соображу никак.

По задумке сова использует доливки по тренду, при повторном сигнале. Так вопрос в том, как функцию доливки научить пропускать первый сигнал?

К примеру возник сигнал на покупку, сова покупает, на следующем тике происходит вызов функции доливки (т.к. имеется открытый ордер) сигнал входа еще в силе и она (функция) успешно доливает (что не правильно).

Сама функа вызывается только в случае имеющегося открытого ордера.

Мне достаточно пропустить текущий бар... Как реализовать это в MQL?

 
MarkTrade:

Нужна помощь, не соображу никак.

По задумке сова использует доливки по тренду, при повторном сигнале. Так вопрос в том, как функцию доливки научить пропускать первый сигнал?

К примеру возник сигнал на покупку, сова покупает, на следующем тике происходит вызов функции доливки (т.к. имеется открытый ордер) сигнал входа еще в силе и она (функция) успешно доливает (что не правильно).

Сама функа вызывается только в случае имеющегося открытого ордера.

Мне достаточно пропустить текущий бар... Как реализовать это в MQL?

Мля... чего вы курите? На каких плантациях сигаретки собираете? Сова пошла в магазин и прикупила там чего-то... А потом вызвалась какая-то функа и всё испортила.

Жесть...

 

Используйте функцию, которая вернёт вам количество баров после открытия последней позиции:

//+----------------------------------------------------------------------------+
int BarsAfterOpenLastPos(int op, int mn) {
   datetime t=0;
   int      i, k=OrdersTotal();

   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS)) {
         if (OrderSymbol()!=Symbol())  continue;
         if (OrderType()!=op)          continue;
         if (OrderMagicNumber()!=mn)   continue;
         if (t<OrderOpenTime()) t=OrderOpenTime();
         }
      }
   return((TimeCurrent()-t)/60/Period());
}
//+----------------------------------------------------------------------------+

Как проверить позицию Бай с магиком Magic:

if (BarsAfterOpenLastPos(OP_BUY, Magic)>1) {// доливаем}
 
artmedia70:

Мля... чего вы курите? На каких плантациях сигаретки собираете? Сова пошла в магазин и прикупила там чего-то... А потом вызвалась какая-то функа и всё испортила.

Жесть...



:) В общем так

if (OrdersCount()==0)
{CheckBuy();
CheckSell();}
if (OrdersCount()==1) DolivkaBuy();
if (OrdersCount()==-1) DolivkaSell();

Что прописать в Dolivka...() чтобы она пропустила тот бар, на котором открылась первая сделка?

Исходника под рукой нет, так по памяти...

 
О! Пока писал, уже и ответ есть. Спасибо!
 
artmedia70:
Эх... если б я сам мог решать как делать... Раз заказчику нужно пересчитывать тейки всех позиций (тем более, что могут открываться следующие усредняющие позиции с ещё более увеличенным лотом и общий тейк опять пересчитывается) и закрываться именно по стоп-приказам, а не советником, значит приходится именно так и делать.


загоните данные позиций в массив
Причина обращения: