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


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

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

Теги:


Спасибо:



Именинники: esper

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
Ответить


Студия?[/quote]

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