As regularidades de movimentos de preços: Parte 1. Orientação de preços - página 11

 
HideYourRichess:
Diga algumas palavras sobre a metodologia de teste. Você gerou honestamente uma série de barras e depois verificou externa/internamente, ou os números SB foram apenas usados?


Eu já tinha uma série aleatória pré-preparada de 3.000.000 de barras independentes. O mecanismo de geração é simples: é o usual +1 -1 vagão binário montado em barras com um número igual de carrapatos. Aqui está o código completo em C# (a propósito, o algoritmo gera 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 seguir, o seguinte roteiro WL é executado no 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 + "%)");
                }
        }
}

A distribuição de Pareto também saiu fácil. Em vez de um número fixo de carrapatos, usei um volume de carrapatos EURUSD de 5 milhões. Acontece que cada barra imita com bastante precisão a volatilidade do verdadeiro EURUSD.
 
poruchik:
Eu afixei aqui:)
Senc. Já baixado...
 
Roman100:
Haverá uma chance de 50/50 de se mover de uma forma ou de outra.

Você já o testou ou está adivinhando? Deixe-me repetir a pergunta: quais são as estatísticas para a direção do movimento de preços depois de quebrar um triângulo afunilado em relação à direção da barra volátil (externa)? Presumo que a direção deve ser na direção oposta.
 
C-4:


Eu já tinha uma série aleatória pré-preparada de 3.000.000 de barras independentes. O mecanismo de geração é simples: é o usual +1 -1 vagão binário montado em barras com um número igual de carrapatos. Aqui está o código completo em C# (a propósito, o algoritmo gera fenomenalmente rápido) :

Legal, sim. E como essa função funciona a partir da WL? a propósito, cinco ou seis?
 
C-4:

Um teste de distribuição tipo Paret-to:

Ampliação do alcance: 69206(8,04%)
Estreitamento do alcance: 68867(8%)

Números? As probabilidades são as mesmas! A versão da volatilidade não está confirmada.

Como pode ser visto, as diferenças são significativas.

Isto significa que a distribuição de Paretto não reflete os efeitos do verdadeiro boi. O roteiro é baseado no real e a relação entre barras internas e externas é quase a mesma que na barra real.
 

Infelizmente utilizo não licenciado 5. Os algoritmos reais são negociados sob o estoque C# e não há necessidade de licença WL6 como tal. Mas para a pesquisa, a Riqueza é quase uma plataforma ideal. Você pode carregar o que quiser dentro dele.

Os próprios códigos WL são geralmente arquivos XML especiais com código C# dentro deles. Mas você também pode usar C# dll e ambientes de desenvolvimento correspondentes. Eu testo idéias simples diretamente na WL, enquanto escrevo classes especiais na VS2008 na forma de dlls e as ligo dentro do invólucro XML. Aqui está um exemplo de trabalho 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);
                }
        }
}

A classe PriceGenerator e seu método GetRandomBars() são definidos em uma biblioteca dll externa com o espaço de nomes WealthLab.MyIndicators. Como resultado deste código, outro gráfico aparece no gráfico mostrando uma rampa aleatória em paralelo. Tente fazer o mesmo em MT4/5 com 4 linhas de código:)

 
Avals:

Isto significa que a distribuição tipo Paretto não reflete os efeitos do boi real. Dei uma versão do roteiro onde o boi é retirado do real e a proporção de barras internas para barras externas é quase a mesma que na real.

Vamos cavar. Vou checar novamente a distribuição.
 
gpwr:

Você já o testou ou está adivinhando? Vou repetir a pergunta: quais são as estatísticas da direção do movimento de preços após a quebra do triângulo estreito em relação à direção da barra volátil (externa)? Presumo que a direção deve ser na direção oposta.

Fiz alguns cálculos que indiretamente mostram isso.
Mas esta é uma formulação ligeiramente diferente da pergunta)

Se a razão é uma soma absoluta, então você está certo; se é uma razão de quantidade, então você está errado.

Eu acho que sim... Mas, por interesse, é melhor verificar.

 
poruchik:
Dima, lembrei-me hoje desta coisa - a vela mestra - 4 velas dentro de 1
os resultados são bastante favoráveis
Veja as estatísticas sobre essa, mas também há uma gama de p. so 60
Ok, verei isso mais tarde. Agora estou escrevendo roteiros para um novo tópico - a próxima parte de "Regularidades de movimentos de preços".
 
DmitriyN:

Um tópico muito útil. Dmitriy, bem feito!)