Как исправить при оптимизации "No memory in OnTick function" ?

 

Добрый день.

Кто нить знает как ошибку убрать?

Поставил генетическую оптимизацию через облачных агентов....


 
Nexxtor:

Добрый день.

Кто нить знает как ошибку убрать?

Поставил генетическую оптимизацию через облачных агентов....

Только уменьшением количества одновременно оптимизируемых параметров, увеличением шага, уменьшением количества дней в интервале тестирования. Разделите параметры на 2 группы. Сначала оптимизируйте первую, потом вторую, потом опять первую и опять вторую. Времени экономится масса. А еще задаете меньший диапазон изменения параметров и большой шаг. Когда станут ясны значения параметров, уменьшаете диапазон изменения параметров и уменьшаете шаг. Все это дает ускорение в сотни раз при меньшей потребности памяти.

 
STARIJ:

Только уменьшением количества одновременно оптимизируемых параметров, увеличением шага, уменьшением количества дней в интервале тестирования. Разделите параметры на 2 группы. Сначала оптимизируйте первую, потом вторую, потом опять первую и опять вторую. Времени экономится масса. А еще задаете меньший диапазон изменения параметров и большой шаг. Когда станут ясны значения параметров, уменьшаете диапазон изменения параметров и уменьшаете шаг. Все это дает ускорение в сотни раз при меньшей потребности памяти.

Спасибо, но не помогло: сделал период 01.01.2016 - 31.12.2018 EUR/USD M30 и всего один параметр на оптимизацию: всего 8 шагов.

Все равно посыпались те же ошибки.

Другие эксперты, например типовой Moving Average, работает на любом периоде без проблем.

 

Может, и в самом деле 16 мег у Агента нету ?

Я бы в Ините - запрашивал имеющееся количество памяти, и если его мало - выдавал бы ошибку, что неподходящий агент.

 

В итоге дошло до такого:

void OnTick(void)
  {
   //int copied;
   //copied=CopyTime(NULL,0,0,1,glb_time);
   //if (copied==-1){
   //      printf("Can't copy time"); 
   //      return;
   //      }
   //while (glb_time[0]<=inp_dateendteach_2)
   //   return;
   //if(glb_NewBar.isNewBar()){
   //   for (int i=0;i<inp_QuantityOfMyNeuralNetworkIndicators;++i){
         //CopyBuffer(glb_MyNeuralNetworksIndicators[i].mnn_handleMyNNIndicator,0,1,1,glb_MyNeuralNetworksIndicators[i].mnn_buffMyNNIndicatorBuy);
         //CopyBuffer(glb_MyNeuralNetworksIndicators[i].mnn_handleMyNNIndicator,1,1,1,glb_MyNeuralNetworksIndicators[i].mnn_buffMyNNIndicatorSell);
         //CopyBuffer(glb_MyNeuralNetworksIndicators[i].mnn_handleMyNNIndicator,2,0,1,glb_MyNeuralNetworksIndicators[i].mnn_buffWeightsSize);
         //CopyBuffer(glb_MyNeuralNetworksIndicators[i].mnn_handleMyNNIndicator,2,1,int(glb_MyNeuralNetworksIndicators[i].mnn_buffWeightsSize[0]),glb_MyNeuralNetworksIndicators[i].mnn_buffWeights);
         //glb_MyNeuralNetworksIndicators[i].CheckSignals();
      //   }
      //glb_PrimaryTrade.Trade(CheckCommonSignal(),glb_time);
     // }
  }

Все равно та же ошибка. При чем на локальных агентах все работает без нареканий. А на облаках выдает ошибку.

То есть куда дальше копать, в какой раздел эксперта, вообще не ясно.

George Merts:

Может, и в самом деле 16 мег у Агента нету ?

Я бы в Ините - запрашивал имеющееся количество памяти, и если его мало - выдавал бы ошибку, что неподходящий агент.

как запрашивать память в ините и выдавать ошибку на неподходящий агент?

 

Вообщем, когда в OnInit() добавляю свой индикатор через iCustom() сразу начинает выскакивать эта ошибка.

Когда комментирую эту строку, ошибки нет.

Но и торговли, соответственно, тоже нет.

Получается, через облака ничего из нормального и не погоняешь. Все простое и на локальных агентах гоняется быстро.

Пипец)))

 

IndicatorCreate() вместо iCustom() тоже не помогает.

Есть у кого какие идеи, как решить проблему?

 

Даже через локальное облако агентов не работает.....

Не ужели в моем случае никак ускорить оптимизацию нельзя?

 
Nexxtor:  Даже через локальное облако агентов не работает.....

Не ужели в моем случае никак ускорить оптимизацию нельзя?

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

 
Nexxtor:
 

как запрашивать память в ините и выдавать ошибку на неподходящий агент?

Запрос - TerminalInfoInteger() с соответствующим флагом.

Ошибка на неподходящий агент - ищите в документации по слову INIT_AGENT_NOT_SUITABLE (О, даже автоматически вам нашло - читайте)

 
Nexxtor:

Добрый день.

Кто нить знает как ошибку убрать?

Поставил генетическую оптимизацию через облачных агентов....


Стопудово утечки памяти в программе, их ищите.

Причина обращения: