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 de bandas de Bollinger (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 de bandas de Bollinger, 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 negociación:
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 negociación:
// 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 negociación
- 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