Les régularités des mouvements de prix : 1ère partie. Orientation des prix - page 11

 
HideYourRichess:
Dites quelques mots sur la méthodologie des tests. Avez-vous honnêtement généré une série de barres et ensuite vérifié l'externe/l'interne, ou avez-vous simplement utilisé les numéros de SB ?
.


J'avais déjà préparé une série aléatoire de 3.000.000 de barres indépendantes. Le mécanisme de génération est simple : il s'agit de l'habituelle balade binaire +1 -1 assemblée en barres avec un nombre égal de ticks. Voici le code complet en C# (à propos, l'algorithme génère une vitesse phénoménale) :

/// <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;
        }

Ensuite, le script WL suivant est exécuté sur le graphique résultant :

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 distribution de Pareto s'est avérée facile aussi. Au lieu d'un nombre fixe de ticks, j'ai utilisé un volume EURUSD de 5m tick. Il s'avère que chaque barre imite assez fidèlement la volatilité de l'EURUSD réel.
 
poruchik:
Je l'ai posté ici :)
Senc. Déjà téléchargé...
 
Roman100:
Il y aura une chance sur deux pour que les choses bougent dans un sens ou dans l'autre.

L'avez-vous testé ou êtes-vous en train de deviner ? Je répète la question : quelles sont les statistiques concernant la direction du mouvement des prix après la rupture d'un triangle effilé par rapport à la direction de la barre volatile (extérieure) ? Je suppose que la direction devrait être dans la direction opposée.
 
C-4:


J'avais déjà préparé une série aléatoire de 3.000.000 de barres indépendantes. Le mécanisme de génération est simple : il s'agit de l'habituelle balade binaire +1 -1 assemblée en barres avec un nombre égal de ticks. Voici le code complet en C# (à propos, l'algorithme génère une vitesse phénoménale) :

Cool, ouais. Et comment cette fonction fonctionne-t-elle à partir de WL ? Au fait, cinq ou six ?
 
C-4:

Un test de la distribution de type Pareto :

Élargissement de la fourchette : 69206(8.04%)
Rétrécissement de la fourchette : 68867(8%)

Des chiffres ? Les probabilités sont égales ! La version de la volatilité n'est pas confirmée.

Comme on peut le constater, les différences sont significatives.

Cela signifie que la distribution de Paretto ne reflète pas les effets de l'ox réel. Le script est basé sur le script réel et le rapport entre les barres intérieures et extérieures est presque le même que dans le script réel.
 

Malheureusement, j'utilise 5 sans licence. Les algorithmes réels sont négociés sous Stock C# et il n'y a pas besoin de licence WL6 en tant que telle. Mais pour la recherche, Wealth est presque une plateforme idéale. Vous pouvez y charger tout ce que vous voulez.

Les codes WL eux-mêmes sont généralement des fichiers XML spéciaux contenant du code C#. Mais vous pouvez également utiliser le dll C# et les environnements de développement correspondants. Je teste des idées simples directement dans WL, tandis que j'écris des classes spéciales dans VS2008 sous forme de dlls et les lie à l'intérieur du wrapper XML. Voici un exemple de travail complet :

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 classe PriceGenerator et sa méthode GetRandomBars() sont définies dans une bibliothèque dll externe avec l'espace de nom WealthLab.MyIndicators. À la suite de ce code, un autre graphique apparaît sur le graphique montrant une rampe aléatoire en parallèle. Essayez de faire la même chose dans MT4/5 avec 4 lignes de code :)

 
Avals:

Cela signifie que la distribution de type Pareto ne reflète pas les effets de l'ox réel. J'ai donné une version du script où le bœuf est tiré du bœuf réel et le rapport entre les barres intérieures et les barres extérieures est presque le même que dans le bœuf réel.

Nous allons creuser. Je vais revérifier la distribution.
 
gpwr:

L'avez-vous testé ou êtes-vous en train de deviner ? Je répète la question : quelles sont les statistiques de la direction du mouvement des prix après la rupture du triangle rétrécissant par rapport à la direction de la barre volatile (extérieure) ? Je suppose que la direction devrait être dans la direction opposée.

J'ai fait quelques calculs qui le montrent indirectement.
Mais il s'agit d'une formulation légèrement différente de la question).

Si le rapport est une somme absolue, alors vous avez raison ; si c'est un rapport de quantité, alors vous avez tort.

Je pense que oui... Mais par souci d'intérêt, il est préférable de vérifier.

 
poruchik:
Dima, je me suis souvenu de cette chose aujourd'hui - une bougie maîtresse - 4 bougies à l'intérieur d'une seule.
les résultats sont assez favorables
Regardez les statistiques sur celui-ci, mais il y a aussi une gamme de p. donc 60
Ok, je regarderai ça plus tard. Je suis en train d'écrire des scripts pour un nouveau sujet - la partie suivante de "Régularités des mouvements de prix".
 
DmitriyN:

Un sujet très utile. Dmitriy, bravo !)