Закономерности движений цен: Часть 1. Ориентация цены - страница 11

 
HideYourRichess:
Скажите пару слов о методике тестирования. Честно генерили ряд баров и потом проверяли внешний/внутренний, или просто числа СБ использовались?


У меня уже был заранее подготовленный случайный ряд из 3 000 000 независимых баров. Механизм генерации прост: это обычное бинарное блуждание +1 -1 собранное в бары с равным количеством тиков. Вот полный код на C# (кстати, алгоритм генерирует феноменально быстро) :

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

Далее, на получившимся графике запускается следующий WL скрипт:

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

Паретовское распределение получилось тоже просто. Вместо фиксированного количества тиков использовал тиковый объем EURUSD 5м. Получается, что каждый бар весьма точно имитирует волатильность реального EURUSD.
 
poruchik:
я выложил тут:)
Cенк-с. Уже скачал...
 
Roman100:
Вероятность движения в ту или иную сторону будет 50/50.

Протестировали или предполагаете? Повторю вопрос: какова статистика направления движения цены после пробития сужающего треугольника по отношению к направлению волатильного (внешнего) бара? Предполагаю что напрвление должно быть в противоположную сторону.
 
C-4:


У меня уже был заранее подготовленный случайный ряд из 3 000 000 независимых баров. Механизм генерации прост: это обычное бинарное блуждание +1 -1 собранное в бары с равным количеством тиков. Вот полный код на C# (кстати, алгоритм генерирует феноменально быстро) :

Прикольно, да. А как эта функция запускается из WL? кстати, пятерка или шестерка?
 
C-4:

Тест на Распределении типа Паретто:

Расширение диапозона: 69206(8,04%)
Сужение диапозона: 68867(8%)

Фигасе? Вероятности равные! Версия о волатильности не подтверждается.

Как видно, различаются и весьма существенно.

это значит, что распределение типа Паретто не отображает эффектов реальной волы. Привел вариант скрипта, где вола берётся с реальной и отношение внутренних баров к внешним получается почти как на реальных.
 

К сожалению использую нелицензионную 5. Реал-алгоритмы у нас торгуются под Stock C# и надобности в лицензии WL6 как таковой нет. А для исследований Wealth - практически идеальная платформа. Грузить в нее можно все что угодно.

Сами коды для WL это как правило специальные XML-файлы внутри которых распологается C# код. Но можно использовать и C# dll и соотвествующие среды разработки. Простые идеи проверяю прямо в WL, сложные - пишу специальные классы на VS2008 в виде dll и линкую их уже в XML обертке. Вот пример полной работы:

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

Класс PriceGenerator и его метод GetRandomBars() определен во внешней dll библиотеки с пространством имен WealthLab.MyIndicators. В результате работы этого кода на графике появляется еще один график параллельно показывающий случайное блуждание. Попробуйте тоже сделать в МТ4/5 с помощью 4 строк кода:)

 
Avals:

это значит, что распределение типа Паретто не отображает эффектов реальной волы. Привел вариант скрипта, где вола берётся с реальной и отношение внутренних баров к внешним получается почти как на реальных.

Будем копать. Перепроверю распределение.
 
gpwr:

Протестировали или предполагаете? Повторю вопрос: какова статистика направления движения цены после пробития сужающего треугольника по отношению к направлению волатильного (внешнего) бара? Предполагаю что напрвление должно быть в противоположную сторону.

расчеты как-то проводил,которые косвенно об этом свидетельствуют.
Но это уже немного другая постановка вопроса)

Если отношение по абсолютному суммарнрму значению- то Вы правы, если по количеству-то не правы.

Думаю так... Но ради интересна лучше проверить.

 
poruchik:
Дима, сегодня вспомнил про такую штуку - мастер кэндл - 4 свечи внутри 1-ой
результаты - вполне благоприятные
посмотри статистику именно ее, правда там есть еще диапазон п. так 60
Хорошо, посмотрю несколько позже. Сейчас пишу скрипты для новой темы - следующей части "Закономерности движений цен".
 
DmitriyN:

Очень полезная тема. Дмитий, Вы молодец!))
Причина обращения: