Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 182

 

Olá.

Há uma função NewBar(sy, TF). Parece que se abriu um novo bar. Preciso obter um sinal na tabela horária sobre o aparecimento de uma nova barra com um atraso de 5 minutos. Quero receber o sinal em 0.05, 1.05, 2.05, ..........., 10.05, 11.05, etc.


Como isso pode ser feito ? Talvez a função em si possa ser redesenhada de alguma forma ?

 
hoz:

Bem, eu removi a biblioteca #propriedade, mas não houve nenhum aviso, enquanto não há função de início...

Avisos sobre o quê?
 
Vinin:

Avisos sobre o quê?


Que tal... Aqui:

sergeev:
você precisa dele se não quiser ver avisos sobre um início ausente

 
gince:

Olá.

Há uma função NewBar(sy, TF). Ele verifica se um novo bar foi aberto. Preciso obter um sinal na tabela horária sobre o aparecimento de uma nova barra com 5 minutos de atraso. Quero receber o sinal em 0.05, 1.05, 2.05, ..........., 10.05, 11.05, etc.


Como isso pode ser feito ? É possível modificar a própria função?


Você o declara globalmente:

datetime = bdt_lastBarTime;

IN INIT:

bdt_lastBarTime = 0;

EM INÍCIO:

if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

g_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Ao invés de Tempo[0]; você pode marcar o iTime() para obter uma nova barra por um período de tempo diferente do atual.

 
hoz:


Você o declara globalmente:

INIT:

EM INÍCIO:

Você pode marcar iTime() ao invés de Time[0]; para obter uma nova barra por um período de tempo diferente do atual.


O único problema é. Os nomes das variáveis não correspondem. Ai, ai. Ou é desatenção ou hábito.
 
Vinin:

Exceto que o problema é este. Os nomes das variáveis não correspondem. Oh, querida. Desatenção ou hábito

Isso é desatenção. Correção.

Você declara globalmente:

datetime = bdt_lastBarTime;

IN INIT:

bdt_lastBarTime = 0;

EM INÍCIO:

if (bdt_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                    // ..уже были выполнены

// если ...
//.. бар новый...
//.. делаем то..
//.. что нужно выполнить на очередном..
//.. новом баре

bdt_lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                       // .. успешно выполнены

Você pode marcar iTime() ao invés de Time[0]; para obter uma nova barra por um período de tempo diferente do atual.

 

num relance, apenas especificamente para esta tarefa.

bool NewBar05()
{
static bool newbar;
if (Minute()==5 && !newbar) 
   {
   newbar=true;
   return true;
   } 
if (Minute()>5 && newbar)  newbar=false;
   return  false;
}
    
 
xxxKillxxx:

Camarada, desculpe-me novamente, mas eu tenho um problema.... Consegui verificar todos os blocos para fechar sem nenhum erro ou aviso e não estou recebendo nenhuma sintaxe, mas não estou recebendo nenhum sinal quando começo minha EA, minhas negociações não fecharão como esperado. O problema é que eu não posso colocar o código da EA, e para resolver bem o problema muito necessário, se você não se importa de gastar comigo novamente seu precioso tempo, por favor me diga que opções podem ser para resolver o problema, se for importante, eu só posso dizer que a EA foi criada no forex generator 4.

Gostaria de pedir-lhe que explicasse as razões (de preferência com os dedos e a língua na cara, pois só faço este tipo de programação).


Bem, meu código ou já parte de seu Expert Advisor fecha o lucro especificado de 0,1% e acima. No gerador 4 você foi capaz de fazer algo que fizesse com que o patrimônio fosse maior do que o saldo ?
 
Roger:

num relance, apenas especificamente para esta tarefa.


Obrigado a todos por sua ajuda.

A questão era a seguinte.

<Existe uma função NewBar(sy, TF). Ele verifica se um novo bar foi aberto. Preciso obter um sinal na tabela horária sobre o aparecimento de uma nova barra com um atraso de 5 minutos. Ou seja, quero receber um sinal em 0,05, 1,05, 2,05, ..........., 10,05, 11,05, etc.

Para esclarecer a questão. A função deve retornar verdadeiro a cada hora, mas com um atraso de 5 minutos. Isto é, quando a formação da barra 1,05 termina e a barra 2,05 aparece, a função retorna verdadeira quando esta última aparece. A função retorna verdadeiro quando a barra aparece em 1.10, 2.10, etc.

Na figura a linha amarela mostra que a próxima barra era verdadeira .

Seguindo sua dica, eu tentei desta forma, mas não funciona.

bool isNewBar5 ()
{

    static int   LastBar = 0; 
    datetime      curbar = iTime (Symbol(), 60, 0) +300; 
    int                h = Hour();
    if (LastBar != curbar && h == h + 1 && Minute() == 5)
    {
        LastBar = curbar;
        return (true);
    }
    else
    {return (false);}
}
 
gince:

Olá.

A função NewBar(sy, TF) está disponível. Ele verifica se um novo bar foi aberto. Preciso obter um sinal de uma nova barra no gráfico de horas com uma defasagem de 5 minutos. Quero receber o sinal em 0.05, 1.05, 2.05, ..........., 10.05, 11.05, etc.


Como isso pode ser feito ? Talvez a função em si possa ser reescrita?


int bt=((TimeCurrent()-5*60)/3600)*3600;

O valor de bt mudará aos 5 minutos de cada hora. É possível não multiplicar por 3600 no final, será o número da barra desde o início da época, isto é suficiente para definir uma nova barra.