Regla para órdenes

Descripción general

SimpleOrderRulesStrategy es una estrategia que demuestra el uso de reglas para procesar eventos relacionados con órdenes en StockSharp. Se suscribe a operaciones y crea reglas para procesar eventos de registro de órdenes.

Componentes principales

// Componentes principales
public class SimpleOrderRulesStrategy : Strategy
{
}

Método OnStarted

Se llama cuando se inicia la estrategia:

  • Crea una suscripción a ticks
  • Crea dos conjuntos de reglas para procesar eventos de registro de órdenes
// 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("Orden №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("Orden №2 registrada"))
			.Once()
			.Apply(this)
			.Exclusive(ruleRegFailed);

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

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

	// Envío de solicitud para suscribirse a datos de mercado.
	Subscribe(sub);

	base.OnStarted2(time);
}

Lógica

Primer conjunto de reglas

  • Cuando se recibe un tick, crea una orden para comprar 1 unidad
  • La orden se crea mediante el método CreateOrder, especificando dirección, precio (default = mercado) y volumen
  • Establece reglas para procesar el registro correcto y los errores de registro
  • Las reglas son mutuamente excluyentes y se activan solo una vez

Segundo conjunto de reglas

  • Cuando se recibe el siguiente tick, crea una orden para comprar 10 000 000 unidades
  • De forma similar, establece reglas para procesar el registro correcto y los errores de registro
  • Las reglas también son mutuamente excluyentes y se activan solo una vez

Características

  • Demuestra la creación de reglas para procesar eventos de registro de órdenes
  • Usa el mecanismo de reglas mutuamente excluyentes (Exclusive)
  • Muestra un ejemplo de logging de información sobre eventos de órdenes mediante el método LogInfo
  • Ilustra el uso de Once() para limitar la activación de reglas
  • Crea órdenes con volúmenes diferentes para demostrar varios escenarios (registro correcto y error de registro)