Несколько стратегий через quik
Atom
26.03.2013
Макс


Как запускать несколько стратегий через quik ? Если мне надо поправить одну, то приходиться все выключать и перезапускать после правки. 2-й quik не выход т.к. если будет 3-4 стратегии.

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


Теги:


Спасибо:


1 2  >
VassilSanych

Фотография
Дата: 26.03.2013
Ответить


Динамическая подгрузка dll. Динамическое конфигурирование.

Спасибо:

Mikhail Sukhov

Фотография
Дата: 26.03.2013
Ответить


Макс: Как запускать несколько стратегий через quik ? Если мне надо поправить одну, то приходиться все выключать и перезапускать после правки. 2-й quik не выход т.к. если будет 3-4 стратегии.

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

Студия?

Спасибо:

Макс

Фотография
Дата: 26.03.2013
Ответить


VassilSanych: Динамическая подгрузка dll. Динамическое конфигурирование.

есть пример? не умею это делать.

Спасибо:

Макс

Фотография
Дата: 26.03.2013
Ответить


Студия?

нет 4.1.7 давно работает один робот, хочу 2-й алгоритм добавить не трогая 1-й.

Спасибо:

Moadip

Фотография
Дата: 26.03.2013
Ответить


Если стратегия "вживлена" в оболочку через которую запускается робот, то придется переписывать.

Механизм примерно такой: Есть dll в которой лежат классы стратегий, как вариант на каждую стратегию отдельная dll. В оболочке подгружается данная либа. Через рефлексию вытаскиваются типы(классы стратегий). Создаются и запускаются стратегии.

В итоге получается стратегию можно отлаживать отдельно(если она в отдельной dll) пока работает бот. И потом в любой момент подгрузить эту dll, создать и запустить стратегию вместе с текущей.

Макс:

VassilSanych: Динамическая подгрузка dll. Динамическое конфигурирование.

есть пример? не умею это делать.

На codeplex лежат исходники гидры. Источники сделаны в виде плагинов - dll, которые подгружаются при запуске, затем через рефлексию берутся типы(классы) и создаются объекты.

Спасибо: Макс

VassilSanych

Фотография
Дата: 27.03.2013
Ответить


Макс: есть пример? не умею это делать.

var strategyLib = Assembly.LoadFrom(Path.Combine(dir, fileName));
var strategyType = strategyLib.GetExportedTypes()
		.FirstOrDefault(x => 
			typeof(IStrategyFactory).IsAssignableFrom(x));
if (strategyType != null)
{
	var strategyFactory = (IStrategyFactory)strategyLib
		.CreateInstance(strategyType.FullName);
	return strategyFactory.Create();
}
else
	throw new NotImplementedException("strategyLib does not implement IStrategyFactory");
Спасибо:

esper

Фотография
Дата: 27.03.2013
Ответить


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

Спасибо:

Макс

Фотография
Дата: 27.03.2013
Ответить


А кто-нибудь торгует несколько стратегий через quik? Как Вы это реализовали?

Спасибо:

VassilSanych

Фотография
Дата: 27.03.2013
Ответить


esper: Динамическая подгрузка это конечно хорошо, но нельзя просто так выгрузить ранее загруженную сборку, а значит нельзя и повторно ее загрузить после правки. Можно загрузить её под другим именем

Спасибо:

VassilSanych

Фотография
Дата: 27.03.2013
Ответить


Ещё можно:

  • использовать MEF
  • Shadow Copy, как в ASP.NET
    • собственно можно напрямую использовать ASP.NET. Это добавит системе устойчивости.
  • отдельный AppDomain (правда придётся налаживать междоменное взаимодействие)
  • использовать скрипты В любом случае необходимо профилировать память на предмет хвостов от использованного кода. Иначе течь будет обязательно.
Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy