ActionStrategy и QuotingStrategy

ActionStrategy и QuotingStrategy
Atom
5/3/2011
freelancer


А есть примерчики по ActionStrategy и QuotingStrategy ? И в чём разница между ними ?


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 5/4/2011
Reply


freelancer: А есть примерчики по ActionStrategy и QuotingStrategy ? И в чём разница между ними ?

Документацию читали?[smile]

Thanks:

freelancer

Avatar
Date: 5/8/2011
Reply


Читал. Там есть пример стратегии, но нет кода как с ней работать

Thanks:

freelancer

Avatar
Date: 5/12/2011
Reply


Товарищи ! Нужен работающий пример с использованием ActionStrategy. Тут просят И тут тоже

Тут маловато

Thanks:

Mikhail Sukhov

Avatar
Date: 5/12/2011
Reply


freelancer: Товарищи ! Нужен работающий пример с использованием ActionStrategy. Тут просят И тут тоже

Тут маловато

Вы не с того конца подходите к задаче. ActionStrategy - это понимание работы делегатов в .NET. Лямбда выражений. Поймете их, поймете и ActionStrategy, потому что это производная вещь. Вот код хедж стратегии:

/// <summary>
/// Метод вызывается тогда, когда вызвался метод <see cref="Strategy.Start"/>,
/// но состояние процесса <see cref="Strategy.ProcessState"/> еще не перешло в значение <see cref="StrategyProcessStates.Runned"/>.
/// </summary>
protected override void OnRunning()
{
	base
		.When(_tradingStrategy.StrategyNewMyTrades())
		.Do(ReHedge)
		.MakePeriodical();

	base
		.When(base.Security.Changed())
		.Do(ReHedge)
		.MakePeriodical();

	base.OnRunning();
}

private void ReHedge()
{
	var futurePosition = _tradingStrategy.ChildStrategies.SyncGet(c =>
			(from strategy in c
			 let option = strategy.Security
			 select (option.Delta(option.Volatility / 100m)) * strategy.PositionManager.Position).Sum());

	AddInfoLog("Дельта позиции {0}.", futurePosition);

	var diff = (int)futurePosition - (int)base.PositionManager.Position;

	if (diff != 0)
	{
		var order = CreateOrder(diff > 0 ? OrderDirections.Buy : OrderDirections.Sell, 0, diff);
		ChildStrategies.Add(CreateQuoting(order));
	}
}
Thanks:

freelancer

Avatar
Date: 5/13/2011
Reply


Спасибо. Ну вот не работает и всё. Даже When(() => true)

Thanks:

Mikhail Sukhov

Avatar
Date: 5/14/2011
Reply


freelancer: Спасибо. Ну вот не работает и всё. Даже When(() => true)

Чуть подробнее.

Thanks:

freelancer

Avatar
Date: 5/14/2011
Reply


class GAStrategy : ActionStrategy
{
	protected override void OnRunning()
	{
	    When(() => true).
	    Do(() =>
	    {
	        AddLog(StrategyErrorStates.None, base.Security.LastTrade.Time.ToString(), null);
	    }).
	    MakePeriodical(); // сделать событие периодичным
	
	    base.OnRunning();
	}
}
_strategy = new GAStrategy() { Volume = NumberContracts, Security = _sec, Interval = TimeSpan.FromMinutes(2) };
_strategy.Log += OnLog;
_strategy.NewOrder += OnNewOrder;
_strategy.PropertyChanged += OnStrategyPropertyChanged;

_manager.Register(_strategy, portfoliosComboBox.SelectedPortfolio, _sec);

_candleManager.RegisterTimeFrameCandles(_sec, _timeFrame);

FileStrategyLogger fileLogger = new FileStrategyLogger("log.txt");

fileLogger.Strategies.Add(_strategy);

_trader.RegisterQuotes(_strategy.Security);
_trader.RegisterSecurity(_strategy.Security);
_strategy.Start();

И ничего не происходит (в логе только "Стратегия запущена")

Thanks:

Mikhail Sukhov

Avatar
Date: 5/14/2011
Reply


События активизируются в зависимости от интервала стратегии.

Thanks:

freelancer

Avatar
Date: 5/14/2011
Reply


Я ставил 2 мин. И ждал...

Thanks:

Mikhail Sukhov

Avatar
Date: 5/14/2011
Reply


freelancer: Я ставил 2 мин. И ждал...

Уберите инициализацию интервала.

Thanks:
1 2  >

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

loading
clippy