Category Oscilators  Published on 23/01/2021

Frequency2

Description

Hola,

Continuamos con el estudio de la frecuencia.

En este caso nos basamos en el volumen en lugar del número de operaciones ya que es un dato disponible y ambos están fuertemente correlacionados.

Dado que el precio de cierre es el resultado de la suma de alzas y bajas en un periodo de tiempo, nos permitirá calcular el volumen alcista y el volumen bajista de forma aproximada porque no todas las operaciones se hacen con el mismo volumen. Pero creo el resultado es próximo a la realidad. 

Trazaremos el promedio móvil teniendo en cuenta que los promedios móviles acumulan retraso cuanto mayor es el periodo. Los más inquietos pueden calcular promedios exponenciales o incluso usar la media de Hull para un seguimiento con menor retraso.

Espero que les divierta. Gracias por su amable atención.

 

 


using System;
using cAlgo.API;
using cAlgo.API.Internals;
using cAlgo.API.Indicators;
using cAlgo.Indicators;

namespace cAlgo
{
    [Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class Frequency2 : Indicator
    {
        [Parameter(DefaultValue = 15)]
        public int periods { get; set; }

        [Output("Result1", LineColor = "Green", PlotType = PlotType.Histogram)]
        public IndicatorDataSeries Result1 { get; set; }

        [Output("Result2", LineColor = "Red", PlotType = PlotType.Histogram)]
        public IndicatorDataSeries Result2 { get; set; }

        [Output("Result3", LineColor = "SeaGreen")]
        public IndicatorDataSeries Result3 { get; set; }

        [Output("Result4", LineColor = "Tomato")]
        public IndicatorDataSeries Result4 { get; set; }

        private double volume, range, close, result;

        protected override void Initialize()
        {
        }

        public override void Calculate(int index)
        {
            volume = Bars.TickVolumes[index];
            range = Bars.HighPrices[index] - Bars.LowPrices[index];
            close = Bars.ClosePrices[index] - Bars.OpenPrices[index];
            result = close / range * volume;

            if (result > 0)
            {
                Result1[index] = result;
                Result2[index] = result - volume;
            }

            if (result < 0)
            {
                Result1[index] = volume + result;
                Result2[index] = result;
            }

            if (result == 0)
            {
                Result1[index] = volume / 2;
                Result2[index] = -volume / 2;
            }

            Result3[index] = Result1.Sum(periods) / periods;
            Result4[index] = Result2.Sum(periods) / periods;
        }
    }
}


srm_bcn's avatar
srm_bcn

Joined on 01.09.2019

  • Distribution: Free
  • Language: C#
  • Trading platform: cTrader Automate
  • File name: Frequency2.algo
  • Rating: 0
  • Installs: 1109
  • Modified: 13/10/2021 09:54
Comments
Log in to add a comment.
No comments found.