Creación de un indicador personalizado

Para crear un indicador personalizado es necesario:

  1. Crear un proyecto de biblioteca de clases en Visual Studio.
  2. Añadir una referencia a ATAS.Indicators.dll al proyecto, que se encuentra en la carpeta con el programa instalado.
  3. Sobrescribir la clase Indicator.
  4. Añadir las series de datos necesarias en el constructor: ValueDataSeries, RangeDataSeries, CandleDataSeries o PriceSelectionDataSeries.
  5. Describir la lógica del indicador en la función OnCalculate().
  6. Compilar la biblioteca.
  7. Colocar el archivo dll resultante en la carpeta Documents/ATAS/Indicators.
  8. Después de eso el indicador creado aparecerá en la lista de indicadores de la plataforma.

Puede descargar ejemplos del repositorio GitHub aquí. Es necesario añadir la versión actual de ATAS.Indicators.dll a references de este proyecto.

Ejemplo de creación de un indicador

Creamos la clase MyCustomIndicator, la heredamos de Indicator :

public class MyCustomIndicator:Indicator
{
    protected override void OnCalculate(int bar, decimal value)
    {
     
    }
} 

Determinamos el constructor. Si es necesario, añadimos el número necesario de series de datos. Por defecto, cada indicador tiene una ValueDataSeries. En este ejemplo añadiremos una ValueDataSeries más.

public MyCustomIndicator()
{
    DataSeries.Add(new ValueDataSeries("Values"));
} 

Determinemos la lógica del indicador. Por ejemplo, necesitamos un indicador que muestre los valores máximos de las dataseries entrantes para las últimas 10 barras:

protected override void OnCalculate(int bar, decimal value)
 {
     var period=10;   
     var start = Math.Max(0, bar - Period + 1);
     var count = Math.Min(bar + 1, Period);
     var max = (decimal)SourceDataSeries[start];
     for (var i = start + 1; i < start + count; i++)
     {
         max = Math.Max(max, (decimal)SourceDataSeries[i]);
     }
     this[bar] = max;
 }

El método OnCalculate es llamado para cada barra en el historial, luego es llamado en cada tick.

Todas las barras y los valores de sus correspondientes series de datos tienen un número secuencial. La barra más temprana del gráfico corresponde al número 0, la barra siguiente corresponde al número 1 y así sucesivamente.

Value que se pasa a este método depende de Source que puede seleccionar el usuario. Se pueden utilizar como origen Open,High,Low,Close de las velas o valores de otros indicadores

.

Image 11944

Hay situaciones en las que el indicador no necesita tener la posibilidad de seleccionar el origen (por ejemplo, los indicadores que utilizan sólo datos de velas en sus cálculos). En este caso, se puede ocultar la sección Source. Para ello, necesitamos llamar al constructor base en el constructor con el parámetro true.

public MyCustomIndicator(): base(true)
{
}