Estrategia Bollinger clásica

Descripción general

BollingerStrategyClassicStrategy es una estrategia basada en el indicador BollingerBands. Abre posiciones cuando el precio alcanza el límite superior o inferior de las bandas de Bollinger.

Componentes principales

La estrategia hereda de Strategy y usa parámetros para configuración:

public class BollingerStrategyClassicStrategy : Strategy
{
	private readonly StrategyParam<int> _bollingerLength;
	private readonly StrategyParam<decimal> _bollingerDeviation;
	private readonly StrategyParam<DataType> _candleType;

	private BollingerBands _bollingerBands;
}

Parámetros de estrategia

La estrategia permite personalizar los siguientes parámetros:

  • BollingerLength - periodo del indicador Bollinger Bands (predeterminado 20)
  • BollingerDeviation - multiplicador de desviación estándar (predeterminado 2.0)
  • CandleType - tipo de vela con el que trabajar (predeterminado 5 minutos)

Todos los parámetros están disponibles para optimización con rangos de valores especificados.

Inicialización de la estrategia

En el método OnStarted2, se crea el indicador Bollinger Bands, se configura la suscripción a velas y se prepara la visualización:

protected override void OnStarted2(DateTime time)
{
	base.OnStarted2(time);

	// Crear indicador
	_bollingerBands = new BollingerBands
	{
		Length = BollingerLength,
		Width = BollingerDeviation
	};

	// Crear suscripción y vincular indicador
	var subscription = SubscribeCandles(CandleType);
	subscription
		.BindEx(_bollingerBands, ProcessCandle)
		.Start();

	// Configurar visualización en el gráfico
	var area = CreateChartArea();
	if (area != null)
	{
		DrawCandles(area, subscription);
		DrawIndicator(area, _bollingerBands, System.Drawing.Color.Purple);
		DrawOwnTrades(area);
	}
}

Procesamiento de velas

El método ProcessCandle se llama para cada vela completada e implementa la lógica de trading:

private void ProcessCandle(ICandleMessage candle, IIndicatorValue bollingerValue)
{
	// Omitir velas incompletas
	if (candle.State != CandleStates.Finished)
		return;

	// Comprobar si la estrategia está lista para operar
	if (!IsFormedAndOnlineAndAllowTrading())
		return;

	var typed = (BollingerBandsValue)bollingerValue;

	// Lógica de trading:
	// Vender cuando el precio alcanza o supera la banda superior
	if (candle.ClosePrice >= typed.UpBand && Position >= 0)
	{
		SellMarket(Volume + Math.Abs(Position));
	}
	// Comprar cuando el precio alcanza o cae por debajo de la banda inferior
	else if (candle.ClosePrice <= typed.LowBand && Position <= 0)
	{
		BuyMarket(Volume + Math.Abs(Position));
	}
}

Lógica de trading

  • Señal de venta: el precio de cierre de la vela alcanza o supera la banda superior de Bollinger cuando no hay posición corta
  • Señal de compra: el precio de cierre de la vela alcanza o cae por debajo de la banda inferior de Bollinger cuando no hay posición larga
  • El volumen de posición aumenta por el importe de la posición actual con cada nueva operación

Características

  • La estrategia determina automáticamente los instrumentos con los que trabajar mediante el método GetWorkingSecurities()
  • La estrategia solo trabaja con velas completadas
  • El indicador y las operaciones se visualizan en un gráfico cuando hay un área gráfica disponible
  • Se admite optimización de parámetros para encontrar ajustes óptimos de estrategia