Regra para Ordens

Visão Geral

SimpleOrderRulesStrategy é uma estratégia que demonstra a utilização de regras para processar eventos relacionados com ordens no StockSharp. Subscreve negócios e cria regras para processar eventos de registo de ordens.

Componentes Principais

// Componentes principais
public class SimpleOrderRulesStrategy : Strategy
{
}

Método OnStarted

Chamado quando a estratégia inicia:

  • Cria uma subscrição de ticks
  • Cria dois conjuntos de regras para processar eventos de registo de ordens
// Método OnStarted
protected override void OnStarted2(DateTime time)
{
	var sub = new Subscription(DataType.Ticks, Security);

	sub.WhenTickTradeReceived(this).Do(() =>
	{
		var order = CreateOrder(Sides.Buy, default, 1);

		var ruleReg = order.WhenRegistered(this);
		var ruleRegFailed = order.WhenRegisterFailed(this);

		ruleReg
			.Do(() => LogInfo("Ordem №1 registrada"))
			.Once()
			.Apply(this)
			.Exclusive(ruleRegFailed);

		ruleRegFailed
			.Do(() => LogInfo("Order №1 RegisterFailed"))
			.Once()
			.Apply(this)
			.Exclusive(ruleReg);

		RegisterOrder(order);
	}).Once().Apply(this);

	sub.WhenTickTradeReceived(this).Do(() =>
	{
		var order = CreateOrder(Sides.Buy, default, 10000000);

		var ruleReg = order.WhenRegistered(this);
		var ruleRegFailed = order.WhenRegisterFailed(this);

		ruleReg
			.Do(() => LogInfo("Ordem №2 registrada"))
			.Once()
			.Apply(this)
			.Exclusive(ruleRegFailed);

		ruleRegFailed
			.Do(() => LogInfo("Order №2 RegisterFailed"))
			.Once()
			.Apply(this)
			.Exclusive(ruleReg);

		RegisterOrder(order);
	}).Once().Apply(this);

	// Enviar solicitação de assinatura de dados de mercado.
	Subscribe(sub);

	base.OnStarted2(time);
}

Lógica

Primeiro Conjunto de Regras

  • Quando é recebido um tick, cria uma ordem para comprar 1 unidade
  • A ordem é criada usando o método CreateOrder, especificando direcção, preço (default = mercado) e volume
  • Define regras para processar registo bem-sucedido e erros de registo
  • As regras são mutuamente exclusivas e são accionadas apenas uma vez

Segundo Conjunto de Regras

  • Quando é recebido o tick seguinte, cria uma ordem para comprar 10.000.000 unidades
  • Define, de forma semelhante, regras para processar registo bem-sucedido e erros de registo
  • As regras também são mutuamente exclusivas e são accionadas apenas uma vez

Funcionalidades

  • Demonstra a criação de regras para processar eventos de registo de ordens
  • Usa o mecanismo de regras mutuamente exclusivas (Exclusive)
  • Mostra um exemplo de registo de informação sobre eventos de ordens usando o método LogInfo
  • Ilustra a utilização de Once() para limitar o accionamento da regra
  • Cria ordens com volumes diferentes para demonstrar vários cenários (registo bem-sucedido e erro de registo)