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

 
fxsaber:

Обновленное время модификации не влияет на результат. Советник

Да. Спасибо. Нашли в чём была проблема.

В ближайшее время будет исправление. Однако, используемые файлы из common-папки до сих пор нельзя контролировать. Только те файлы, которые указаны в #property tester_file

 

Включаю повторно тестер в режиме визуализации после прохода, понимаю, что не те настройки торможу и виснет тестер стратегий на пару минут.

2018.07.11 17:03:05.992 Core 8  disconnected
2018.07.11 17:03:05.992 Core 8  connection closed
2018.07.11 17:03:09.241 Core 8  connecting to 127.0.0.1:3000
2018.07.11 17:03:18.308 Tester  stopped by user
2018.07.11 17:03:19.241 Core 8  tester agent authorization error
 
//Определение экстремума
for(int i=NBars;i<=NumBars;i++)
     {
      xMinL=ArrayMinimum(MinBuffer,0,i);
      xMinLD=ArrayMinimum(MinBuffer,0,i+NBars);
      if((MinBuffer[xMinL]<=MinBuffer[xMinLD])&&(xMinL>=NBars))
        {
         Minimum=MinBuffer[xMinL];
         break;}}

//Проверка если ордера с такой же ценой не существует         
   for (int r=0; r<=OrdersTotal(); r++)
   {if (OrderSelect(OrderGetTicket(r)))
    {if (StringToDouble(OrderGetString(ORDER_COMMENT))==NormalizeDouble(Minimum,_Digits))    
       {x2=1;
        break;}
     else x2=0;}}

//Проверка если Позиции с такой же ценой не существует     
   for (int l=0; l<=PositionsTotal(); l++)
   {if (PositionSelectByTicket(PositionGetTicket(l)))
    {if (StringToDouble(PositionGetString(POSITION_COMMENT))==NormalizeDouble(Minimum,_Digits))     
       {y2=1;
        break;}
     else y2=0;}}

//Если проверка отрицательная, открываем ордер        
   if ((x2==0)&&(y2==0))
   m_trade.SellStop(Volume,NormalizeDouble(Minimum,_Digits),_Symbol,NormalizeDouble(Minimum+(SL_ATR*ATR2),_Digits),NormalizeDouble(Minimum-(TP_ATR*ATR2),_Digits),ORDER_TIME_GTC,0,DoubleToString(Minimum,_Digits));
Здравствуйте уважаемые форумчане. Это выдержка кода, которая определяет экстремумы и выставляет отложки на них. И вроде все работает но иногда на одном экстремуме он начинает выставлять бесконечные отложки, как будто критерия останова не видит. Я уже голову себе сломал.
 
Dmitri Custurov:
Здравствуйте уважаемые форумчане. Это выдержка кода, которая определяет экстремумы и выставляет отложки на них. И вроде все работает но иногда на одном экстремуме он начинает выставлять бесконечные отложки, как будто критерия останова не видит. Я уже голову себе сломал.

Так double сравнивать корректно?

if (StringToDouble(PositionGetString(POSITION_COMMENT))==NormalizeDouble(Minimum,_Digits)){.....}
 

В индикаторе

Принтую в визуальном режиме тестера стратегий, так-как мозг уже закипел - не мог найти ошибку в логике:

Print(iHigh(Symbol(),PERIOD_CURRENT,i+1), "  ",sqh_buffer[i+1]);

Начальная дата 01.01.2018 минутки

 

2018.07.11 17:19:07.770 2018.01.01 00:00:00   58148.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58149.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58146.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58140.0  0.0
2018.07.11 17:19:07.770 2018.01.01 00:00:00   58139.0  0.0
2018.07.11 17:19:07.863 2018.01.03 10:00:00   58139.0  58391.79995461365
2018.07.11 17:19:07.863 2018.01.03 10:00:00   58135.0  58391.71051866656
2018.07.11 17:19:07.906 2018.01.03 10:00:20   58135.0  58463.08874123808

Конечно, реально котировок в эту дату нет, у людей праздник, тогда что это за магические цифры, и вообще как я получаю информацию за первое число???

 

Вопрос:

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

Или плохо справку читаю или такой возможности нет что-ли?

 
Nikolai Semko:

Вопрос:

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

Или плохо справку читаю или такой возможности нет что-ли?

Судя по тишине, действительно, наверно, нет такой возможности. :((

Но как же так - ведь это очень простая и полезная фича!

Например я создаю класс, который использует таймер. И внутри класса я могу включать и выключать таймер, менять его периодичность. Но ведь для безконфликтной роботы с остальной программой класс должен знать - включен сейчас таймер или нет и какова его периодичность. 

 
Nikolai Semko:

Судя по тишине, действительно, наверно, нет такой возможности. :((

Но как же так - ведь это очень простая и полезная фича!

Например я создаю класс, который использует таймер. И внутри класса я могу включать и выключать таймер, менять его периодичность. Но ведь для безконфликтной роботы с остальной программой класс должен знать - включен сейчас таймер или нет и какова его периодичность. 

Флаг вам в руки, точнее в класс.

 
Sergey Dzyublik:

Флаг вам в руки, точнее в класс.

Не поможет. Особенно, если таймер уже включен до включения в классе, например с периодичностью несколько часов или дней. Тогда такой класс разрушит всю логику программы.

 
Sergey Dzyublik:

Так double сравнивать корректно?

Я пробовал и по фэн шую, и так - результат тот же. Дело в том, что все работает в 99% случаев, а мне нужно 100%. На данный момент мне главное логику правильно собрать, красоту буду потом наводить.

Забыл добавить только то, что вышеупомянутая ошибка появляется в тестере. Когда кидаю на график, такого не наблюдаю, или нужно просто дождаться необходимого экстремума, где эта ошибка опять себя проявит.
Причина обращения: