Estrategia Stairs de contratendencia
Descripción general
StairsCountertrendStrategy es una estrategia de trading de contratendencia que abre posiciones contra una tendencia establecida de una longitud específica.
Componentes principales
public class StairsCountertrendStrategy : Strategy
{
private readonly StrategyParam<int> _length;
private readonly StrategyParam<DataType> _candleType;
private int _bullLength;
private int _bearLength;
}
Parámetros de estrategia
La estrategia permite personalizar los siguientes parámetros:
- Length - número de velas consecutivas en una dirección para identificar una tendencia (predeterminado 3)
- CandleType - tipo de vela con el que trabajar (predeterminado 5 minutos)
El parámetro Length está disponible para optimización en el rango de 2 a 10 con un paso de 1.
Inicialización de la estrategia
En el método OnStarted2, se restablecen los contadores, se crea la suscripción a velas y se prepara la visualización:
protected override void OnStarted2(DateTime time)
{
base.OnStarted2(time);
// Restablecer contadores
_bullLength = 0;
_bearLength = 0;
// Crear suscripción
var subscription = SubscribeCandles(CandleType);
subscription
.Bind(ProcessCandle)
.Start();
// Configurar visualización en el gráfico
var area = CreateChartArea();
if (area != null)
{
DrawCandles(area, subscription);
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)
{
// Comprobar si la vela está finalizada
if (candle.State != CandleStates.Finished)
return;
// Comprobar si la estrategia está lista para operar
if (!IsFormedAndOnlineAndAllowTrading())
return;
// Actualizar contadores según la dirección de la vela
if (candle.OpenPrice < candle.ClosePrice)
{
// Vela alcista
_bullLength++;
_bearLength = 0;
}
else if (candle.OpenPrice > candle.ClosePrice)
{
// Vela bajista
_bullLength = 0;
_bearLength++;
}
// Estrategia de contratendencia:
// Vender después de Length velas alcistas consecutivas
if (_bullLength >= Length && Position >= 0)
{
SellMarket(Volume + Math.Abs(Position));
}
// Comprar después de Length velas bajistas consecutivas
else if (_bearLength >= Length && Position <= 0)
{
BuyMarket(Volume + Math.Abs(Position));
}
}
Lógica de trading
- Señal de venta:
Lengthvelas alcistas consecutivas (precio de cierre por encima del precio de apertura) cuando no hay posición corta - Señal de compra:
Lengthvelas bajistas consecutivas (precio de cierre por debajo del precio de apertura) 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
- La estrategia usa órdenes de mercado para entrada en posición
- La estrategia aplica un enfoque de contratendencia, abriendo posiciones contra la tendencia establecida
- Los contadores de velas se restablecen cuando aparece una vela en la dirección opuesta
- Las velas y operaciones se visualizan en el gráfico cuando hay un área gráfica disponible
- Se admite optimización de longitud de secuencia para encontrar ajustes óptimos de estrategia