Ошибки, баги, вопросы - страница 289

 
одни замарочки - перерисовка не будет влиять на работу советника
и т.д. и т.п.

Вот код в советнике (много функций испробовал для определения равенства линии индикатора 0)

взял самую простую

if (Sp3Buffer[20]!=0 && Sp3Buffer[21]!=0 && Sp3Buffer[22]!=0 && Sp3Buffer[23]!=0 && Sp3Buffer[24]!=0)

здесь у нас значения линии индикатора вот из лога тестера через принт

[20]=34.40035703438407[21]=35.93782852396674[22]=35.97127995180715[23]=30.49164953708304[24]=32.90441573888087

нуля нет, а смотришь на индикатор - явный ноль - и в значениях

индюка тоже ноль

что за?

 

Вот такая ерунда полезла в журнале после выполнения команды обновить на графике:

2011.02.03 02:24:51    HistoryBase    '#IBM' 1 invalid bars removed
2011.02.03 02:24:50    HistoryBase    '#IBM' 1 invalid bars removed
2011.02.03 02:24:49    HistoryBase    '#IBM' 1 invalid bars removed
2011.02.03 02:24:48    HistoryBase    '#IBM' 1 invalid bars removed
2011.02.03 02:24:47    HistoryBase    '#IBM' 1 invalid bars removed
2011.02.03 02:24:46    HistoryBase    '#IBM' 1 invalid bars removed

и т.д. через каждую секунду.

ТФ часовой

 
alexluek:
одни замарочки - перерисовка не будет влиять на работу советника
и т.д. и т.п.

Вот код в советнике (много функций испробовал для определения равенства линии индикатора 0)

взял самую простую

здесь у нас значения линии индикатора вот из лога тестера через принт

нуля нет, а смотришь на индикатор - явный ноль - и в значениях

индюка тоже ноль

что за?

массив перевернуть не забыли, случаем?
 
sergey1294:
массив перевернуть не забыли, случаем?
обратный порядок индексации установлен и в индюке и в советнике, но в чем дело не понятно. Спасибо
 

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

на 1 компе из MetaTrader 5\Profiles\Templates

на 2 компе из MetaTrader 5\MQL5\Files

строка добавления в советнике  ChartApplyTemplate(handle_Chart,"Sova15_30.tpl")

В чем дело, кто поможет разобратся? 

 
Подскажите как получить время последнего изменения позиции?
 
beginner:

Подскажите как получить время последнего изменения позиции?
https://www.mql5.com/ru/articles/138 там найдите myposition.Time()
Как использовать торговые классы Стандартной библиотеки при написании советника
Как использовать торговые классы Стандартной библиотеки при написании советника
  • 2010.11.10
  • Samuel
  • www.mql5.com
В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
 
beginner:

Подскажите как получить время последнего изменения позиции?

Определить какая сделка по символу была последней.

Можно или отлавливать в OnTrade() или в истории.

Trolls:
https://www.mql5.com/ru/articles/138 там найдите myposition.Time()

Так возвращается время открытия позиции, если я все правильно помню (т.е. на сколько я понимаю вернется время первой сделки, которая позицию открыла).

Что касается указанной статьи, могут пригодиться myhistory и mydeal (может еще что подойдет).

 
Interesting:

Определить какая сделка по символу была последней.

Можно или отлавливать в OnTrade() или в истории.

Так возвращается время открытия позиции, если я все правильно помню (т.е. на сколько я понимаю вернется время первой сделки, которая позицию открыла).
Да, в этом и проблема, т.е надо найти последнюю сделку по нужному инструменту и получить ее время, а попроще можно?
 
beginner:
Да, в этом и проблема, т.е надо найти последнюю сделку по нужному инструменту и получить ее время, а попроще можно?

Интересует какая-то конкретная позиция (известен символ и ее Id) или общий случай для всех позиций?

Если просто рыться в истории и анализировать сделки (при помощи mydeal), то примерно так:

1. Получаем общее количество сделок за период, перебирая их выбирая только те что по символу/или те которые участвовали в формировании позы

if (HistorySelect(0,TimeCurrent()))
ulong d_ticket; // deal ticket
{
// Получить общее количество сделок в истории
int tot_deals = HistoryDealsTotal();

  for(int j=0; j<tot_deals; j++)
  {
  d_ticket = HistoryDealGetTicket(j);

    if(d_ticket>0)  
    {
    mydeal.Ticket(d_ticket)

      if(mydeal.Symbol()==SymbolTitle)
      {
      //формируем список сделок и анализируем его (если я правильно понял последняя сделка наша)
      }

    }   

  }

}

2. отбирать сделки луче не по символу, а по идентификатору конкретной позиции (так проще и надежней).

Хотя уверен есть более правильные и простые решения.

Причина обращения: