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

 
Konstantin:
у меня получается расчет такой:
как в итоге правильно?

 

Не ясно в чем сомнения - моя логика простая - посчитать сколько потратили на покупку активов всего (если забыть о марже) и поделить на общее количество купленных единиц - будет средняя цена одного актива - т.е. безубыток.

 

Запомнилось, что разработчики говорили о возможности обмена данными между агентами. Где посмотреть пример?

Вроде, канал фреймами односторонний - от агентов в терминал, но не наоборот.

 
Ошибка выполнения
void OnStart()
{
  int Array[];
  
  Array[ArrayResize(Array, ArraySize(Array) + 1) - 1] = 0; // array out of range
}
 
Ошибка выполнения
struct INT
{
  int Array[];
};

void OnStart()
{
  INT i = {0}; //  Если убрать "= {0}" - ошибка выполнения исчезает
  
  Print(ArrayResize(i.Array, 5)); // -1
}
 
если в структуру есть строки и массивы вот так {0} лучше не инициализировать, у меня вообще выкидывало исключение.
 

Локальные агенты возвращают одно и то же значение TerminalInfoInteger(TERMINAL_DLLS_ALLOWED), пока не перезагрузишь терминал.

Например, хочешь, чтобы DLL агенты не выполняли. Снимаешь DLL-галку в терминале, а агенты продолжают "радовать".


 
Комбинатор:
если в структуру есть строки и массивы вот так {0} лучше не инициализировать, у меня вообще выкидывало исключение.
Похоже, там потенциальная уязвимость.
 
fxsaber:

Запомнилось, что разработчики говорили о возможности обмена данными между агентами. Где посмотреть пример?

Вроде, канал фреймами односторонний - от агентов в терминал, но не наоборот.

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

Работа с файлами из эксперта в тестере

Renat Fatkhullin, 2012.08.27 01:41

При работе с клаудом или удаленными агентами, используемые (для чтения) файлы нужно явно указывать через #property tester_file "myfile1.dat". В этом случае тестер передает эти файлы в клауд вместе с исходным экспертом, причем контролируется изменение этого файла и он кешируется на клауд серверах и агентах. 

Можно передавать большие объемы исходных данных на клауды, а в отчет получать расчеты, включая массивные данные через FrameAdd().

Могу менять tester_file-файлы в OnTesterPass и тем самым передавать нужную инфу в Облако?
 
fxsaber:

В стандартном советнике MQL5\Experts\Examples\Moving Average\Moving Average.mq5

в TradeSizeOptimized пропущена Magic-проверка.

Посмотрите этот вариант, пожалуйста.

Со своей стороны я запустил 9 экземпляров этого советника с разными настройками и магиками для торговли в онлайне на встроенном VPS - буду наблюдать https://www.mql5.com/ru/signals/305333.

Торговые сигналы для MetaTrader 5: Standard Moving Average 9 instances
Торговые сигналы для MetaTrader 5: Standard Moving Average 9 instances
  • Rashid Umarov
  • www.mql5.com
Торговый Сигнал Standard Moving Average 9 instances для MetaTrader 5: копирование сделок, мониторинг счета, автоматическое исполнение сигналов и социальный трейдинг
Файлы:
 
Rashid Umarov:

Посмотрите этот вариант, пожалуйста.

Со своей стороны я запустил 9 экземпляров этого советника с разными настройками и магиками для торговли в онлайне на встроенном VPS - буду наблюдать https://www.mql5.com/ru/signals/305333.

На выбор лота данным советником влияет любая сторонняя торговля (включая другие экземпляры) на исходном символе.

В этом куске это происходит

      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      int    losses=0;                    // number of losses orders without a break

      for(int i=orders-1;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            break;
           }
         //--- check symbol
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
            continue;
         //--- check profit
         double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         if(profit>0.0)
            break;
         if(profit<0.0)
            losses++;
        }
      //---
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
Причина обращения: