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

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


Ага - пол-дня света не было и провайдер рядом в офисе - ни света ни нета :).

Удачи и попутных трендов.
 
Vladislav,
Процедура построения канала линейной регрессии - достаточно простая вещь. Даже реализованная на нескольких т/ф + вся остальная логика (та, что я себе представляю) много времени не займут.
В то же время Вы как-то писали, что расчетный цикл Вашей программы примерно 30-40 сек.
Насколько я понимаю основную часть этого времени занимает оптимизационный процесс поиска истинной траектории, то есть минимума функционала цены. Так ли это ? Если нет, то что же поглощает такое огромное количество времени ?
 
Vladislav,
Процедура построения канала линейной регрессии - достаточно простая вещь. Даже реализованная на нескольких т/ф + вся остальная логика (та, что я себе представляю) много времени не займут.
В то же время Вы как-то писали, что расчетный цикл Вашей программы примерно 30-40 сек.
Насколько я понимаю основную часть этого времени занимает оптимизационный процесс поиска истинной траектории, то есть минимума функционала цены. Так ли это ? Если нет, то что же поглощает такое огромное количество времени ?


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

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

Давно думал сделать идентификацию уровней, да руки не доходят. Докладываю свои три копейки (по принципу - чем проще тем лучше). Использован индикатор 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(" ");
}
//***************************************************************



С уважением - Александр.

 
Vladislav, анализ, который провел тогда solandr, был хоть и правильный, но качественный.

Но ведь к рынку Форекс и не может быть каких-то других анализов и прогнозов прежде всего из-за его фрактальности!
То есть происходит постоянная флуктуация границ доверительных интервалов и вероятностей движения в ту или иную сторону. И каждая следующая флуктуация может изменить вид траектории цены и думаю, что весьма существенно. При этом совокупность всех случайностей (например новостей), оказавших влияние на сложившуюся флуктуацию, могут привести к развитию того или иного сценария развития траектории цены. То есть цена может побывать на границах доверительных интервалов, но траектории возможны самые разнообразные. Траекторию никто угадать не в состоянии - максимум, что можно сделать это просто посмотреть где цена находится сейчас и что может сделать далее. То есть какие-то стандартные прогнозы типа купите здесь, а потом продайте там со стопом вот здесь малоэффективны на рынке Форекс. Цена не дойдёт/перейдёт рекомендованные уровни и ещё несколько раз поболтается между ними, а трейдер должен согласно прогнозу занимать выжидательную позицию.
На самом деле как мне кажется судя по первым сделкам по системе Vladislava просто рынком идёт отслеживание вероятностей движения в ту или иную сторону и происходит принятие решений по сделкам со стороны трейдеров. Только отличие принятия решения трейдеров от системы Vladislava заключается в том, что каждый трейдер принимает решение на своей собственной интуиции, которая у всех разная (у всех свой собственный канал, по которому по мнению трейдера двигается цена ;o)). В то время как система Vladislava базируется на центральной предельной теореме матстатистики, которая в применении к рынку Форекс может иметь следующую трактовку. Если рассмотреть в качестве случайного воздействия - торговлю отдельного трейдера, торгующего по его собственной интуиции, то согласно центральной предельной теоремы распределение рыночной цены, формируемой совместными действиями всех трейдеров, торгующих по своим собственным стратегиям, будет стремиться к нормальному распределению. При этом нам для применения этого на рынке нужно просто найти во-первых каналы, на которые смотрят трейдеры, оценить их в плане того, на какие из каналов смотрит большинство трейдеров, либо какие каналы являются оптимальными по интегральной оценке, взятой по всей выборке торгующих трейдеров;o). Далее имея данные отобранные каналы мы можем посчитать вероятность нахождения цены на разных расстояних от центра канала, на основе чего сделать предположения о вероятности движения цены в ту или иную сторону. И естественно каналы постоянно меняются, особенно на внутридневной торговле и цена ходит туда-сюда. И то, что было правильным например 3 часа назад может не иметь практически никакого отношения к тому, что требуется делать именно СЕЙЧАС для того чтобы получить прибыль. Поэтому в лучшем случае желающие могут смотреть на работу эксперта Vladislava, чтобы иметь какую-то ориентировку в текущей ситуации. Ну а прогноз в стандартном виде конечно же невозможен - в лучшем случае какие-то качественные рассуждения. А реальное принятие решений будет тогда, когда сложится необходимыа ситуация. При этом уровни и время заранее могут быть спрогнозированы только в самых широких диапазонах.

PS: Кстати посмотрите по вопросу о том как торгуют трейдеры. Очень многие торгуют на быстром рынке. Из-за этого требуется сильно спешить, чтобы что-то ухватить. От этого даже этот форум забит ветками, в которых требуют от разработчиков МТ4 каких-то дополнительных фич по удобству нажимания на кнопки при открытии/закрытии ордеров на быстром рынке, или по быстрому открытию/закрытию ордеров советником тогда когда вся толпа делает то же самое, забивая все торговые технические ресурсы (только обычно толпа делает одно и то же тогда, когда половина уже пройдена и вероятности движения рынка в ту или иную сторону практически выранялись) :o))) То есть самое сильное движение тогда когда проходится центральная линия канала (центр распределения вероятности нахождения цены - вся толпа подпрыгнула и включилась в игру) Можно подумать, что спешка на быстром рынке может решить проблему непонимания текущей ситуации на рынке.
 
Но ведь к рынку Форекс и не может быть каких-то других анализов и прогнозов прежде всего из-за его фрактальности!

solandr,
Я ни в коем случае не хотел Вас задеть. Просто речь о том, что Vladislav в самом начале обсуждения его стратегии, подчеркивал ее отличие от большинства других. И оно заключалось как раз в том, что она дает возможность неслучайного прогнозирования именно благодаря количественным оценкам вероятностей разных направлений движения цены.
 
Vladislav,
Мне кажется, что в этом обсуждении возникли какие-то разночтения понятия фрактальность.
Насколько я понимаю, фрактальность - это самоподобие случайных структур. Сама по себе она не может помешать нам делать количественные оценки. А то, что эти оценки носят вероятностный характер, так это вытекает не из фрактальности, а из случайного характера явления, с которым мы имеем дело.
Хотелось бы услышать Ваше мнение по этому поводу. В частности, какой практический смысл Вы вкладывали вот в это утверждение:
После построения базовой выборки (по получасовкам-часовкам=> дневные уровни) Вы сможете ее уточнять до нужного предела детализации (Вы не забыли, что здесь используется фрактальный подход ?).

И еще один вопрос, в связи с Вашим последним ответом:
Так именно оптимизация и поглощает. Там ведь не один канал.

Одной из Ваших аксиом является наличие истинной (т.е. единственной) траектории, которая и определяется в результате процесса оптимизации. Каким образом единственная траектория может привести к нескольким каналам ?
 
Rosh,
Насколько я понял, MarketProfil дает частотную характеристику диапазона. То есть сколько раз за конкретный промежуток времени цена принимала данное значение. Я правильно понял ?
Если да, то мне понятно расположение красных линий. Но откуда так много зеленых ?
У меня у самого была идея сделать идентификацию уровней на этой основе. Хотя с индикатором MarketProfil я ни разу дело не имел. Приятно узнать, что это велосипед. :-) По крайней мере сэкономил время.
Причина обращения: