торговая стратегия на базе Волновой теории Эллиота - страница 30

 
Vladislav,

Bylo by interesno mne uvidet' kod eksperta, stalo interesno kak "risk level" pods4itajesh i kak trendvyje bary.. :)
 
Очень интересно. Спасибо Vacheslav.
Доверительные интервалы размечены от 60%, до 99%.

А от чего в процентах берутся доверительные интервалы.
Мелким пунктиром, насколько я понял - это CКО=1, а что обозначено длинным пунктиром, кроме средней желтой линии?

Заранее благодарю за ответ - Александр.
 
Очень интересно. Спасибо Vacheslav.
Доверительные интервалы размечены от 60%, до 99%.

А от чего в процентах берутся доверительные интервалы.
Мелким пунктиром, насколько я понял - это CКО=1, а что обозначено длинным пунктиром, кроме средней желтой линии?

Заранее благодарю за ответ - Александр.



Это стандартный способ построения доверительных интервалов. Доверительный диапазон в 60% обозначает, что с вероятностью 60% цена (или что там Вы аппроксимируете) будет находиться внутри диапазона и соотвественно все траектории, аппроксимирующие движение цены и попадающие в данный диапазон должны считаться равнозначными для данной вероятности. Размер интервала считается в стандартных отклонениях. Понятно, что с увеличением вероятности сам диапазон расширяется. Я уже говорил, что для разрисовки истории можно брать любую траекторию из данного диапазона - сигналы в большинстве случаев будут совпадать. Не так обстоит дело, если Вам нужно построить экстраполяцию. То есть, спроецировать цены в будущее. Я за основу взял линейный алгоритм исходя из нескольких соображений - одно из них это полная однозначность при построении проекций, что дает возможность просмотреть построения по истории и оценить эффективность и значимоость самого алгоритма для поиска выборок. Конечно же еще нужно применять массу критериев отбора для каналов регрессии - их строится очень много. И на этапе прямой прогонки Вы не сможете сказать какие будут дучше удовлетворять, какие хуже - для этого их нужно построить и только потом оценивать. То, что видно на картинке получается не всегда - бывает один канал, бывает и больше. Правда для практических целей лучше ограничить количество - то есть выбрать минимальное количество самых экстремальных.

Удачи и попутных трендов.

ЗЫ ампир - это не мой рессурс, так что картинки могут потереть, как только они хозяевам начнут мешать.
 
Уважаемый Vladislav !

Нельзяли ли попросить Вас дать инвесторский пароль от счета, на котором торгует советник, стейтменты которого выкладываются на ampir?

Заранее спасибо.
 
Уважаемый Vladislav !

Нельзяли ли попросить Вас дать инвесторский пароль от счета, на котором торгует советник, стейтменты которого выкладываются на ampir?

Заранее спасибо.


Можно.

Name : AutoTest_F
Email : 4vg@mail.ru
Login : 1000024869
Investor : 8hfiamr (read only password)

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

Удачи и попутных трендов.
 
Уважаемый Rosh!

На картинке формула с корнем, вот я и привел СКО от мувинга. А мой вопрос относительно того, что под корнем. Спасибо.

Vladislav, еще раз спасибо.
 

На картинке формула с корнем, вот я и привел СКО от мувинга. А мой вопрос относительно того, что под корнем. Спасибо.


Понял, исправляюсь :)



ЗЫ Рисовал в Paint ;)
 
кое-что добавил в скрипт Solandr'а.
//+------------------------------------------------------------------+
//|                                                     Herst-II.mq4 |
//|            solandr (обработал напильником Rosh)(покрасил Bagadul)|
//|                       http://www.metaquotes.ru/forum/6839/page11 |
//+------------------------------------------------------------------+
#property copyright "solandr (обработал напильником Rosh)(покрасил Bagadul)"
#property link      "http://www.metaquotes.ru/forum/6839/page11"
#property show_inputs

extern int start_bar=500;
extern int end_bar=0;

extern string h_1 = "SHOW LABELS";
extern bool show_in_point = true; // показывать в пунктах, иначе в ценовом выражении
extern string font = "Times New Roman";
extern int font_size = 9;
extern int Xd = 3;        // от борта в пикселях
extern int Yd_step = 13;  // между строк в пикселях
extern int corner;        // угол привязки
extern color LC = Purple; 
extern bool SD = true;    // показывать среднеквадратичное отклонение выборки
extern bool R_ = true;    // показывать максимальный размах иследуемого ряда
extern string h_2 = "Коэффициент Хёрста";
extern int digits_Hurst = 2; // точность коэфф. Херста
extern bool HURST = true;    // показывать коэфф. Херста
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start() {
double viborka[];
int size_of_array,i;

size_of_array=start_bar-end_bar+1;
ArrayResize(viborka, size_of_array);
for(i=size_of_array-1;i>=0;i--) viborka[i]=Open[i+end_bar];

//double S_A=iMAOnArray(viborka,0,size_of_array,0,MODE_SMA,0);
//Print("Среднее арифметическое выборки = ",DoubleToStr(S_A,8));

double S=iStdDevOnArray(viborka,0,size_of_array,MODE_SMA,0,0);

double pMax=viborka[ArrayMaximum(viborka)];
double pMin=viborka[ArrayMinimum(viborka)];

double R=pMax-pMin;
//Print("pMin = ",pMin," pMax = ",pMax, " R = ",R);

double Hrst;
if( (R>0)&&(S>0)) Hrst = MathLog(R/S)/MathLog(size_of_array*0.5);

Graphic(size_of_array, S, pMin, pMax, R, Hrst); // наносим лейблы
  
return(0);}

//+------------------------------------------------------------------+
void deinit() {
if (UninitializeReason() == 1) {Object_Delete("Period"); Object_Delete("SD"); Object_Delete("R"); Object_Delete("Hurst");}
return;}
//+------------------------------------------------------------------+

////---------------------------------------------------------------------------------------+
/**/ void Graphic(int size, double sd, double min, double max, double r, double hurst) { //|
////---------------------------------------------------------------------------------------+
int yd_1, yd_2, yd_3; // между строк в пикселах
double pn = Point, dg;
if (!show_in_point) {pn = 1; dg = Digits;}

Label_Create("Period", corner, Xd, 13, StringConcatenate("The period is taken for ",size," bars"), font_size, LC); yd_1 = Yd_step;

if (SD) {Label_Create("SD", corner, Xd, 13 + yd_1, StringConcatenate("SD [ ",DoubleToStr(sd / pn,dg)," ]"), font_size, LC); yd_2 = Yd_step;}
else {Object_Delete("SD");}

if (R_) {Label_Create("R", corner, Xd, 13 + yd_1 + yd_2, StringConcatenate("R   [ ",DoubleToStr(r / pn,dg)," ]"," Min~Max [ ",DoubleToStr(min,Digits),"~",DoubleToStr(max,Digits)," ]"), font_size, LC); yd_3 = Yd_step;}
else {Object_Delete("R");}

if (HURST) {
    double HURst = NormalizeDouble(hurst,digits_Hurst);
    string time_row;
    color LCH;
    if (HURst > 0.5) {LCH = Red; time_row = "Trend";} // Fractal Market Hupothesis
    else if (HURst < 0.5) {LCH = Blue; time_row = "Contratrend";}
         else {LCH = Black; time_row = "EMH";} // Efficient Market Hypothesis 
    Label_Create("Hurst", corner, Xd, 13 + yd_1 + yd_2 + yd_3, StringConcatenate("HURST [ ",DoubleToStr(HURst,digits_Hurst)," ] ",time_row), font_size + 1, LCH);}
else {Object_Delete("Hurst");}
return;}

////---------------------------------------------------------------------------------------------------------------------+
//// функция создает объект типа - лейбл                                                                               //|
/**/ void Label_Create(string label_name, int corner, int xd, int yd, string text, int font_size, color label_color) { //| 
////---------------------------------------------------------------------------------------------------------------------|
//// corner - номер угла привязки,                                                                                     //|
//// xd, yd - расстояние X,Y-координаты в пикселях относительно угла привязки.                                         //|
////---------------------------------------------------------------------------------------------------------------------+
if (!IsTesting()) {
bool creat = false;
label_name = StringConcatenate(label_name, "_", Symbol());
if (ObjectFind(label_name) == -1) {
    creat = ObjectCreate(label_name, OBJ_LABEL, 0, 0, 0);
    if (creat) {
        ObjectSet(label_name, OBJPROP_CORNER, corner);
        ObjectSet(label_name, OBJPROP_XDISTANCE, xd);
        ObjectSetText(label_name, text, font_size, font, label_color);} }
ObjectSet(label_name, OBJPROP_YDISTANCE, yd);
ObjectSetText(label_name, text, font_size, font, label_color);}
return;}

////--------------------------------------------------------------------------------------+
/**/ void Object_Delete(string object_name) { // функция удаляет объект по наименованию //|
////--------------------------------------------------------------------------------------+
if (!IsTesting()) {
object_name = StringConcatenate(object_name, "_", Symbol());
ObjectDelete(object_name);}
return;}



получилось так

"MQL4: Картинка для форума на metaquotes"

работает уже как эксперт, незнаю нужно ли это, но зато видно

 
Уважаемый Vladislav!
В надписях на Вашем графике есть величины Up и Dn Risk Level. Смысл их в общем понятен из названий.
Но это только в общем. А в частности много чего непонятно. :-)
Если это оценки вероятности того, что рынок пойдет вверх или вниз, то по идее их сумма должна быть равна 1. Третьего вроде не дано ?
Если же это оценки вероятностей достижения некоторых уровней вверху и внизу, то это совсем другое дело. :-)
Не могли бы вы объяснить как же на самом деле и, если возможно, на чем основан количественный расчет.

Заранее благодарю.
 
Уважаемый Rosh !

Вы привели хорошее доказательство того, что iStdDev() равнозначен СТАНДОТКЛОНП().

Но мой вопрос был не про это ;-)

Я взял результат работы примера 4 из Вашей статьи, открыл его в OpenOffice Calc и добавил следующие формулы в ячейки G2:K2
=STDEVP(B2:B5) - аналог СТАНДОТКЛОНП() Экселя
=B2-F2 - отклонение Array от аппроксимации мувингом
=SQRT((H2^2+H3^2+H4^2+H5^2)/4) - стандартное отклонение от мувинга (по рекомендации Vladislav-а Solandr-у о использовании аппроксимаций различными функциями)
=SQRT( ((B2-F2)^2+(B3-F2)^2+(B4-F2)^2+(B5-F2)^2)/4 ) - стандартное отклонение (по StdDev.mq4)
=STDEVP(H2:H5) - стандартное отклонение ошибок аппроксимации мувингом
После чего, распространил их на все строки (для наглядности).

Я не подвергал сомнению то, что колонки D, G и J должны показывать одинаковые числа!

Но вот колонки I и K содержат совсем другие результаты.

ИМХО, в статье есть проблема с терминологией, т.к. iStdDev, очевидно, не использует аппроксимацию мувингом, а эта функция (iMA) в StdDev.mq4 используется для других целей ;-)
Т.е. iStdDev - это НЕ мера разброса данных вокруг скользящей средней от этих данных, это СКО в стандартной терминологии теории вероятности.

Спасибо.

З.Ы.: Хороший у Вас Paint, не чета столь распространенному! ;-)
Причина обращения: