Die Regelmäßigkeiten der Preisbewegungen: Teil 1. Preisorientierung - Seite 11

 
HideYourRichess:
Sagen Sie ein paar Worte über die Testmethode. Haben Sie wirklich eine Reihe von Balken erstellt und dann extern/intern geprüft, oder wurden nur die SB-Nummern verwendet?


Ich hatte bereits eine vorbereitete Zufallsreihe von 3.000.000 unabhängigen Balken. Der Erzeugungsmechanismus ist einfach: Es handelt sich um die übliche binäre Wanderung +1 -1, die in Balken mit einer gleichen Anzahl von Ticks zusammengefasst wird. Hier ist der vollständige Code in C# (übrigens generiert der Algorithmus phänomenal schnell):

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

Anschließend wird das folgende WL-Skript auf das resultierende Diagramm angewendet:

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 + "%)");
                }
        }
}

Auch die Pareto-Verteilung war leicht zu finden. Anstelle einer festen Anzahl von Ticks habe ich ein EURUSD-Volumen von 5 Ticks verwendet. Es zeigt sich, dass jeder Balken die Volatilität des realen EURUSD ziemlich genau imitiert.
 
poruchik:
Ich habe es hier gepostet:)
Senc. Bereits heruntergeladen...
 
Roman100:
Die Chancen stehen 50:50, dass es in die eine oder andere Richtung geht.

Haben Sie das getestet oder raten Sie nur? Lassen Sie mich die Frage wiederholen: Wie sehen die Statistiken für die Richtung der Kursbewegung nach dem Durchbrechen eines spitz zulaufenden Dreiecks im Verhältnis zur Richtung des volatilen (äußeren) Balkens aus? Ich nehme an, dass die Richtung in die entgegengesetzte Richtung gehen sollte.
 
C-4:


Ich hatte bereits eine vorbereitete Zufallsreihe von 3.000.000 unabhängigen Balken. Der Erzeugungsmechanismus ist einfach: Es handelt sich um die übliche binäre Wanderung +1 -1, die in Balken mit einer gleichen Anzahl von Ticks zusammengefasst wird. Hier ist der vollständige Code in C# (übrigens generiert der Algorithmus phänomenal schnell) :

Cool, ja. Und wie läuft diese Funktion von WL? Übrigens, fünf oder sechs?
 
C-4:

Ein Test der Paretto-Typ-Verteilung:

Bereichserweiterung: 69206(8,04%)
Verengung des Bereichs: 68867(8%)

Zahlen? Die Wahrscheinlichkeiten sind gleich! Die Version der Volatilität ist nicht bestätigt.

Wie Sie sehen können, sind die Unterschiede erheblich.

Dies bedeutet, dass die Paretto-Verteilung die Auswirkungen des echten Ochsen nicht widerspiegelt. Das Skript basiert auf dem echten Skript, und das Verhältnis von inneren zu äußeren Balken ist fast dasselbe wie im echten Skript.
 

Leider verwende ich nicht lizenzierte 5. Real-Algorithmen werden unter Stock C# gehandelt und es besteht keine Notwendigkeit für eine WL6-Lizenz als solche. Aber für die Forschung ist Wealth eine nahezu ideale Plattform. Sie können alles, was Sie wollen, dort hineinladen.

Die WL-Codes selbst sind in der Regel spezielle XML-Dateien mit C#-Code darin. Sie können aber auch C# dll und entsprechende Entwicklungsumgebungen verwenden. Einfache Ideen teste ich direkt in WL, während ich spezielle Klassen in VS2008 in Form von Dlls schreibe und sie innerhalb des XML-Wrappers verknüpfe. Hier ist ein Beispiel für eine vollständige Arbeit:

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

Die PriceGenerator-Klasse und ihre GetRandomBars()-Methode sind in einer externen DLL-Bibliothek mit dem Namensraum WealthLab.MyIndicators definiert. Als Ergebnis dieses Codes erscheint ein weiteres Diagramm auf der Karte, das eine zufällige Rampe parallel dazu zeigt. Versuchen Sie, dasselbe in MT4/5 mit 4 Zeilen Code zu tun:)

 
Avals:

Dies bedeutet, dass die Paretto-Verteilung die Auswirkungen des echten Ochsen nicht widerspiegelt. Ich habe eine Version des Skripts angegeben, bei der der Ochse vom echten Ochsen übernommen wurde, und das Verhältnis von inneren zu äußeren Balken ist fast dasselbe wie beim echten Ochsen.

Wir werden graben. Ich werde die Verteilung noch einmal überprüfen.
 
gpwr:

Haben Sie das getestet oder raten Sie nur? Ich wiederhole die Frage: Wie sieht die Statistik der Richtung der Kursbewegung nach dem Bruch des sich verengenden Dreiecks im Verhältnis zur Richtung des volatilen (äußeren) Balkens aus? Ich nehme an, dass die Richtung in die entgegengesetzte Richtung gehen sollte.

Ich habe einige Berechnungen angestellt, die dies indirekt zeigen.
Aber das ist eine etwas andere Formulierung der Frage)

Wenn es sich um ein absolutes Verhältnis handelt, haben Sie Recht, wenn es sich um ein Mengenverhältnis handelt, haben Sie Unrecht.

Ich glaube ja... Aber aus Interesse ist es besser, das zu überprüfen.

 
poruchik:
Dima, ich habe mich heute an diese Sache erinnert - die Meisterkerze - 4 Kerzen in 1
die Ergebnisse sind recht günstig
Schauen Sie sich die Statistiken dazu an, aber es gibt auch einen Bereich von p. also 60
Okay, ich werde es mir später ansehen. Ich schreibe jetzt Skripte für ein neues Thema - den nächsten Teil von "Regularities of price movements".
 
DmitriyN:

Ein sehr nützliches Thema. Dmitriy, gut gemacht!)