Новая версия MetaTrader 4 Client Terminal 388 - страница 8

 
А можно что-то с алгоритмом скорости визуализации сделать? 31 - это слишком медленно
 
Vladon:

проблема с тестером 388.

повторный тест прошел нормально

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

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

 
AlexSTAL:
А можно что-то с алгоритмом скорости визуализации сделать? 31 - это слишком медленно


А 32 слишком быстро?

К сожалению, в этом месте ничего менять не будем. Попробуйте предварительно воспользоваться кнопкой "пропустить до". Тогда тестирование быстренько без визуализации дойдёт до указанной даты, после чего Вы будете наблюдать визуализацию

 
stringo:


А 32 слишком быстро?

К сожалению, в этом месте ничего менять не будем. Попробуйте предварительно воспользоваться кнопкой "пропустить до". Тогда тестирование быстренько без визуализации дойдёт до указанной даты, после чего Вы будете наблюдать визуализацию

32 да... очень быстро....

пропустить ДО работает только до даты...

при отладке часто нужно пропустить до какого-то времени даты... может время добавить туда ещё????

 
VOLDEMAR:

Вот так работает

А ВОТ ТАК НЕТ !!!!!!!!!!!!!!!!!!!!!!!!!


И так, и так работает. Только что проверил лично.

1. Оформляйте код должным образом.

2. Анализируйте ошибки, используя функцию GetLastError

 
Alexandr27:

Еще баг:

Функция IsTesting() постоянно выдает true, даже если тестер выключен или закрыт, даже если торгуешь руками на реальном или демо...


Не подтверждается. Вот проверочный эксперт

int ExtCnt;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   Print("init IsTesting ",IsTesting());
   ExtCnt=0;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Print("deinit IsTesting ",IsTesting());
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(ExtCnt==2)
      Print("start IsTesting ",IsTesting());
   ExtCnt++;
//----
   return(0);
  }

Покажите Ваш код, доказывающий Ваше утверждение

 
AlexSTAL:

32 да... очень быстро....

пропустить ДО работает только до даты...

при отладке часто нужно пропустить до какого-то времени даты... может время добавить туда ещё????


это эмуляция нажатие кнопки Pause-Break

keybd_event(19,0,0,0);
Sleep(10);
keybd_event(19,0,2,0);

помогает очень

на 32 передаче прогон куда надо (с точностью до секунды)

 
Alexandr27:
OrderSelect(0,0,0) уже не отображает ордер с первоначальным объемом депозита, ни при тестировани, ни при реальной торговле. Почему вдруг так стало? Это очередной баг или она так делает только на новых счетах, которые были открыты недавно и на них не совершалось ни одной сделки?

вот такими OrderSelect(0,0,0)

вы никогда и не получите нулевой ордер из истории. так как MODE_HISTORY=1

бага в терминале нет, баг в вашем коде.

 
stringo:
То есть, Вы нашли в метаэдиторе ошибки, которых не было в предыдущих билдах?

Я может и не очень опытный програмист . может я не прав в чёмто но суть такова . я написал примерно 200 советников . которые работали должным образом в билдах ниже 388 а в 388 больша яасть перестала работать .... При анализе кода заметил что ордер селект при выборе какогото ордера не всегда присваивает значения переменным вот пример

int total=OrdersTotal(); //Присвоение общего колличества ордеров
int b=0, s=0; //Обнуление переменных
for (int i=total-1; i>=0; i--) //Перебор ордеров
{
if(OrderSelect(i, SELECT_BY_POS)) //Разбор ордера
{
if(OrderSymbol()!=Symbol())continue; //Если ордер не графика то перебор снова
{
if (OrderType()==OP_BUY) //Если ордер наш и БАЙ
{
string VALB=OrderSymbol (); //Присвоение символа
double tpbb=OrderTakeProfit (); //Присвоение тейк профита
double slbs=OrderStopLoss (); //Присвоение Стоп лосса
double lotb=OrderLots (); //Присвоение лота
double otkb=OrderOpenPrice (); //Присвоение цены открытия
double magb=OrderMagicNumber(); //Присвоение магического номера
b++ ; //Счетчик ордеров
}
if (OrderType()==OP_SELL) //Если ордер наш и СЕЛЛ
{
string VALS=OrderSymbol (); //Присвоение символа
double tpbs=OrderTakeProfit (); //Присвоение тейк профита
double slss=OrderStopLoss (); //Присвоение Стоп лосса
double lots=OrderLots (); //Присвоение лота
double otks=OrderOpenPrice (); //Присвоение цены открытия
double mags=OrderMagicNumber(); //Присвоение магического номера
s++ ; //Счетчик ордеров

}}}}

При попытке в дальнейшем куда то притулить переменные со значениями ордеров не получается либо ошибка либо пусто !!!!...............

 
VOLDEMAR:

При попытке в дальнейшем куда то притулить переменные со значениями ордеров не получается либо ошибка либо пусто !!!!...............

какая ошибка? и что значит пусто (нулевые значения)?
Причина обращения: