Testing real-time forecasting systems - page 53

 
grasn писал(а) >>

to Yurixx

I suggest to play good old thimbles, you can use any strategies and look anywhere :o) Forecast on EURUSD M15 for 300 samples (from Monday to Wednesday included):

Option 1:

Process entropy: 13.84

Variant 2:

Process entropy: 13.01

Option 3:

Process entropy: 14.36

Which thimble are you picking up? :о)

I'm inclined towards option 1, as this situation has been evolving for a long time and is just waiting to be continued

 
forte928 >> :

I am inclined towards option 1, as this situation has been developing for a long time and is just waiting to be continued

I.e. is the price now passing some sort of reversal zone? Just out of curiosity, if it's not too much trouble, could you elaborate?

 
grasn писал(а) >>

So the price is now passing some sort of pivot zone? Just out of curiosity, if it's not too much trouble, please elaborate.

At the moment there is the first factor on the basis of which we can conclude about the sideways flat on the EUR/USD pair -

pair has reached the level of consolidation OP line at 1.4850. Exactly the same fluctuations were observed at 1.3437 and 1.3937 with a subsequent rollback, which corresponds to the levels 0.382, 0.618 and 1.00.

in the second figure the same chart but with calculated growth levels relative to the low - 1.4162 and current 1.4951 and if you take on the basis of this price chart levels 1.4951 and 1.4851 you can see that the price is just in the balance point at the average level of fluctuations of these indicators the last two days... Further, in the chart down indicator has shown a saturation level at which the reversal should occur.

but there are a couple of things that do not allow this to happen :

1) the daily chart shows negative growth movement (bottom indicator)

2) The daily chart reached the consolidation level of 0.382 at 1.4877 on the first indicator

3) Daily chart reached consolidation level of COP at 1.4892 on the second indicator

4) There is active opposition to upward movement on the H4 chart

5) Presence of two consolidation levels relative to the low of the end of September OP and 0.236 (1.4931 and 1.4933), which is a strong indication of the presence of a prolonged correction

To be continued...

 

Grasn, can I ask you a question? Have you tried looking for tipping points in a time series?

update: I'm asking because I'm digging in this direction (and something is looking up). Here's an example of what my search for critical points looks like:


Critical points

As you can see, before the series changes its behavior, the character of indicator's oscillations changes sharply (there are bursts of large amplitude, to be more exact, maxima/minima start to fit perfectly to the graph of the function f(x)=a^x). The spikes occur a bit earlier (usually :)) than the behaviour of the series changes. However, I haven't got it all right so far. I've got to work on the verge of double precision (the numbers are very small) + I'm missing directional predictions.

 
grasn писал(а) >>

Suppose there is such a construct:

As I understood it will dynamically increase array memRow[] when some condition triggers. I.e. I don't know the length of array beforehand. Did I get it right?

1. In MKL4 you can't operate with array, which size hasn't been defined. If you didn't specify the size when declaring the array, you will have to do it in init(). Further, while working, you can change this size as needed.

2. 2. Lea's advice is quite practical, it's worth listening to. In general, for advice to be adequate, you'd better clearly explain what the array is used for and why you need to change its size. It's quite possible that you will be satisfied with just allocating space and having a variable with the index of the last element. Then whether you know the number of elements you need or not won't really matter.

.

I don't play thimbles. But i prefer variant 2. Or i just want the euR to grow ? :-)

But the variants 1 and 3 are ok too, though they differ from each other very little.

 
Yurixx >> :

1. In MKL4 you can't operate with array, which size is not set. If you don't specify the size of the array, you will have to do it in init().

1 Not obligatory at all.

Declaring an array without defining its size splits the process of array preparation into three parts:

1 declaration as such - by this procedure, the programmer tells the compiler whether the array is global or local.

2 setting the size through ArrayResize() - after this procedure, the array is actually ready to work.

3 Initialization - if it is not specified, the array remains as it was (and stores values of past starts), when the array is created, it is automatically initialized to 0.

 
grasn >> :

Thanks, I'll give it a try, but I can't assess which would be optimal. On the other hand, for a small array I also won't know its dimensionality, and in addition, in this implementation I will need to double the array, first the small one and then the big one, in which the calculated values are accumulated. But I'll have to experiment, thanks for the tip.

In my experience, I recommend to define and use arrays directly where they need to use, such arrays are mostly local, they use memory dynamically, which is better in comparison with static arrays, which want or not the wind moves them to the swap file, and therefore their work become many times slower than from the RAM, especially if the array is small, it makes no sense statically to reserve much space for them. The MQL-4 compiler is designed so that you won't feel the difference between declaring an array with an explicit size and a delayed one.

 
Urain писал(а) >>

In my experience I recommend to declare and use arrays directly where they need to use such arrays for the most part turn out to be local those dynamically use memory that is better in comparison with static arrays that you want or not Windows puts them into swap file and therefore their work become many times slower than from RAM, the more if the array small then there is no sense statically for them to reserve much space.

I don't get it... Why can't a local array be preempted in a swap file? Actually, it gets preempted there when there's a memory shortage; I'm sure both local and global arrays will be preempted in exactly the same way. What's the difference?

 
lea >> :

Something I don't understand... Why can't a local array be preempted in a swap file? Generally, it's pushed there when there's a memory shortage; I'm sure both local and global will be pushed in exactly the same way. What's the difference?

Static array has all chances to be created at each call of the program and to be squeezed out by newly created arrays on swap. Although if there is more than enough RAM, this may not happen.

 
Urain >> :

1 Not necessary at all.

Declaring an array without defining its size splits the process of array preparation into three parts:

1 declaration as such - by this procedure, the programmer tells the compiler whether the array is global or local.

2 setting the size through ArrayResize() - after this procedure, the array is actually ready to work.

3 Initialization - if it is not specified, the array remains as it was (and stores the values of past starts), when you create an array, it will automatically initialize to 0.

If you set size in init() with ArrayResize(), this array will not have any size in start(), you should specify the size in function where the array will be used, and the same goes for using the array in the user functions. If the array is passed by parameter, its size should not be specified in the user-defined function, but in start() (or in init() if the function is called by the initiate), then in the called function. The exception is the indicator arrays, the size of which is assigned equal to Bars when the indicator status is assigned to the array name in SetIndexBuffer(), and it changes in accordance with the change of Bars.

So, dear, your explanations are not only useless but also harmful because they take people's time to find out the truth.

Urain, you are misleading people. MQL arrays, including local arrays, have persistence - their size and contents are preserved between function calls and ticks. Please read the Help. Global arrays behave the same way, the only difference being that they have a global scope. An array distributed in an init function is readable in start and elsewhere. I would recommend to open a new thread, if anyone has questions about some aspects of MQL programming. I'd like to see more substantial conversations about forecasting here. ;-)

If you have any questions, please filter information from this forum ;-). If you describe the problem in more detail (you can do it in person), we (I) will figure out how to implement it better.

Reason: