Тестирование Систем прогнозирования в реальном времени - страница 19

 
grasn >>:

чуть позже смогу давать оценку вероятности осуществления прогноза. Вопрос - о какой корреляции Вы говорите, что имеется в виду?

Я имею ввиду нечто, позволяющее оценивать качество системы прогнозированияв каких нибудь баллах. Чтоб можно было взять 2 системы, оценить каждую в баллах, сравнить оценки и сказать "вот эта на XX качественнее той"

Вообще интересно было бы покумекать как более точно можно построит такую оценку..

Коэффициент корреляции - это первое что пришло в голову. Например так

Уходим в историю на пару лет

Через каждый час в истории запускаем систему, она строит прогноз,считаем его корреляцию с историей

Потом среднее значение корреляции - это типа балл системы. 

А на каких методиках вы строите оценку вероятности осуществления прогноза?


 

Все хотел попробовать любопытный параметр, - математическое ожидание на каждом временном сечении, но никак времени не хватало. Рассчитывается довольно просто, это сумма произведений ценовых уровней на соответствующие частоты появления. Вероятность берется с начального вероятностного состояния системы.


Совсем параметр не тестировал, так, что ничего сказать не могу. Но ради спортивного интереса: 15 минутки, EURUSD, прогноз на сутки от момента сейчас

Вектор состояния (Немного не влез)


Матожидание на временных сечениях (1 отсчет - 15 минут)




Вероятные уровни (или не очень вероятные):



 

to Lord_Shadows

Переименовали ветку. Теперь уже не игра, а тестирование, и кончились прогнозы.

Прогнозы еще не начинались, в том смысле, что мы пока только разминаемся :о))) присоединяйтесь :о)


to shtoba

Я имею ввиду нечто, позволяющее оценивать качество системы прогнозированияв каких нибудь баллах. Чтоб можно было взять 2 системы, оценить каждую в баллах, сравнить оценки и сказать "вот эта на XX качественнее той" Вообще интересно было бы покумекать как более точно можно построит такую оценку..

Такую оценку давно уже изобрели для чемпионатов – фактически, это количество заработанных пунктов. Можно добавить - без применения, какого либо ММ – работает только модель. Главное то, зачем эти баллы? Какой смысл?

Коэффициент корреляции - это первое что пришло в голову. Например так Уходим в историю на пару лет Через каждый час в истории запускаем систему, она строит прогноз,считаем его корреляцию с историей. Потом среднее значение корреляции - это типа балл системы.

Рынок никогда не повторяется, а если Вы будете считать корреляцию прогноза по, 3 отсчетам, то найдете великое множество «схожих» ситуаций. Вот только коэффициент ни о чем говорить не будет.

А на каких методиках вы строите оценку вероятности осуществления прогноза?

Двумя способами:

(1) Прогноз выполняется на каждом отсчете и оценивается его выполнение. Далее рассчитываются частоты, если, получается, выполняется более сложный анализ, для того, что бы независимо от модели связать частоту с текущей ситуацией с прогнозом

(2) Второй способ, более теоретический – сидит в самой модели.

 

С ДНЕМ ПОБЕДЫ!!!! С ДНЕМ НАШЕЙ ПОБЕДЫ!!! :о)))

Буквально немного не дотянул уровень 1.3331, с остальными все в порядке. Сейчас любопытная ситуация по EURUSD. Ниже расчет «карты» информационной энтропии:

Если принимать близко к сердцу принцип максимальной энтропии, то следует ожидать откат до уровня около 1.3445, но с другой стороны, динамическая модель показывает существенную возможность движения вверх, до уровня 1.3756 (напомню, ценовой уровень рассматриваю, как статистический, вокруг которого будет «концентрироваться» цена). Так, что самое разумное, понедельник не начинать с торговых операций, а подождать порядка 10-20 отсчетов по 15 минут :о)


Как думаете, коллеги? У кого какие планы/цели на понедельник?


ЕСТЬ ВОПРОСЫ:

(1) Начал осваивать MQL и сделал крутейший :о) скрип «забора данных» для MathCAD:

extern int diapason = 7000;


int start()
{
double process[];

GetHistoryProcess(process, diapason);
CreateFlowData(process);

return(0);
}


void GetHistoryProcess(double signal[], int window)
{
int n;
int i;

double y[];

ArrayResize(y, window);
ArrayInitialize(y, 0.0);

ArrayResize(signal, window);
ArrayInitialize(signal, 0.0);

i=0;

for(n=0; n<=window-1; n++)
{
y[i]=(High[window-n-1]+Low[window-n-1])/2.0;
i=i+1;
}

ArrayCopy(signal, y, 0, 0, WHOLE_ARRAY);

return(0);
}


void CreateFlowData(double process[])
{
int i;
int N;
int Handle;

string FILE="data.csv";

N=ArraySize(process);
Handle=FileOpen(FILE, FILE_CSV|FILE_WRITE,";");

if(Handle<0)
{
if(GetLastError()==4103)
{
Alert("Нет файла с именем ",FILE);
}
else
{
Alert("Ошибка при открытии файла ",FILE);
}

return;
}

for(i=0; i<=N-1; i++)
{
FileWrite(Handle, process[i]);
}

FileClose(Handle);

return(0);
}


Сначала долго не мог понять, почему прогнозы вообще не сбывались, потом сообразил – забыл «перевернуть» данные :о). Ввел extern, думая, что при инициализации будет интерфейс, в котором смогу вводить нужный исторический диапазон (он так же меняется) без компиляции. Так нет никакого интерфейса. Он для скриптов не работает? Брал для примера какие то эксперты, там работает.


(2) Чего-то не могу сообразить, как мне, (для примера), прогнозный временной ряд «записать в будущее». При этом учесть, что пока считалось, и пока возился с обработкой и анализом данных, время сдвинулось, скажем, на несколько отсчетов? Грубо говоря, нужно загрузить 100 отсчетов в будущее с какой-то исторической даты (или с нуля), т.е. первые какие то данные нужно загрузить в историю, до текущего бара, а какие то дальше него. Как то не получается.

 
grasn >>:

Сначала долго не мог понять, почему прогнозы вообще не сбывались, потом сообразил – забыл «перевернуть» данные :о). Ввел extern, думая, что при инициализации будет интерфейс, в котором смогу вводить нужный исторический диапазон (он так же меняется) без компиляции. Так нет никакого интерфейса. Он для скриптов не работает? Брал для примера какие то эксперты, там работает.

для скриптов не работает, только для индикаторов и экспертов. Офорляйте свою экспортилку как индикатор если хотите управлять extern переменными


(2) Чего-то не могу сообразить, как мне, (для примера), прогнозный временной ряд «записать в будущее». При этом учесть, что пока считалось, и пока возился с обработкой и анализом данных, время сдвинулось, скажем, на несколько отсчетов? Грубо говоря, нужно загрузить 100 отсчетов в будущее с какой-то исторической даты (или с нуля), т.е. первые какие то данные нужно загрузить в историю, до текущего бара, а какие то дальше него. Как то не получается.

В МТ нет будущего. Все серии размещаются в массивах, причем наоборот. Индекс 0 соостветствует текущему (или наиболее последнему доступному) времени, индекс 1 - на бар назад и тд. Тогда для будущего нужны индексы -1, -2 и тд,  а таких отрицательных индексов в mql нет.

Но есть другие фуськи. Посмотрите функцию для индикаторов SetIndexShift (Установка смещения линии индикатора относительно начала графика). Это только визуальное смещение. Индексы как были так и остаются. 


Есть еще SetIndexDrawBegin (Установка порядкового номера бара от начала данных, с которого должна начинаться отрисовка указанной линии индикатора), можно использовать для обрезания отрисовки слева на заданный бар.

 

А чтоб по времени все синхронно было - маркируйте значения своей серии не индексами а временем и синхронизируйте с графиком МТ по Time[bar].

Но там есть засада - ось времени на графике может быть неравномерной. Если в начальной серии на графике отсутствуют некоторые бары (там связи с сервером небыло или по другой причине дыра) - то бары все равно будут рисоваться сплошняком в время станет перепрыгивать эти дырки. Ну это естественно только для "прошлого".

 
grasn >>:

..Ввел extern, думая, что при инициализации будет интерфейс, в котором смогу вводить нужный исторический диапазон (он так же меняется) без компиляции. Так нет никакого интерфейса. Он для скриптов не работает? Брал для примера какие то эксперты, там работает....

Вставьте в скрипт #property show_inputs и Ваш extern появится при запуске скрипта.

 

to Shtoba, granit77

Коллеги, спасибо за помощь. :о) Чего то как то не радостно с этими индикаторами :о) А вообще и фиг с ними. Для торговли вычисляю вот такие локальные статуровни,по концепции моделирования рынка - около них «концентрируется цена», на картинке они красные (вернее, пока еще их точно не вычислял, только готовлю астролябию :о)):

Теоретически, их в MT можно показать в виде линий («тренда» например, тип кажется тип OBJ_TREND). Вот только возникает очень простой вопрос, как пересчитать временные отсчеты (0, 1, 2, …. (Каждый по 15 минут)) на «будущее» время. Пока нашел такой путь, берем количество секунд TimeCurrent( ), добавляем к нему прогнозное и эту цифру как то нужно перевести в time. А как?

PS: а все таки что то есть в этой энтропии. До уровня цена не дошла, но начала движение, и если бы заключить сделку, все равно был бы плюс :о)

 

 
grasn >>:
... Вот только возникает очень простой вопрос, как пересчитать временные отсчеты (0, 1, 2, …. (Каждый по 15 минут)) на «будущее» время...
FutureTime=Time[0]+N*Period()*60;
где N - номер бара в будущее от нулевого.
Причина обращения: