a trading strategy based on Elliott Wave Theory - page 26

 
A blackout can be mitigated by uninterruptible power supplies.
My broker's server went down for a few hours yesterday. There's nothing you can do about it at all.
 
A blackout can be mitigated by uninterruptible power supplies. <br / translate="no"> My broker's server went down for a few hours yesterday. There is nothing you can do about it.


Yeah - there was no light for half a day and the ISP is nearby in the office - no light or no net :).

Good luck and good luck with the trends.
 
Vladislav,
The linear regression channel procedure is a fairly simple thing. Even implemented on multiple t/f + all other logic (the one I imagine) won't take much time.
At the same time you once wrote that the computational cycle of your program is about 30-40 sec.
As far as I understand the basic part of this time is occupied by optimization process of search of a true trajectory, i.e. the minimum of functional of the price. Is it so? If not, what consumes such a huge amount of time?
 
Vladislav, <br / translate="no"> The linear regression channel procedure is a fairly simple thing. Even implemented on several t/fs + all other logic (the one I imagine) won't take much time.
At the same time you once wrote that the computational cycle of your program is about 30-40 sec.
As far as I understand the basic part of this time is occupied by optimization process of search of a true trajectory, i.e. the minimum of functional of the price. Is it so? If it is not so, what is taking so much time?


That's exactly what the optimization absorbs. There is more than one channel. Plus there are iterative passes and refinements. Projections. Only it's a bit faster now - I've added some criteria to cut off samples.

Good luck and good trends.
 
Vladislav

I've been thinking about doing a level identification for a long time, but I can't get around to it. I would report my three kopecks (following the principle - the easier the better). I used MarketProfil indicator, green lines are responsible for yesterday's levels, reddish - for today's (lines drawn manually). The algorithm is not written yet, but the idea is clear from the picture (I don't know when I will write it).

https://c.mql5.com/mql4/forum/2006/05/levels.gif
 
Hello, everyone!

An acquaintance of mine has been bugging me, - look at Her-sta. And sent me the script and a link to this page.
I found it very difficult to look at it the way it was, so I hastily sketched my version.
The text is below. The chart is put on by dragging and dropping with the mouse and can be moved as desired.
I think it's more convenient to look at it this way. It may be easier to just create an indicator, though.
Thanks to solandr for the preliminary work. At one time, I myself wanted to go deeper into
I've always wanted to do error analysis of different functions referring to trend change probability but I never got around to it.
Although I myself am a big supporter of extrapolations based on the Fourier transform or "fast" amplitude-time methods.
amplitude-time methods. A line is a line, but a wave is something else.
And what's VG got up to? Interesting. Remember long time ago when I sent you variants of polynomial regression?
But I seem to have a different nickname then...
//------------------------
//#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(" ");
}
//***************************************************************



Sincerely - Alexander.

 
Vladislav, the analysis that solandr made at the time was correct, but it was of high quality.

But the Forex market cannot have any other analyses and forecasts first of all because of its fractality!
That is, the limits of confidence intervals and probabilities of movement in one direction or another are constantly fluctuating. And each successive fluctuation may change the type of price trajectory and I think it is quite significant. At the same time, the totality of all accidents (e.g. news) which influenced the current fluctuation can lead to the development of one or another scenario of the price trajectory. That is, the price can visit the boundaries of the confidence intervals, but the trajectories can be very different. We cannot predict the trajectory - the maximum we can do is just to look where the price is now and what it can do next. That is, some standard forecasts like buy here, and then sell there with a stop here are of little effect on Forex. The price will not reach/transgress the recommended levels and will wander between them several times while the trader should wait.
In fact, as it seems to me, judging by the first deals made in the Vladislava system, the market simply tracks the probability of movement in one direction or another and makes decisions about the deals by the traders. Only difference between the decision traders from the system Vladislava is that each trader makes a decision on their own intuition, which is all different (all have their own channel, which in the opinion of the trader moves the price ;o)). While Vladislava system is based on the central limit theorem of matstatistics, which in the application to the Forex market can have the following interpretation. If we consider the trading of a single trader, trading by his own intuition, then according to the central limit theorem, the distribution of the market price, formed by the joint action of all traders, trading by their own strategies, will tend to the normal distribution. To apply this to the market, we just need to find, first, channels watched by traders, estimate them in terms of which channels are watched by the majority of traders, or which channels are optimal according to the integral estimation taken over the whole sample of trading traders;o). Then having such selected channels we can calculate the probability of price location at various distances from the channel centre based on which we can make assumptions concerning the probability of price movement to one or another side. Of course channels change constantly, especially in intraday trading and price goes back and forth. And what was correct, for example 3 hours ago, may have little or nothing to do exactly now, in order to make a profit. So, at best, those who are interested can look at the work of Vladislava's Expert Advisor to have some sort of orientation about the current situation. Well, and the prediction in the standard form of course impossible - at best, some kind of qualitative reasoning. And the real decision will be made when the situation becomes necessary. At the same time levels and times can only be predicted in advance in the widest ranges.

PS: By the way look at the question of how traders trade. So many trade in a fast market. Because of that it takes a big rush to grab something. That`s why even this forum is full of threads demanding from MT4 developers some more comfortably pressing buttons when opening/closing orders in a fast market, or fast opening/closing orders by an EA when the whole crowd is doing the same, clogging up all trading technical resources (only usually the crowd does the same thing when half of it is already passed and there are almost no possibilities for market moves in one direction or another) :o))) That is, the strongest movement is when the centre line of the channel is passed (the centre of the probability distribution of the price - the whole crowd jumped up and got into the game) You would think that the rush in a fast market can solve the problem of not understanding the current situation in the market.
 
But there can't be any other analyses and forecasts for the forex market, mainly because of its fractal nature!

solandr,
I did not mean to offend you in any way. I just mean that Vladislav at the beginning of the discussion of his strategy, stressed its difference from most others. And it was exactly the fact that it allows non-random prediction due to quantitative estimates of the probabilities of different directions of price movement.
 
Vladislav,
It seems to me that in this discussion there is some misunderstanding of the concept of fractality.
As far as I understand, fractality is a self-similarity of random structures. It cannot in itself prevent us from making quantitative estimates. And that these estimations have probabilistic character, so it follows not from fractality, but from casual character of the phenomenon with which we deal.
I would like to hear your opinion on this matter. In particular, what practical sense you put in this statement:
Once you build a basic sample (half-hourly=>daily levels) you can refine it to the right level of detail (have you forgotten that a fractal approach is used here?).

And one more question, in relation to your last answer:
That's exactly what optimisation absorbs. There is more than one channel there.

One of your axioms is the existence of a true (i.e. a single) trajectory, which is determined as a result of the optimization process. How can a single trajectory lead to multiple channels?
 
Rosh,
As far as I understand, MarketProfil gives the frequency response of the range. That is, how many times during a particular period of time the price has taken a given value. Did I get it right?
If so, I understand the arrangement of red lines. But why are there so many green ones?
I had an idea to make levels identification on this basis. Although, I have never dealt with MarketProfil indicator. It's nice to know it's a bicycle. :-) At least it has saved me a lot of time.
Reason: