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

Несколько стратегий через quik
Atom
3/26/2013
Макс


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

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


Tags:


Thanks:


1 2  >
VassilSanych

Avatar
Date: 3/26/2013
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 3/26/2013
Reply


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

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

Студия?

Thanks:

Макс

Avatar
Date: 3/26/2013
Reply


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

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

Thanks:

Макс

Avatar
Date: 3/26/2013
Reply


Студия?

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

Thanks:

Moadip

Avatar
Date: 3/26/2013
Reply


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

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

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

Макс:

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

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

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

Thanks: Макс

VassilSanych

Avatar
Date: 3/27/2013
Reply


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

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");
Thanks:

esper

Avatar
Date: 3/27/2013
Reply


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

Thanks:

Макс

Avatar
Date: 3/27/2013
Reply


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

Thanks:

VassilSanych

Avatar
Date: 3/27/2013
Reply


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

Thanks:

VassilSanych

Avatar
Date: 3/27/2013
Reply


Ещё можно:

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

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy