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

 
Aleksandr Slavskii #:

Вот и смотрю, количество умных просто зашкаливает.

Внимательных не хватает)

Читаем внимательно пост , находим слово "тестер", заметьте не отладчик, а именно ТЕСТЕР и думаю все вопросы про F5, что спросил Артём,  а также запуск скриптов, отпадут сами собой.

А это как понимать?

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

Ошибки, баги, вопросы

Robert Sadamon, 2024.07.20 08:56

Спасибо, что проверили. Это не я решил, что в коде ошибка. В режиме отладки, я вижу что тикет берется с "потолка". Соответственно до расчетов профита дело не доходит. Терминал у меня глючит получается? Или компилятор?

вот в отладке прошли строку получения тикета. Выдал не понятно что?! По истории смотрю закрыто было всего не более 20 сделок.

Соответственно в тестере советник работает не правильно. Это у меня уже не первый раз такое. Как то заказчик остался не доволен, а я так ничего и сделать не смог, чтобы исправить этот баг


 
MrBrooklin #:

Отладку в MetaEditor 5 Вы как запускаете?

С уважением, Владимир.

На исторических данных. Так, как мне нужен момент включения этой функции

Что интересно, на домашнем компьютере  все работает как нужно, а на сервере глючит. Терминал загружал у брокера Gerchik&Co

И еще. Функция работает в советнике. Логика проста. Она встроена в функцию которая закрывает убыточную сделку если прибыль с момента ее открытия по другим закрытым позициям перекрывает ее убыток.  В тестере не работает, на реальных данных можно ждать пару недель ситуацию. Я запустил отладчик и увидел такую картину, что тикеты беруться непонятно какие, соответственно и данные об закрытой сделке неверные и в строку суммирования прибыли не заходим.

 

В общем, всем спасибо. Это глюк у Терминала. Пусть разработчики исправляют. Проблему решил просто. Закачал терминал у брокера, а не с сайта MQL5. Отказался от обновлений и все прекрасно заработало!!! Чего то они ищут сишников и условия у них шикарные. А вот отбор видно плоховат. Менеджер по персоналу хороший человек. Но как говорил один человек: "Если ты не гавно как человек, то ты гавно как менеджер". Берут кого попало. Прихожу к выводу, что в последних обновлениях напортачили ребята. 

НЕ ОБНОВЛЯЙТЕ ТЕРМИНАЛ И ВСЕ У ВАС БУДЕТ РАБОТАТЬ НОРМАЛЬНО!  Или хотя бы пусть сделают возможность отката до предыдущей версии или... в общем пусть работают.

 

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

Ошибки, баги, вопросы

Robert Sadamon, 2024.07.19 22:11

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

Подскажите, почему в тестере тикет не тот выдает? Что я не правильно понимаю?

double History_Profit(datetime startTime)
  {
   long nmbMagic = (long)Magic;
   double h_profit = 0.0;
   ulong ticket;
   HistorySelect(startTime, TimeCurrent()); // Выбор истории сделок в указанном диапазоне
   int total_h = HistoryDealsTotal(); // Общее количество сделок в истории

// Цикл проходит по всем сделкам в истории
   for(int i = total_h - 1; i >= 0; i--)
     {
      ticket = HistoryDealGetTicket(i); // Получение тикета сделки
      if(ticket > 0)
        {
         // Получение символа, магического числа и прибыли сделки
         string dealSymbol = HistoryDealGetString(ticket, DEAL_SYMBOL);
         long dealMagic = (long)HistoryDealGetInteger(ticket, DEAL_MAGIC);
         double dealProfit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
         double dealCommission = HistoryDealGetDouble(ticket, DEAL_COMMISSION);
         double dealSwap = HistoryDealGetDouble(ticket, DEAL_SWAP);

         // Фильтрация сделок по символу и магическому числу
         if(dealSymbol == _Symbol && dealMagic == nmbMagic)
           {
            // Суммирование прибыли, комиссии и свопа
            h_profit += dealProfit + dealCommission + dealSwap;
           }
        }
     }

   return (h_profit); // Возврат общей прибыли
  }

Причина в выделенном условии.

 

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

Рандома в исполняемом коде нет. Что за ерунда то такая? Как такое отлавливать и чего то доказывать? Похоже на какой то сбой...

 
Месяц назад (примерно), при подключении по RDP в диспетчере задач десятки я видел информацию по нагрузке на железо, а сейчас терминал даже не отображается в диспетчере задач, и как расходуются ресурсы ПК непонятно. Это у всех теперь так? Если да, то дело в обновлениях терминала? Не удобно сие.
 
fxsaber #:

Причина в выделенном условии.

Почему?

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

Ошибки, баги, вопросы

Robert Sadamon, 2024.07.19 22:11

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

Подскажите, почему в тестере тикет не тот выдает? Что я не правильно понимаю?

double History_Profit(datetime startTime)
  {
   long nmbMagic = (long)Magic;
   double h_profit = 0.0;
   ulong ticket;
   HistorySelect(startTime, TimeCurrent()); // Выбор истории сделок в указанном диапазоне
   int total_h = HistoryDealsTotal(); // Общее количество сделок в истории

// Цикл проходит по всем сделкам в истории
   for(int i = total_h - 1; i >= 0; i--)
     {
      ticket = HistoryDealGetTicket(i); // Получение тикета сделки
      if(ticket > 0)
        {
         // Получение символа, магического числа и прибыли сделки
         string dealSymbol = HistoryDealGetString(ticket, DEAL_SYMBOL);
         long dealMagic = (long)HistoryDealGetInteger(ticket, DEAL_MAGIC);
         double dealProfit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
         double dealCommission = HistoryDealGetDouble(ticket, DEAL_COMMISSION);
         double dealSwap = HistoryDealGetDouble(ticket, DEAL_SWAP);

         // Фильтрация сделок по символу и магическому числу
         if(dealSymbol == _Symbol && dealMagic == nmbMagic)
           {
            // Суммирование прибыли, комиссии и свопа
            h_profit += dealProfit + dealCommission + dealSwap;
           }
        }
     }

   return (h_profit); // Возврат общей прибыли
  }

Чат GPT уже скоро сломается из-за меня)))) 


 
Alexey Viktorov #:

Почему?

Мэджик для IN-сделок и OUT-сделок может не совпадать для одной и той же позиции.

 

How does a script/EA finds out if the terminal it is running on is validly connected to an account?
Как скрипт/EA выясняет, подключен ли терминал, на котором он запущен, к учетной записи?

The Journal log: / Журнал «Journal log»:

2024.07.22 10:29:13.170 Network '50111': authorization on GlobalMarketsGroup-server failed (Invalid account)

The script: / Сценарий:

void OnStart()
 {

   Print("Login: ",AccountInfoInteger(ACCOUNT_LOGIN),"  Balance: ",AccountInfoDouble(ACCOUNT_BALANCE),"   Server: ",AccountInfoString(ACCOUNT_SERVER));
}

and the Expert log: / и журнал «Эксперт»:

2024.07.22 10:29:17.806 test_WeekendData (EURUSD,H1)    Login: 50111  Balance: 10000.0   Server: GlobalMarketsGroup-server

I am a bit confused: the account, and the server name and a balance are correct? I guess taken from my hard disk/cache - how can I get a valid information about login status?
Я немного запутался: учетная запись, имя сервера и баланс верны? Я предполагаю, что он взят с моего жесткого диска/кэша - но как скрипт/EA может получить достоверную информацию о статусе входа?

_LastError stays at 0 / _LastError остается на 0
 
Carl Schreiber #:

How does a script/EA find out if the terminal it is running on is validly connected to an account?
Как скрипт/EA выясняет, подключен ли терминал, на котором он запущен, к учетной записи?

The Journal log: / Журнал «Journal log»:

The script: / Сценарий:

and the Expert log: / и журнал «Эксперт»:

I am a bit confused: the account, and the server name and a balance are correct? I guess taken from my hard disk/cache - how can I get a valid information about login status?
Я немного запутался: учетная запись, имя сервера и баланс верны? Я предполагаю, что он взят с моего жесткого диска/кэша - но как скрипт/EA может получить достоверную информацию о статусе входа?

_LastError stays at 0 / _LastError остается на 0

in Demo/Real/Contest trading : TerminalInfoInteger(TERMINAL_CONNECTED) !=0  and (optional but recommended) first tick reached or TimeCurrent() changed

always true for testing/optimization