Indicadores
El script "Indicator" está destinado a demostrar el trabajo con indicadores de análisis técnico dentro de la plataforma StockSharp. Permite cargar datos históricos, aplicarles distintos indicadores y mostrar los resultados en un gráfico. Este enfoque ayuda a analizar tendencias del mercado y tomar decisiones de trading informadas.

Capacidades funcionales
El script proporciona la siguiente funcionalidad:
- Carga de datos históricos: seleccionar instrumentos financieros de interés y cargar sus datos históricos para un período especificado.
- Aplicación de indicadores: aplicar uno o varios indicadores de análisis técnico a los datos cargados.
- Visualización: mostrar datos y resultados de análisis usando indicadores en un gráfico, proporcionando una vista clara de la dinámica del mercado.
Ejemplos de indicadores
El script puede trabajar con una amplia gama de indicadores, incluidos entre otros:
- Medias móviles (MA): representan el precio medio durante un cierto período y ayudan a identificar tendencias.
- Índice de fuerza relativa (RSI): evalúa la magnitud y velocidad de los cambios de precio, ayudando a identificar condiciones de sobrecompra o sobreventa.
- Bandas de Bollinger (BB): muestran el rango y la volatilidad de precios, basándose en medias móviles y desviaciones estándar.
Aplicación en trading y análisis
El uso de indicadores de análisis técnico mediante este script permite:
- Identificar tendencias: detectar la dirección de movimiento del mercado para planificar estrategias de entrada y salida.
- Identificar puntos de reversión: determinar momentos en los que la tendencia del mercado puede cambiar de dirección.
- Analizar volatilidad: evaluar el nivel de inestabilidad de precios para adaptar estrategias a las condiciones del mercado.
Implementación en el script
Para trabajar con el script, deben realizarse los siguientes pasos:
- Seleccionar instrumento y período: determinar valores y marco temporal para el análisis.
- Aplicar indicadores: elegir y configurar parámetros para los indicadores que se aplicarán a los datos.
- Mostrar resultados: visualizar datos históricos e indicadores en un gráfico para su análisis.
El script "Indicator" proporciona una herramienta potente para el análisis profundo de mercados financieros, permitiendo a traders y analistas usar estos indicadores para desarrollar estrategias de trading eficaces.
Código del script en C#
namespace StockSharp.Algo.Analytics
{
/// <summary>
/// Script analítico que usa el indicador ROC.
/// </summary>
public class IndicatorScript : IAnalyticsScript
{
Task IAnalyticsScript.Run(ILogReceiver logs, IAnalyticsPanel panel, SecurityId[] securities, DateTime from, DateTime to, IStorageRegistry storage, IMarketDataDrive drive, StorageFormats format, DataType dataType, CancellationToken cancellationToken)
{
if (securities.Length == 0)
{
logs.LogWarning("No instruments.");
return Task.CompletedTask;
}
// crear 2 paneles para velas y series de indicador
var candleChart = panel.CreateChart<DateTimeOffset, decimal>();
var indicatorChart = panel.CreateChart<DateTimeOffset, decimal>();
foreach (var security in securities)
{
// detener el cálculo si el usuario cancela la ejecución del script
if (cancellationToken.IsCancellationRequested)
break;
var candlesSeries = new Dictionary<DateTimeOffset, decimal>();
var indicatorSeries = new Dictionary<DateTimeOffset, decimal>();
// crear ROC
var roc = new RateOfChange();
// obtener almacenamiento de velas
var candleStorage = storage.GetCandleMessageStorage(security, dataType, drive, format);
foreach (var candle in candleStorage.Load(from, to))
{
// rellenar series
candlesSeries[candle.OpenTime] = candle.ClosePrice;
indicatorSeries[candle.OpenTime] = roc.Process(candle).ToDecimal();
}
// dibujar series en el gráfico
candleChart.Append($"{security} (close)", candlesSeries.Keys, candlesSeries.Values);
indicatorChart.Append($"{security} (ROC)", indicatorSeries.Keys, indicatorSeries.Values);
}
return Task.CompletedTask;
}
}
}
Código del script en Python
import clr
# Añadir referencias .NET
clr.AddReference("StockSharp.Messages")
clr.AddReference("StockSharp.Algo.Analytics")
clr.AddReference("Ecng.Drawing")
from Ecng.Drawing import DrawStyles
from System.Threading.Tasks import Task
from StockSharp.Algo.Analytics import IAnalyticsScript
from StockSharp.Algo.Indicators import ROC
from storage_extensions import *
from candle_extensions import *
from chart_extensions import *
from indicator_extensions import *
# Script analítico que usa el indicador ROC.
class indicator_script(IAnalyticsScript):
def Run(self, logs, panel, securities, from_date, to_date, storage, drive, format, data_type, cancellation_token):
if not securities:
logs.LogWarning("No instruments.")
return Task.CompletedTask
# crear 2 paneles para velas y series de indicador
candle_chart = create_chart(panel, datetime, float)
indicator_chart = create_chart(panel, datetime, float)
if data_type is None:
logs.LogWarning(f"Tipo de datos no admitido {data_type}.")
return Task.CompletedTask
message_type = data_type.MessageType
for security in securities:
# detener el cálculo si el usuario cancela la ejecución del script
if cancellation_token.IsCancellationRequested:
break
candles_series = {}
indicator_series = {}
# crear ROC
roc = ROC()
# obtener almacenamiento de velas
candle_storage = get_candle_storage(storage, security, data_type, drive, format)
for candle in load_range(candle_storage, message_type, from_date, to_date):
# rellenar series
candles_series[candle.OpenTime] = candle.ClosePrice
indicator_series[candle.OpenTime] = to_decimal(process_candle(roc, candle))
# dibujar series en el gráfico
candle_chart.Append(
f"{security} (close)",
list(candles_series.keys()),
list(candles_series.values())
)
indicator_chart.Append(
f"{security} (ROC)",
list(indicator_series.keys()),
list(indicator_series.values())
)
return Task.CompletedTask