Несколько стратегий через 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


Студия?[/quote]

нет 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


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

Code
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