Le regolarità dei movimenti dei prezzi: Parte 1. Orientamento al prezzo - pagina 11

 
HideYourRichess:
Dite qualche parola sulla metodologia di test. Hai onestamente generato una serie di barre e poi controllato esterno/interno, o hai semplicemente usato i numeri di SB?


Avevo già preparato una serie casuale di 3.000.000 di barre indipendenti. Il meccanismo di generazione è semplice: è il solito +1 -1 binario vagante assemblato in barre con un numero uguale di tick. Ecco il codice completo in C# (a proposito, l'algoritmo genera in modo fenomenale):

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

Successivamente, il seguente script WL viene eseguito sul grafico risultante:

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

Anche la distribuzione di Pareto è venuta fuori facilmente. Invece di un numero fisso di tick ho usato un volume di EURUSD 5m tick. Si scopre che ogni barra imita abbastanza accuratamente la volatilità del reale EURUSD.
 
poruchik:
L'ho postato qui:)
Senc. Già scaricato...
 
Roman100:
Ci sarà un 50/50 di possibilità di muoversi in un modo o nell'altro.

L'hai testato o stai tirando a indovinare? Ripeto la domanda: quali sono le statistiche per la direzione del movimento del prezzo dopo la rottura di un triangolo conico in relazione alla direzione della barra volatile (esterna)? Presumo che la direzione dovrebbe essere quella opposta.
 
C-4:


Avevo già preparato una serie casuale di 3.000.000 di barre indipendenti. Il meccanismo di generazione è semplice: è il solito +1 -1 binario vagante assemblato in barre con un numero uguale di tick. Ecco il codice completo in C# (a proposito, l'algoritmo genera in modo fenomenale):

Forte, sì. E come funziona questa funzione da WL? a proposito, cinque o sei?
 
C-4:

Un test della distribuzione di tipo Paretto:

Allargamento della gamma: 69206(8.04%)
Restringimento della gamma: 68867(8%)

Cifre? Le probabilità sono uguali! La versione della volatilità non è confermata.

Come si può vedere, le differenze sono significative.

Ciò significa che la distribuzione di Paretto non riflette gli effetti del bue reale. Lo script è basato su quello reale e il rapporto tra barre interne ed esterne è quasi lo stesso di quello reale.
 

Purtroppo uso il 5 senza licenza. Gli algoritmi reali sono scambiati sotto Stock C# e non c'è bisogno della licenza WL6 in quanto tale. Ma per la ricerca Wealth è quasi una piattaforma ideale. Ci si può caricare tutto quello che si vuole.

I codici WL stessi sono di solito speciali file XML con codice C# al loro interno. Ma potete anche usare la dll C# e gli ambienti di sviluppo corrispondenti. Testiamo idee semplici direttamente in WL, mentre scrivo classi speciali in VS2008 sotto forma di dll e le collego all'interno del wrapper XML. Ecco un esempio di lavoro 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 classe PriceGenerator e il suo metodo GetRandomBars() sono definiti in una libreria dll esterna con lo spazio dei nomi WealthLab.MyIndicators. Come risultato di questo codice, un altro grafico appare sul grafico che mostra una rampa casuale in parallelo. Prova a fare lo stesso in MT4/5 con 4 righe di codice:)

 
Avals:

Questo significa che la distribuzione di tipo Paretto non riflette gli effetti del bue reale. Ho dato una versione dello script in cui il bue è preso da quello reale e il rapporto tra barre interne e barre esterne è quasi lo stesso di quello reale.

Scaveremo. Ricontrollo la distribuzione.
 
gpwr:

L'hai testato o stai tirando a indovinare? Ripeto la domanda: quali sono le statistiche della direzione del movimento dei prezzi dopo la rottura del triangolo restringente in relazione alla direzione della barra volatile (esterna)? Presumo che la direzione dovrebbe essere quella opposta.

Ho fatto alcuni calcoli che lo dimostrano indirettamente.
Ma questa è una formulazione leggermente diversa della domanda)

Se il rapporto è una somma assoluta, allora avete ragione; se è un rapporto di quantità, allora avete torto.

Credo di sì... Ma per il bene dell'interesse è meglio controllare.

 
poruchik:
Dima, mi sono ricordato di questa cosa oggi - una candela master - 4 candele dentro 1
i risultati sono abbastanza favorevoli
Guarda le statistiche su questo, ma c'è anche una gamma di p. così 60
Ok, lo guarderò più tardi. Ora sto scrivendo gli script per un nuovo argomento - la prossima parte di "Regolarità dei movimenti dei prezzi".
 
DmitriyN:

Un argomento molto utile. Dmitriy, ben fatto!)