Обсуждение статьи "Разрабатываем мультивалютный советник (Часть 2): Переход к виртуальным позициям торговых стратегий" - страница 6

 

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

Обсуждение статьи "Разрабатываем мультивалютный советник (Часть 2): Переход к виртуальным позициям торговых стратегий"

fxsaber, 2024.02.12 17:33

Ваша архитектура несколько отличается от моей

//+------------------------------------------------------------------+
//| Конструктор                                                      |
//+------------------------------------------------------------------+
CSimpleVolumesStrategy::CSimpleVolumesStrategy( const string sInputs ) : CStrategy(sInputs)
{
   this.Input = sInputs;

   ArrayResize(m_orders, this.Input.maxCountOfOrders);

   // Загружаем индикатор для получения тиковых объемов
   iVolumesHandle = iVolumes(this.InputStrategy.symbol, this.InputStrategy.timeframe, VOLUME_TICK);

// Устанавливаем размер массива-приемника тиковых объемов и нужную адресацию
   ArrayResize(volumes, this.Input.signalPeriod);
   ArraySetAsSeries(volumes, true);
}

Не использую инпуты из родительского класса. Все инпуты у меня private, а потому могут иметь одинаковое имя. За счет чего достигается сильная универсализация: одинаковый код, который прячется в один общий макрос. Но это у меня так.

 
Yuriy Bykov #:

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

Вы правы. Сделал так.
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
Это глобальная string-переменная, в которую автоматически (и создается) прописываются  все input-переменные. Т.е. какие бы объекты не создавались, на вход всегда подается эта переменная.
 
fxsaber #:
Вы правы. Сделал так. Это глобальная string-переменная, в которую автоматически (и создается) прописываются  все input-переменные. Т.е. какие бы объекты не создавались, на вход всегда подается эта переменная.

На всякий случай напоминаю, что строковые инпуты режутся по 63 символу оптимизатором.

 
Stanislav Korotky #:

На всякий случай напоминаю, что строковые инпуты режутся по 63 символу оптимизатором.

Спасибо. Там не инпут, поэтому длина не ограничена.

string inInputsAll = NULL;
 

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

Обсуждение статьи "Разрабатываем мультивалютный советник (Часть 2): Переход к виртуальным позициям торговых стратегий"

fxsaber, 2024.02.14 11:36

Вы правы. Сделал так.
expert.Add(new CSimpleVolumesStrategy(inInputsAll));
Это глобальная string-переменная, в которую автоматически (и создается) прописываются  все input-переменные. Т.е. какие бы объекты не создавались, на вход всегда подается эта переменная.

Прикрепил.

Файлы:
Причина обращения: