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

 

При запуске тестирования постоянно наблюдаю такое:

2014.03.28 17:12:28 Core 1 connecting to 127.0.0.1:3000
2014.03.28 17:12:38 Core 1 tester agent authorization error
2014.03.28 17:12:38 Core 1 connection closed

Возможность протестировать предоставляется скорее в виде исключения. Удаленные агенты отключены, антивируса нет.
Как это лечится?

 
cDan:

При запуске тестирования постоянно наблюдаю такое:

2014.03.28 17:12:28 Core 1 connecting to 127.0.0.1:3000
2014.03.28 17:12:38 Core 1 tester agent authorization error
2014.03.28 17:12:38 Core 1 connection closed

Возможность протестировать предоставляется скорее в виде исключения. Удаленные агенты отключены, антивируса нет.
Как это лечится?

Антивирус не?
 
Антивируса нет
 

Перепсот, но может быть здесь быстрее ответят:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих

C-4, 2014.03.28 13:23

Кто-нибудь может мне объяснить почему приведенный код не работает в тестере, в то время как в реал-тайм он работает!!? Конкретно интересует, почему в тестере после HistorySelect(0, TimeCurrent()) не доступны свойства HistoryOrderGetInteger...

#include <Trade\Trade.mqh>

CTrade trade;

int OnInit()
{
   trade.LogLevel(LOG_LEVEL_NO);
   return INIT_SUCCEEDED;
}
void OnTick()
{
   if(!DetectNewBar())return;
   trade.Sell(0.1);
   HistorySelect(0, TimeCurrent());
   for(; dealsCount < HistoryDealsTotal(); dealsCount++)
   {
      ulong ticket = HistoryDealGetTicket(dealsCount);
      RecalcDeal(ticket);
   }
}

bool DetectNewBar(void)
{
   MqlRates bars[1];
   CopyRates(Symbol(), PERIOD_M1, 0, 1, bars);
   if(bars[0].time != timeLastBar)
   {
      timeLastBar = bars[0].time;
      //printf(expertName + " new bar detected: " + TimeToString(bars[0].time));
      return true;
   }
   return false;
}

void RecalcDeal(ulong ticketDeal)
{
   //History is selected in OnTick()!
   ulong ticketOrder = HistoryDealGetInteger(ticketDeal, DEAL_ORDER);
   //if(!HistoryOrderSelect(ticketOrder))
   //   printf("order not select.");
   ENUM_ORDER_TYPE type = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketOrder, ORDER_TYPE);
   datetime time = HistoryOrderGetInteger(ticketOrder, ORDER_TIME_SETUP); 
   ulong time_msc = HistoryOrderGetInteger(ticketOrder, ORDER_TIME_SETUP_MSC); 
   printf("Order: " + (string)ticketOrder + " Type: " + EnumToString(type) + " Time: " + (string)time +
          " Time msc: " + (string)time_msc + " Total Orders: " + HistoryOrdersTotal());
}

int dealsCount;

datetime timeLastBar;

Скриншот в тестере стратегий:

 

Скриншот в реал-тайм на демо:

 

p.s. Что интересно, первый ордер в тестере обрабатывается корректно, а остальные уже нет. И еще, если расскоментировать HistroryOrderSelect(ticketOrder) то в реал-тайм начнет вываливаться соообщение что ордер не был выбран, а в тестере стратегий наоборот, все начнет работать, за исключением первого ордера. 


 

Пояснительный скрин к заявке #986216

 

 

А правильно ли работает встроенная строковая функция StringSplit ?

void OnStart()
{
        string str = "|A|B|";
        string result[];
        int n = StringSplit( str, '|', result );
        Print( "количество полученных подстрок=", n );
        for ( int i = 0; i < n; i++ )
                Print( "подстрока(", i, ")=", result[ i ] );
}

выдает следующий результат:

 

Получается, что символ '|' в случае "|A" разделяет пустую строку и A, а в случае "B|" - не разделяет B и пустую строку. Но если это разделитель, то он должен что-то разделять, иначе нет различия между "|A|B|" и "|A|B" и в тоже время есть различие, между "|A|B|" и "A|B|" . И если в одном случае допускаются пустые строки, то и в другом случае они должны допускаться.

 

Разделяет правильно, но не до конца. В конце надо бы тоже пустой токен выдавать.

Поставил в сервисдеск.

 

Чой-то не того у меня с рейтингом, вроде слетел счетчик скачиваний кодов.

Упс, а это не ошибка по ходу... В рейтинг добавили коды с MQL4?

 

Да, идет работа над переносом MQL4 базы кодов в новый движок MQL5 сайта.

Мы работаем над унификацией платформ. 

 
A100:

А правильно ли работает встроенная строковая функция StringSplit ?

выдает следующий результат:

 

Получается, что символ '|' в случае "|A" разделяет пустую строку и A, а в случае "B|" - не разделяет B и пустую строку. Но если это разделитель, то он должен что-то разделять, иначе нет различия между "|A|B|" и "|A|B" и в тоже время есть различие, между "|A|B|" и "A|B|" . И если в одном случае допускаются пустые строки, то и в другом случае они должны допускаться.

Спасибо за сообщение, исправлено в 4ом и 5ом терминалах.