Las regularidades de los movimientos de los precios: Parte 1. Orientación de precios - página 11

 
HideYourRichess:
Diga unas palabras sobre la metodología de las pruebas. ¿Generó honestamente una serie de barras y luego comprobó las externas/internas, o simplemente utilizó los números de la SB?


Ya tenía preparada una serie aleatoria de 3.000.000 de barras independientes. El mecanismo de generación es sencillo: se trata del habitual vagabundeo binario +1 -1 ensamblado en barras con igual número de ticks. Aquí está el código completo en C# (por cierto, el algoritmo genera fenomenalmente rápido):

/// <summary>
        /// Возвращает случайно сгенерированную серию баров
        /// </summary>
        /// <param name="Сount"> Количество баров</param>
        /// <returns></returns>
        public static Bars GetRandomBars(int Count)
        {
            Bars RandomBars = new Bars("Random Bars", BarScale.Minute, 1);
            Random rnd = new Random();
            byte[] byte_array = new byte[375];
            int open = 100000;
            int close;
            int high;
            int low;
            DateTime first_data = DateTime.Now.AddMinutes(Count * (-1));
            for (int bar = 0; bar < Count; bar++)
            {
                close = open;
                high = open;
                low = open;
                rnd.NextBytes(byte_array);
                BitArray MyBit = new BitArray(byte_array);
                for(int k = 0; k < MyBit.Count; k++)
                {
                    close += MyBit[k] ? 1 : -1;
                    if(close < high && close > low)continue;
                    if(close > high) high = close;
                    else if(close < low) low = close;
                }
                RandomBars.Add(first_data, open, high, low, close, MyBit.Count);
                first_data = first_data.AddMinutes(1);
                open = close;
            }
            SaveBarsToCSV(RandomBars);
            return RandomBars;
        }

A continuación, se ejecuta el siguiente script WL en el gráfico resultante:

namespace WealthLab.Strategies
{
        public class MyStrategy : WealthScript
        {
                protected override void Execute()
                {
                        int ExBar=0, EnBar=0;
                        for(int bar = 1; bar < Bars.Count; bar++)
                        {
                                if(High[bar] < High[bar-1] && Low[bar] > Low[bar-1])
                                        EnBar++;
                                if(High[bar] > High[bar-1] && Low[bar] < Low[bar-1])
                                        ExBar++;
                        }
                        double percent_ex = Math.Round((double)ExBar /(double)Bars.Count * 100.0, 2);
                        double percent_en = Math.Round((double)EnBar /(double)Bars.Count * 100.0, 2);
                        PrintDebug("Расширение диапозона: " + ExBar + "(" + percent_ex + "%)");
                        PrintDebug("Сужение диапозона: " + EnBar + "(" + percent_en + "%)");
                }
        }
}

La distribución de Pareto también resultó fácil. En lugar de un número fijo de ticks, he utilizado un volumen de 5m de ticks del EURUSD. Resulta que cada barra imita con bastante precisión la volatilidad del EURUSD real.
 
poruchik:
Lo he publicado aquí:)
Senc. Ya se ha descargado...
 
Roman100:
Habrá un 50 por ciento de posibilidades de moverse en un sentido o en otro.

¿Lo has probado o lo estás adivinando? Permítanme repetir la pregunta: ¿cuáles son las estadísticas de la dirección del movimiento del precio después de romper un triángulo cónico en relación con la dirección de la barra volátil (exterior)? Supongo que la dirección debería ser en sentido contrario.
 
C-4:


Ya tenía preparada una serie aleatoria de 3.000.000 de barras independientes. El mecanismo de generación es sencillo: se trata del habitual vagabundeo binario +1 -1 ensamblado en barras con igual número de ticks. Aquí está el código completo en C# (por cierto, el algoritmo genera fenomenalmente rápido) :

Genial, sí. ¿Y cómo se ejecuta esta función desde WL? por cierto, ¿cinco o seis?
 
C-4:

Una prueba de la distribución tipo Paretto:

Ampliación de la gama: 69206(8,04%)
Reducción del rango: 68867(8%)

¿Figuras? Las probabilidades son iguales. La versión de la volatilidad no está confirmada.

Como puede verse, las diferencias son significativas.

Esto significa que la distribución de Paretto no refleja los efectos del buey real. El guión está basado en el real y la proporción de barras interiores y exteriores es casi la misma que en el real.
 

Desgraciadamente utilizo el 5 sin licencia. Los algoritmos reales se comercializan bajo Stock C# y no es necesaria la licencia WL6 como tal. Pero para la investigación, Wealth es casi una plataforma ideal. Puedes cargar lo que quieras en él.

Los códigos WL suelen ser archivos XML especiales con código C# en su interior. Pero también puede utilizar la dll de C# y los entornos de desarrollo correspondientes. Pruebo ideas sencillas directamente en WL, mientras escribo clases especiales en VS2008 en forma de dlls y las enlazo dentro del wrapper XML. He aquí un ejemplo de trabajo completo:

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using WealthLab.MyIndicators;

namespace WealthLab.Strategies
{
        public class MyStrategy : WealthScript
        {
                protected override void Execute()
                {
                        //Получить последовательность из 1000 случайных баров
                        Bars RandomBars = PriceGenerator.GetRandomBars(1000);
                        //Подготовить новое окно чарта.
                        ChartPane RandomPane = CreatePane(50, false, true);
                        //Синхронизировать по времени данные текущего графика с данными RandomBars
                        RandomBars = Synchronize(RandomBars);
                        //Отобразить в виде свечей график случайного блуждания под окном основного инструмента.
                        PlotSymbol(RandomPane, RandomBars, Color.Black, Color.Black);
                }
        }
}

La clase PriceGenerator y su método GetRandomBars() están definidos en una biblioteca dll externa con el espacio de nombres WealthLab.MyIndicators. Como resultado de este código, aparece otro gráfico en la carta que muestra una rampa aleatoria en paralelo. Intenta hacer lo mismo en MT4/5 con 4 líneas de código:)

 
Avals:

Esto significa que la distribución tipo Paretto no refleja los efectos del buey real. He dado una versión del script en la que el buey está sacado del real y la relación entre barras interiores y exteriores es casi la misma que en el real.

Vamos a cavar. Volveré a comprobar la distribución.
 
gpwr:

¿Lo has probado o lo estás adivinando? Repetiré la pregunta: ¿cuáles son las estadísticas de la dirección del movimiento del precio tras la ruptura del triángulo de estrechamiento en relación con la dirección de la barra volátil (exterior)? Supongo que la dirección debería ser en sentido contrario.

He hecho algunos cálculos que lo demuestran indirectamente.
Pero esta es una formulación ligeramente diferente de la pregunta)

Si la relación es una suma absoluta, entonces tienes razón; si es una relación de cantidad, entonces estás equivocado.

Creo que sí... Pero por el interés es mejor comprobarlo.

 
poruchik:
Dima, hoy me he acordado de esta cosa - la vela maestra - 4 velas dentro de 1
los resultados son bastante favorables
Mira las estadísticas de ese, pero también hay un rango de p. así que 60
Vale, lo miraré más tarde. Ahora estoy escribiendo guiones para un nuevo tema: la siguiente parte de "Regularidades de los movimientos de los precios".
 
DmitriyN:

Un tema muy útil. Dmitriy, ¡bien hecho!)
Razón de la queja: