Fetching iHighest bar value from higher time frame

Back to topics list To post a new topic, please log in or register
avatar
15
N22 2015.04.24 03:50
 

Hi , it seems as if when using the iHighest syntex fetching a value from a higher time frame does not work correctly. The value that is fetched does not exist on the specified time frame's candle highs. When checking this by printing functions to chart the are discrepancies on the smaller time frames i.e. 15min,30min,1hr. The values are fetched from 4Hr in this example. however when using syntex (iHighest) on the 4Hr chart , fetching values from the same chart , it work fine. Please check for me on yourside and let me if fetching iHighest from a higher time frame works fine.

#include <stdlib.mqh>

#include <WinUser32.mqh>


// exported variables



// local variables

double PipValue=1;    // this variable is here to support 5-digit brokers

bool Terminated = false;

string LF = "\n";  // use this in custom or utility blocks where you need line feeds

int NDigits = 4;   // used mostly for NormalizeDouble in Flex type blocks

int ObjCount = 0;  // count of all objects created on the chart, allows creation of objects with unique names

int current = 0;




int init()

{

    NDigits = Digits;

    

    if (false) ObjectsDeleteAll();      // clear the chart

    

    

    Comment("");    // clear the chart

    return (0);

}


// Expert start

int start()

{

    if (Bars < 10)

    {

        Comment("Not enough bars");

        return (0);

    }

    if (Terminated == true)

    {

        Comment("EA Terminated.");

        return (0);

    }

    

    OnEveryTick309();

    return (0);

}


void OnEveryTick309()

{

    PipValue = 1;

    if (NDigits == 3 || NDigits == 5) PipValue = 10;

    

    PrintFunctionsToChart397();

    

}


void PrintFunctionsToChart397()

{

    string temp = "Some Text\n";

    temp = temp + "------------------------------------------------\n"

    + "Highest high from bar(2) to bar(5) " + DoubleToStr(High[iHighest(NULL,PERIOD_H4,MODE_HIGH,5,2)], 5) + "\n"

    + "Some text " + DoubleToStr(0, 5) + "\n"

    + "Some text " + DoubleToStr(0, 5) + "\n"

    + "Some text " + DoubleToStr(0, 5) + "\n"

    + "------------------------------------------------\n";

    Comment(temp);

    

}




int deinit()

{

    if (false) ObjectsDeleteAll();

    

    

    return (0);

avatar
15
N22 2015.04.24 03:51 #
 
#include <stdlib.mqh>
#include <WinUser32.mqh>

// exported variables


// local variables
double PipValue=1;    // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n";  // use this in custom or utility blocks where you need line feeds
int NDigits = 4;   // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0;  // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;



int init()
{
    NDigits = Digits;
    
    if (false) ObjectsDeleteAll();      // clear the chart
    
    
    Comment("");    // clear the chart
    return (0);
}

// Expert start
int start()
{
    if (Bars < 10)
    {
        Comment("Not enough bars");
        return (0);
    }
    if (Terminated == true)
    {
        Comment("EA Terminated.");
        return (0);
    }
    
    OnEveryTick309();
    return (0);
}

void OnEveryTick309()
{
    PipValue = 1;
    if (NDigits == 3 || NDigits == 5) PipValue = 10;
    
    PrintFunctionsToChart397();
    
}

void PrintFunctionsToChart397()
{
    string temp = "Some Text\n";
    temp = temp + "------------------------------------------------\n"
    + "Highest high from bar(2) to bar(5) " + DoubleToStr(High[iHighest(NULL,PERIOD_H4,MODE_HIGH,5,2)], 5) + "\n"
    + "Some text " + DoubleToStr(0, 5) + "\n"
    + "Some text " + DoubleToStr(0, 5) + "\n"
    + "Some text " + DoubleToStr(0, 5) + "\n"
    + "------------------------------------------------\n";
    Comment(temp);
    
}



int deinit()
{
    if (false) ObjectsDeleteAll();
    
    
    return (0);
}
avatar
Moderator
3427
GumRai 2015.04.24 04:14 #
 
DoubleToStr(High[iHighest(NULL,PERIOD_H4,MODE_HIGH,5,2)], 5) 

You are finding the highest of bars 2 to 6, not 2 to 5.

If you run this on the H1 chart and the highest bar on the H4 chart is n

You then find the high of the nth bar of the H1 chart

That is why it appears to work correctly on the H4 chart 

avatar
13009
WHRoeder 2015.04.24 14:29 #
 
  1. Don't paste code
    Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. DoubleToStr(High[iHighest(NULL,PERIOD_H4,MODE_HIGH,5,2)], 5)
    You are mixing apples and oranges
avatar
15
N22 2015.04.27 16:01 #
 
WHRoeder:

  1. Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. You are mixing apples and oranges
Hi WHRoeder , thanks for the response , I  inserted the portion of the code you typed for me (your second message) and the results are the same. When on the 15 min time frame for example , the Highest High on the 4Hr chart displayed on the current chart , 15 Min in this example , changes at the beginning of every new 15min candle. And I believe that the H4 Highest high displayed on 15 min chart should remain the same for at least 16 bars.  
#include <stdlib.mqh>
#include <WinUser32.mqh>

// exported variables


// local variables
double PipValue=1;    // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n";  // use this in custom or utility blocks where you need line feeds
int NDigits = 4;   // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0;  // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;



int init()
{
    NDigits = Digits;
    
    if (false) ObjectsDeleteAll();      // clear the chart
    
    
    Comment("");    // clear the chart
    return (0);
}

// Expert start
int start()
{
    if (Bars < 10)
    {
        Comment("Not enough bars");
        return (0);
    }
    if (Terminated == true)
    {
        Comment("EA Terminated.");
        return (0);
    }
    
    OnEveryTick422();
    return (0);
}

void OnEveryTick422()
{
    PipValue = 1;
    if (NDigits == 3 || NDigits == 5) PipValue = 10;
    
    PrintFunctionsToChart490();
    
}

void PrintFunctionsToChart490()
{
    string temp = "Some Text\n";
    temp = temp + "------------------------------------------------\n"
    + "Some text " + DoubleToStr(DoubleToStr(High[iHighest(NULL,PERIOD_H4,MODE_HIGH,5,2)], 5), 5) + "\n"
    + "Some text " + DoubleToStr(0, 5) + "\n"
    + "Some text " + DoubleToStr(0, 5) + "\n"
    + "Some text " + DoubleToStr(0, 5) + "\n"
    + "------------------------------------------------\n";
    Comment(temp);
    
}



int deinit()
{
    if (false) ObjectsDeleteAll();
    
    
    return (0);
}
avatar
Moderator
3427
GumRai 2015.04.27 20:46 #
 
I already told you what the problem is
avatar
13009
WHRoeder 2015.04.27 23:39 #
 
N22:Hi WHRoeder , thanks for the response , I  inserted the portion of the code you typed for me (your second message) and the results are the same.
  1. You didn't edit your original post's using SRC as Requested.
  2. I only posted one message and it had no code. It only quoted your line like the one below. Do you replaced your line with your line and got the same results. Why are you surprised?
  3. oubleToStr(High[iHighest(NULL,PERIOD_H4,MODE_HIGH,5,2)
    Since your code has exactly the same problem as your original post, you didn't bother to follow the links I provided and learn why, and you didn't bother to read GunRai's post which said the same thing. You've wasted enough of people's time
avatar
15
N22 2015.04.28 03:09 #
 
GumRai:

You are finding the highest of bars 2 to 6, not 2 to 5.

If you run this on the H1 chart and the highest bar on the H4 chart is n

You then find the high of the nth bar of the H1 chart

That is why it appears to work correctly on the H4 chart 

Hi Guys please bare with me here for asking questions that seem basic. I know understand your meaning GumRai. My next question is , is it then possible to do what I am trying to do, which is to fetching the exact value of the highest high from a higher time frame. ( My apologies for the waste of time)
avatar
Moderator
3427
GumRai 2015.04.28 03:22 #
 
N22:
Hi Guys please bare with me here for asking questions that seem basic. I know understand your meaning GumRai. My next question is , is it then possible to do what I am trying to do, which is to fetching the exact value of the highest high from a higher time frame. ( My apologies for the waste of time)

Of course it is possible.

You just need to learn the difference between

High[] and iHigh()

You already know how to use iHighest, so it should be simple for you to use iHigh 

avatar
15
N22 2015.04.28 05:05 #
 
GumRai:

Of course it is possible.

You just need to learn the difference between

High[] and iHigh()

You already know how to use iHighest, so it should be simple for you to use iHigh 

Thanks , advice helped figure it out
Back to topics list  

To add comments, please log in or register