Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 723

 
Igor Makanu:

não pode.

use iBars() para ver o histórico disponível

SZZ: Se não estou enganado, no testador, quando você inicia o Expert Advisor está disponível 1000 barras, então com a geração de novos dados o número de barras irá aumentar. O testador modela o histórico de todos os TFs aos quais é dirigido, ou seja, se você executou o teste no H1 e durante o teste acessou os dados no TF M1, então quando você iniciar estará disponível para 1000 barras no H1, e portanto 60 * 1000 = 60.000 barras M1

você precisa ler mais artigos como estehttps://www.mql5.com/ru/articles/1511

Tenho uma idéia de como fazer isso.

Você pode fazer um início de EA e não pode negociar por um mês.

e no próximo mês só começará a operar.

O histórico será acumulado e o coeficiente de variância será calculado antes da comercialização.


como você gosta do método?



Mas como registro que "o primeiro mês não foi negociado"...

Estarei testando em períodos diferentes.

Eu não quero ter que fixar a data à mão o tempo todo.

Não quero continuar corrigindo a data à mão.

 
multiplicator:

Já descobri como fazê-lo.

você pode fazer a EA começar e não negociar por um mês.

Isto é aproximadamente o que você precisa para seu problema, mas mais uma vez, use iBars() e você saberá quanta história está disponível para a EA no testador

 

multiplicator:
счётчик, что ли включить, дней...

Igor Makanu:

mas novamente use iBars() e você saberá quanta história está disponível para a EA no testador

Exatamente!

quando iBars() se torna > 30 000 - calcular a variação e depois permitir que a EA negocie.

graças a todos que responderam.

 

Olá! Ajuda para um comerciante iniciante inexperiente! Eu tenho um EA, mas ele não tem um stop loss! Quem pode acrescentar um stop loss a um EA (e se possível de graça!)

 
Tem4ik:

Olá! Ajuda para um comerciante iniciante inexperiente! Eu tenho um EA, mas ele não tem um stop loss! Quem pode acrescentar um stop loss a um EA (e se possível de graça!)


Coloque o código aqui (se ele não estiver descompilado) e talvez alguém possa ajudar.

 
#define  list "Cryptocurrency Market\\List.csv"

enum FILE_LOCATION
{
   LOCATE_TERMINAL = 0,
   LOCATE_COMMON = FILE_COMMON,
};

void GetLocalSource(FILE_LOCATION &dir)
{
   GetLocalList(FileOpenEx(list, FILE_WRITE|FILE_READ|FILE_CSV|dir));
}

int FileOpenEx(const string fname, int flags, int delimeter =';', uint codepage = CP_ACP)
{
   bool ex;
   if(flags > 4095)
      ex = FileIsExist(fname, FILE_COMMON);
   else
      ex = FileIsExist(fname);
   if(!ex) return -1;
   return FileOpen(fname, flags, delimeter, codepage);
}

bool GetLocalList(const int handle)
{
   if(handle == INVALID_HANDLE) {Print("Handle err: ", handle, " | ", GetLastError()); return false;}
...
}

Não consigo encontrar o arquivo viaFileIsExist, a função não quer vê-lo. Já embaralhei este arquivo tanto no diretório geral quanto no diretório de terminais - o resultado não mudou

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Daily: Handle err: -1 | 5020

A função que escreve List.csv o abre através da mesma substituição de macros da lista

Qual é o erro?

 
Ilya Prozumentov:

Não consigo encontrar o arquivo via FileIsExist, a função não quer vê-lo. Já embaralhei este arquivo tanto no diretório geral quanto no diretório de terminais - o resultado não mudou

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Daily: Handle err: -1 | 5020

A função que escreve List.csv o abre através da mesma substituição de macros da lista

Qual é o erro?

Tente esta#define list "Files\\Cryptocurrency Market Lista.csv".

O arquivo deve estar na pasta Arquivos

 
Vladimir Pastushak:

Tente esta#define list "Files\\Cryptocurrency Market Lista.csv".

O arquivo deve estar na pasta Arquivos

Não funcionou.


P.S Problema encontrado, há um espaço no final de um nome de arquivo já existente

 

Olá.

Você pode me dizer como determinar a data (em formato de data) do início e do final da semana? Preciso que o oscilador seja zerado no final da semana e comece a contar de zero no início da nova semana. No momento, eu sei como colocá-lo a zero para cada dia, mas não tenho idéia de como colocá-lo a zero para cada semana. É assim que eu faço o reset todos os dias.

void Calculate(int i)
  {
   double summ;
   datetime startTime  = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+StartTime); // StartTime=00:10
   datetime endTime    = StringToTime(TimeToString(Time[i],TIME_DATE)+" "+EndTime);   // EndTime=23.50
   datetime currentTime= StringToTime(TimeToString(Time[i],TIME_DATE)+" "+TimeToString(Time[i],TIME_MINUTES));
//Print("Start = ",TimeToString(startTime,3));
//Print("End = ",TimeToString(endTime,3));
   if(CheckTimer(i,startTime,endTime,currentTime,0))
     {
      summ = MainBuffer[i+1];
      summ+= InfluenceBuffer[i];
      MainBuffer[i]=summ; 
     }
   else
     {
      summ=0.0;
      MainBuffer[i]=summ;
      }
  }

Obrigado

 
Gerkl:

Você pode aconselhar como determinar a data (em formato de data) do início da semana e do final da semana?

//1. для времени datetime t
if(TimeDayOfWeek(t))==1) // Понедельник
if(TimeDayOfWeek(t))==5) // Пятница

//2. для текущего времени
if(DayOfWeek() = 1) // Понедельник
if(DayOfWeek() = 5) // Пятница

O mais provável é que você precise da variante №1, então no indicador no ciclo de cálculo, onde você procura por barras, você usa a seguinte estrutura:

if(TimeDayOfWeek(Time[i]))==1) // Понедельник
if(TimeDayOfWeek(Time[i]))==5) // Пятница
você tem o momento certo no Tempo[i] após verificar a condição