торговая стратегия на базе Волновой теории Эллиота - страница 26
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот у меня вчера сервер брокера на несколько часов вылетел. С этим вообще ничего не сделаешь.
Вот у меня вчера сервер брокера на несколько часов вылетел. С этим вообще ничего не сделаешь.
Ага - пол-дня света не было и провайдер рядом в офисе - ни света ни нета :).
Удачи и попутных трендов.
Процедура построения канала линейной регрессии - достаточно простая вещь. Даже реализованная на нескольких т/ф + вся остальная логика (та, что я себе представляю) много времени не займут.
В то же время Вы как-то писали, что расчетный цикл Вашей программы примерно 30-40 сек.
Насколько я понимаю основную часть этого времени занимает оптимизационный процесс поиска истинной траектории, то есть минимума функционала цены. Так ли это ? Если нет, то что же поглощает такое огромное количество времени ?
Процедура построения канала линейной регрессии - достаточно простая вещь. Даже реализованная на нескольких т/ф + вся остальная логика (та, что я себе представляю) много времени не займут.
В то же время Вы как-то писали, что расчетный цикл Вашей программы примерно 30-40 сек.
Насколько я понимаю основную часть этого времени занимает оптимизационный процесс поиска истинной траектории, то есть минимума функционала цены. Так ли это ? Если нет, то что же поглощает такое огромное количество времени ?
Так именно оптимизация и поглощает. Там ведь не один канал. Плюс итерационные проходы, уточнения. Проекции. Только уже это несколько быстрее происходит - добавил несколько критериев для отсечки выборок.
Удачи и попутных трендов.
Давно думал сделать идентификацию уровней, да руки не доходят. Докладываю свои три копейки (по принципу - чем проще тем лучше). Использован индикатор MarketProfil, салатовые линии отвечают за вчерашние уровни, красноватые - за сегодняшний(линии нанесены вручную). Алгоритм пока не написан, но идея понятна из рисунка(когда напишу - неизвестно).
https://c.mql5.com/mql4/forum/2006/05/levels.gif
Меня тут один знакомый достал, - посмотри да посмотри Хер-ста. И прислал скрипт и ссылку на эту страницу.
Мне очень трудно было в таком виде как он был посмотреть его, поэтому я наскоро набросал свою версию.
Текст ниже. На график ставится перетаскиванием мышкой и можно двигать как угодно.
Мне кажется так удобней рассматривать. Хотя проще наверное просто сделать индикатор.
Спасибо solandr за предварительно проделанную работу. Когда-то я сам хотел поглубже заняться
анализом ошибок для различных функций, применительно к вероятности изменения тренда, да все никак руки не доходили.
Хотя я сам больший сторонник экстраполяций на основе преобразования Фурье или "скоростных"
амплитудно-временных методов. Линия - это линия, а волна все-таки чуть другое.
И что там VG намудрил? Интересно. Помнишь когда-то давно, еще на МТ3 я посылал тебе варианты полиномиальной регрессии?
Правда тогда у меня ник кажется был другой...
//------------------------ //#property show_inputs //----------------------- //extern int ip=800; //extern int i0=570; //----------------------- double lr0,lrp; int t0,tp; double A[10],R[10],DDR[10]; double SA,is,aa,bb,sum2,SAo,disp_o; double S,pMin,pMax,RM,Hrst; int T,i0,ip,f; //************************************************************** int init() { t0=TimeOnDropped(); i0=iBarShift(Symbol(),Period(),t0); ip=i0+100; tp=Time[ip]; T=ip-i0+1; ArrayResize(A, T); ArrayResize(R, T); ArrayResize(DDR, T); ObjectCreate("lrHerst",2,0,0,0,0,0); ObjectSet("lrHerst",OBJPROP_COLOR,Yellow); } //************************************************************** int start() { while(IsStopped()==false) { if (f==1) { tp=ObjectGet("lrHerst",OBJPROP_TIME1); ip=iBarShift(Symbol(),Period(),tp); t0=ObjectGet("lrHerst",OBJPROP_TIME2); if (t0>Time[0]) t0=Time[0]; i0=iBarShift(Symbol(),Period(),t0); T=ip-i0+1; ArrayResize(A, T); ArrayResize(R, T); ArrayResize(DDR, T); } for(int i=T-1; i>=0; i--) A[i]=Open[i+i0]; SA=af_SA(A,T); //----------------------------LR---------------------------------------- //----------aa------------- is=(T-1)/2.0; //среднее значение по оси индекса aa=0; sum2=0; for(i=T-1; i>=0; i--) { aa+=(i-is)*(A[i]-SA); sum2+=MathPow((i-is),2); } aa=aa/sum2; //-----------bb------------ bb=SA-aa*is; for(i=T-1; i>=0; i--) DDR[i]=aa*i+bb; lr0=DDR[0]; lrp=DDR[T-1]; //linregres_grafic_c(0,DDR,i0); //---------------------------------------------------------------------- //-----Расчёт ошибок линейной регрессии for(i=T-1; i>=0; i--) R[i]=A[i]-(aa*i+bb); SAo=af_SA(R,T); //среднее значение ошибок линейной регрессии disp_o=af_disp_o(R,SAo,T); // Дисперсия ошибок S=CKO(disp_o); pMin=Low[Lowest(NULL,0,MODE_LOW,T,i0)]; pMax=High[Highest(NULL,0,MODE_HIGH,T,i0)]; RM=pMax-pMin; Hrst = MathLog(RM/S)/MathLog(T*0.5); Comment("Хёрст = ",DoubleToStr(Hrst ,4),"\n","T = ",T); ObjectMove("lrHerst",0,tp,lrp); ObjectMove("lrHerst",1,t0,lr0); f=1; }//---while //-------------------------------------------------- return(0); } //*************************************************************** //функция для расчёта дисперсии ошибок double af_disp_o(double data[], double centr, int T) { double disp=0; for(int k=T-1; k>=0; k--) disp+=MathPow((data[k]-centr),2); if(T>1) disp=disp/(T-2); return(disp); } //*************************************************************** //функция для расчёта СКО double CKO(double disp) { double sko=MathPow(disp,0.5); return(sko); } //*************************************************************** //функция для подсчёта среднего арифметического значения по массиву double af_SA(double data[],int T) { double sum=0; for(int k=T-1; k>=0; k--) sum+=data[k]; sum=sum/T; return(sum); } //*************************************************************** /* //функция рисования канала линейной регрессии int linregres_grafic_c(int window_number, double data[], int i0b) { int deletedArrows,k,size; string line_name; //очистка предыдущего рисунка deletedArrows=ObjectsDeleteAll(window_number,OBJ_TREND); //находим размер массива size=ArraySize(data); //рисуем центральную линию линейной регрессии for(k=size-1; k>=1; k--) { line_name="line_lin_reg"+k; ObjectCreate(line_name,OBJ_TREND,window_number,Time[k+i0b],data[k],Time[k+i0b-1],data[k-1]); ObjectSet(line_name,OBJPROP_COLOR,Yellow); ObjectSet(line_name,OBJPROP_STYLE,DRAW_LINE); ObjectSet(line_name,OBJPROP_WIDTH,2); ObjectSet(line_name,OBJPROP_BACK,true); ObjectSet(line_name,OBJPROP_RAY,false); } //рисуем проекцию центральной линии линейной регрессии line_name="line_lin_reg_proec"; ObjectCreate(line_name,OBJ_TREND,window_number,Time[size-1+i0b],data[size-1],Time[i0b],data[0]); ObjectSet(line_name,OBJPROP_COLOR,Red); ObjectSet(line_name,OBJPROP_STYLE,DRAW_LINE); ObjectSet(line_name,OBJPROP_WIDTH,1); ObjectSet(line_name,OBJPROP_BACK,false); ObjectSet(line_name,OBJPROP_RAY,true); return(0); } */ //*************************************************************** void deinit() { ObjectDelete("lrHerst"); Comment(" "); } //***************************************************************С уважением - Александр.
Но ведь к рынку Форекс и не может быть каких-то других анализов и прогнозов прежде всего из-за его фрактальности!
То есть происходит постоянная флуктуация границ доверительных интервалов и вероятностей движения в ту или иную сторону. И каждая следующая флуктуация может изменить вид траектории цены и думаю, что весьма существенно. При этом совокупность всех случайностей (например новостей), оказавших влияние на сложившуюся флуктуацию, могут привести к развитию того или иного сценария развития траектории цены. То есть цена может побывать на границах доверительных интервалов, но траектории возможны самые разнообразные. Траекторию никто угадать не в состоянии - максимум, что можно сделать это просто посмотреть где цена находится сейчас и что может сделать далее. То есть какие-то стандартные прогнозы типа купите здесь, а потом продайте там со стопом вот здесь малоэффективны на рынке Форекс. Цена не дойдёт/перейдёт рекомендованные уровни и ещё несколько раз поболтается между ними, а трейдер должен согласно прогнозу занимать выжидательную позицию.
На самом деле как мне кажется судя по первым сделкам по системе Vladislava просто рынком идёт отслеживание вероятностей движения в ту или иную сторону и происходит принятие решений по сделкам со стороны трейдеров. Только отличие принятия решения трейдеров от системы Vladislava заключается в том, что каждый трейдер принимает решение на своей собственной интуиции, которая у всех разная (у всех свой собственный канал, по которому по мнению трейдера двигается цена ;o)). В то время как система Vladislava базируется на центральной предельной теореме матстатистики, которая в применении к рынку Форекс может иметь следующую трактовку. Если рассмотреть в качестве случайного воздействия - торговлю отдельного трейдера, торгующего по его собственной интуиции, то согласно центральной предельной теоремы распределение рыночной цены, формируемой совместными действиями всех трейдеров, торгующих по своим собственным стратегиям, будет стремиться к нормальному распределению. При этом нам для применения этого на рынке нужно просто найти во-первых каналы, на которые смотрят трейдеры, оценить их в плане того, на какие из каналов смотрит большинство трейдеров, либо какие каналы являются оптимальными по интегральной оценке, взятой по всей выборке торгующих трейдеров;o). Далее имея данные отобранные каналы мы можем посчитать вероятность нахождения цены на разных расстояних от центра канала, на основе чего сделать предположения о вероятности движения цены в ту или иную сторону. И естественно каналы постоянно меняются, особенно на внутридневной торговле и цена ходит туда-сюда. И то, что было правильным например 3 часа назад может не иметь практически никакого отношения к тому, что требуется делать именно СЕЙЧАС для того чтобы получить прибыль. Поэтому в лучшем случае желающие могут смотреть на работу эксперта Vladislava, чтобы иметь какую-то ориентировку в текущей ситуации. Ну а прогноз в стандартном виде конечно же невозможен - в лучшем случае какие-то качественные рассуждения. А реальное принятие решений будет тогда, когда сложится необходимыа ситуация. При этом уровни и время заранее могут быть спрогнозированы только в самых широких диапазонах.
PS: Кстати посмотрите по вопросу о том как торгуют трейдеры. Очень многие торгуют на быстром рынке. Из-за этого требуется сильно спешить, чтобы что-то ухватить. От этого даже этот форум забит ветками, в которых требуют от разработчиков МТ4 каких-то дополнительных фич по удобству нажимания на кнопки при открытии/закрытии ордеров на быстром рынке, или по быстрому открытию/закрытию ордеров советником тогда когда вся толпа делает то же самое, забивая все торговые технические ресурсы (только обычно толпа делает одно и то же тогда, когда половина уже пройдена и вероятности движения рынка в ту или иную сторону практически выранялись) :o))) То есть самое сильное движение тогда когда проходится центральная линия канала (центр распределения вероятности нахождения цены - вся толпа подпрыгнула и включилась в игру) Можно подумать, что спешка на быстром рынке может решить проблему непонимания текущей ситуации на рынке.
solandr,
Я ни в коем случае не хотел Вас задеть. Просто речь о том, что Vladislav в самом начале обсуждения его стратегии, подчеркивал ее отличие от большинства других. И оно заключалось как раз в том, что она дает возможность неслучайного прогнозирования именно благодаря количественным оценкам вероятностей разных направлений движения цены.
Мне кажется, что в этом обсуждении возникли какие-то разночтения понятия фрактальность.
Насколько я понимаю, фрактальность - это самоподобие случайных структур. Сама по себе она не может помешать нам делать количественные оценки. А то, что эти оценки носят вероятностный характер, так это вытекает не из фрактальности, а из случайного характера явления, с которым мы имеем дело.
Хотелось бы услышать Ваше мнение по этому поводу. В частности, какой практический смысл Вы вкладывали вот в это утверждение:
И еще один вопрос, в связи с Вашим последним ответом:
Одной из Ваших аксиом является наличие истинной (т.е. единственной) траектории, которая и определяется в результате процесса оптимизации. Каким образом единственная траектория может привести к нескольким каналам ?
Насколько я понял, MarketProfil дает частотную характеристику диапазона. То есть сколько раз за конкретный промежуток времени цена принимала данное значение. Я правильно понял ?
Если да, то мне понятно расположение красных линий. Но откуда так много зеленых ?
У меня у самого была идея сделать идентификацию уровней на этой основе. Хотя с индикатором MarketProfil я ни разу дело не имел. Приятно узнать, что это велосипед. :-) По крайней мере сэкономил время.