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
Joined on 01.09.2019
- Distribution: Free
- Language: C#
- Trading platform: cTrader Automate
- File name: Frequency2.algo
- Rating: 0
- Installs: 1110
- Modified: 13/10/2021 09:54