Determine o número de barras numéricas na TF que pretende (se quiser verificar o extremo do dia de 15 em 15 minutos - barras M15);
3. Receber os dados em altura para as barras numéricas;
3. No laço, comparar todos os valores de barras altas com a variável dayHigh para a vela do dia desejado (inicialmente dayHigh = 0);
4. Se elevado > dayHigh, armazena o novo valor na variável dayHigh;
Isto é compreensível, obrigado. Mas até agora é complicado para mim... ou melhor, ponto 2, é necessário fazer cálculos para cada TF e colocá-lo em intervalos para encontrar o número de castiçais?
Não podemos simplesmente descobrir a data do prazo actual e procurar em todos os valores a data, sem contar com o número de velas que passaram?
Isso é compreensível, obrigado. Mas até agora é complicado para mim... ou mais precisamente o ponto 2, é fazer um cálculo para cada TF e colocá-lo em intervalos para encontrar o número de castiçais?
Não podemos simplesmente descobrir a data do prazo actual e procurar em todos os valores a data, sem determinar o número de velas que passaram?
É fácil determinaro número de barras dentro do dia. Por exemplo, para um gráfico de 15 minutos. Dividir o número de minutos num dia por 15 (1440 / 15 = 96 barras ou outro PERÍODO_D1/PERIOD_M15 = 96)
Vitalii Ananev: O número de barras intradiárias é simples de determinar. Por exemplo, para um gráfico de 15 minutos. Dividir o número de minutos num dia por 15 (1440 / 15 = 96 barras ou outro PERÍODO_D1/PERIOD_M15 = 96)
Não deve fazer isto! Nunca aceite como um facto que o número de bares num determinado dia na TF será o mesmo!
Vitalii Ananev: É fácil de determinar o número de barras num dia. Por exemplo, para um gráfico de 15 minutos. Dividir o número de minutos num dia por 15 (1440 / 15 = 96 barras ou outro PERÍODO_D1/PERIOD_M15 = 96).
Compreendo isso matematicamente, mas como fazê-lo com funções - essa é a questão! Suponha que obtenho a hora actual usando o Tempo, e depois como
Penso em fazer um contador para cada TF, com uma nova barra, que será reposta no início de um novo dia, e reposta a zero para um dia máximo, e antes disso fazer uma comparação de cada barra, mas como programá-la?
Compreendo isso matematicamente, mas como fazê-lo com funções - essa é a questão! Suponha que obtenho a hora actual usando o Tempo, e depois como
Penso que devo fazer um contador para cada TF, com uma nova barra, que será reposta a zero no caso de um novo dia. Quero repor a zero por um dia no máximo e comparar cada barra antes disso; mas como devo programá-la?
Esta é aproximadamente a forma como podemos encontrar a primeira barra correspondente ao início do dia.
Esta é aproximadamente a forma de encontrar a primeira barra correspondente ao início do dia.
Por exemplo, temos este algoritmo.
Encontrámos a primeira barra - no momento da sua formação, esta barra será o ponto alto do dia. Depois, obtemos a próxima barra e verificamos o seu máximo, se for mais alta que a anterior, significa que é uma nova alta do dia. E assim por diante até à última barra do dia.
#property script_show_inputs#property strict//+------------------------------------------------------------------+//| Входные параметры |//+------------------------------------------------------------------+inputENUM_TIMEFRAMES inpUserTimeframe=PERIOD_M15; // Пользовательский ТФ//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
// Определяем время открытия текущего дняdatetime open_D1=iTime(_Symbol,PERIOD_D1,0);
// Определяем номер первого сформированного бара по пользовательскому ТФ за текущий деньint last_utf = iBarShift( _Symbol, inpUserTimeframe, open_D1, true );
if( last_utf == -1 )
{
Alert(EnumToString(inpUserTimeframe)+" ОШИБКА #",GetLastError(),": номер бара не определен! "+TimeToStr(open_D1));
return;
}
// Определяем максимум дняdouble dayHigh=0;
double high;
int highNum=0;
for(int i=1; i<=last_utf; i++) // Цикл по сформированным свечам за текущий день
{
high = iHigh( _Symbol, inpUserTimeframe, i ); // Максимум на i свечеif( high > dayHigh ) // Если максимум дня превышен
{
dayHigh = high; // Запоминаем новый максимум
highNum = i; // Запоминаем номер свечи
}
}
Alert(EnumToString(inpUserTimeframe)+": максимум дня = ",DoubleToString(dayHigh,_Digits)," обнаружен на свече #",highNum);
}
1. determinar a hora de abertura da vela diária;
Determine o número de barras numéricas na TF que pretende (se quiser verificar o extremo do dia de 15 em 15 minutos - barras M15);
3. Receber os dados em altura para as barras numéricas;
3. No laço, comparar todos os valores de barras altas com a variável dayHigh para a vela do dia desejado (inicialmente dayHigh = 0);
4. Se elevado > dayHigh, armazena o novo valor na variável dayHigh;
Isto é compreensível, obrigado. Mas até agora é complicado para mim... ou melhor, ponto 2, é necessário fazer cálculos para cada TF e colocá-lo em intervalos para encontrar o número de castiçais?
Não podemos simplesmente descobrir a data do prazo actual e procurar em todos os valores a data, sem contar com o número de velas que passaram?
Isso é compreensível, obrigado. Mas até agora é complicado para mim... ou mais precisamente o ponto 2, é fazer um cálculo para cada TF e colocá-lo em intervalos para encontrar o número de castiçais?
Não podemos simplesmente descobrir a data do prazo actual e procurar em todos os valores a data, sem determinar o número de velas que passaram?
O número de barras intradiárias é simples de determinar. Por exemplo, para um gráfico de 15 minutos. Dividir o número de minutos num dia por 15 (1440 / 15 = 96 barras ou outro PERÍODO_D1/PERIOD_M15 = 96)
É fácil de determinar o número de barras num dia. Por exemplo, para um gráfico de 15 minutos. Dividir o número de minutos num dia por 15 (1440 / 15 = 96 barras ou outro PERÍODO_D1/PERIOD_M15 = 96).
Compreendo isso matematicamente, mas como fazê-lo com funções - essa é a questão! Suponha que obtenho a hora actual usando o Tempo, e depois como
Penso em fazer um contador para cada TF, com uma nova barra, que será reposta no início de um novo dia, e reposta a zero para um dia máximo, e antes disso fazer uma comparação de cada barra, mas como programá-la?
Não deve fazer isso! Nunca deve ser considerado como um facto que o número de bares num determinado dia pela TF será o mesmo!
Sim, por exemplo, pode haver uma hora de fecho antecipada numa sexta-feira.
Por isso tem de definir um dia, e tomar uma matriz para encontrar o máximo para o dia sem ter em conta o número de castiçais, como é que o faz?
Compreendo isso matematicamente, mas como fazê-lo com funções - essa é a questão! Suponha que obtenho a hora actual usando o Tempo, e depois como
Penso que devo fazer um contador para cada TF, com uma nova barra, que será reposta a zero no caso de um novo dia. Quero repor a zero por um dia no máximo e comparar cada barra antes disso; mas como devo programá-la?
Esta é aproximadamente a forma como podemos encontrar a primeira barra correspondente ao início do dia.
Esta é aproximadamente a forma de encontrar a primeira barra correspondente ao início do dia.
Por exemplo, temos este algoritmo.
Encontrámos a primeira barra - no momento da sua formação, esta barra será o ponto alto do dia. Depois, obtemos a próxima barra e verificamos o seu máximo, se for mais alta que a anterior, significa que é uma nova alta do dia. E assim por diante até à última barra do dia.