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 1044

 
LRA:

int Bandeiras=FILE_WRITE+FILE_TXT+FILE_COMMON;

int Info = FileOpen(fName,Flags);

FileWrite(Info,What's Up); No outro terminal, leia. Cursor em FileOpen e F1 - obtenha ajuda

Obrigado, eu vou dar uma olhada!
 

Olá a todos.

Minha série cronológica não é atualizada na seqüência de definição de eventos comerciais (quando uma nova vela aparece), ou melhor, seu valor não muda quando uma nova vela aparece.

if(T[i]!=iTime(NULL,TF[i],1))

T[i] é primeiro definido ao lançar o Expert Advisor, e depois, quando uma nova vela aparece, o valor é atualizado.

O parâmetro I é definido com base nos parâmetros de entrada.

O que é interessante, a versão onde eu usei várias TFs para trabalhar, e tive que usar uma para loop por causa disso, tudo funcionou bem, mas falha aqui - não está atualizada, e é isso...(

 
Igemon:

Olá a todos.

Minha série cronológica não é atualizada na cadeia de definição de eventos comerciais (quando uma nova vela aparece), ou melhor, seu valor não muda quando uma nova vela aparece.

T[i] é primeiro definido ao lançar o Expert Advisor, e depois, quando uma nova vela aparece, o valor é atualizado.

O parâmetro I é definido com base nos parâmetros de entrada.

O que é interessante, usei vários TFs para trabalhar na versão em que tive que usar um para loop e funcionou bem, mas agora falha - apenas não atualiza...(

Aparentemente, não foi puxado para fora do laço corretamente.

Aqui está uma função personalizada para definir uma nova barra

bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

Variáveis de entrada:

tf - período ou valor do período do gráfico para determinar a ocorrência de uma nova barra.

última barra - uma variável passada por referência para armazenar a hora da última barra.

void OnTick()
{
// хотим определить наступление нового дня
 static datetime lastDay, lastHour;
 bool newDay, newHour;
 newDay = NewBar(PERIOD_D1, lastDay);
 if(newDay)
 Print("наступил новый день");
// и нового часа
 newHour = NewBar(PERIOD_H1, lastHour);
 if(newHour)
 Print("наступил новый час");
}
 
AlexeyVik
bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

A primeira vez que é chamada da EA, ela relata imediatamente um novo bar. Fixado pela adição de chamadas de função ao OnInit()

Ao ser chamado pela primeira vez do roteiro, ele relata imediatamente uma nova barra. Depois é sempre falso. Fixado pela adição de RefreshRates() ao início da função

 
LRA:

A primeira vez que é chamada da EA, ela relata imediatamente um novo bar. Fixado pela adição de chamadas de função ao OnInit()

Ao ser chamado pela primeira vez do roteiro, ele relata imediatamente uma nova barra. Depois é sempre falso. Fixado pela adição de RefreshRates() ao início da função

1. À primeira vista, é bastante normal, se não houve barras, a que apareceu será a nova. Se necessário, se a estratégia o exigir, é possível recusar um novo bar e mais alguns desta forma. Num relance, sem pensar, apresento mais dois.

static datetime lastDay = iTime(_Symbol, PERIOD_D1, 0);, lastHour = iTime(_Symbol, PERIOD_H1, 0);

ou

if(lastbar != curbar && lastbar > 0)

2. Por que o roteiro definiria uma nova barra? Isto é bobagem até que ponto?

 

Mas por que não está funcionando aqui...((( Eu acho que está tudo bem(

extern int TFrame=1;

datetime T[6];
int TF[6]={1,5,15,30,60,240};
int i=TFrame-1;

int OnInit()
   {
   T[0]=iTime(NULL,1,1);
   T[1]=iTime(NULL,5,1);
   T[2]=iTime(NULL,15,1);
   T[3]=iTime(NULL,30,1);
   T[4]=iTime(NULL,60,1);
   T[5]=iTime(NULL,240,1);
   for(int q=0;q<=5;q++)
      Print(T[q]);
   return(INIT_SUCCEEDED);
   }
 
void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
 

Igemon:

void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
Desculpe-me, Igemon, mas por que essa imprudência? Que tipo de pessoa o aconselhou a fazer isso?
 
Bom dia a todos. Alguém poderia me aconselhar: como posso garantir que o Expert Advisor funcione corretamente, ou seja, execute um determinado algoritmo, se o terminal for reiniciado ou se a Internet for desconectada?
 
artmedia70:
Desculpe-me, Ygemon, mas por que essa imprudência? Que tipo de pessoa o aconselhou a fazer isso?
O que há de errado com isso? Eu simplesmente não coloquei o resto do código, porque lá tudo é normal. O loop é necessário para não depender de carrapatos, ao definir os eventos, para não reiniciar o PC é dormir a 100 mlsec