Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 723

 
Igor Makanu:

no puede.

utilizar iBars() para ver el historial disponible

SZZ: Si no me equivoco, en el probador, cuando se inicia el Asesor Experto está disponible 1000 barras, luego con la generación de nuevos datos el número de barras aumentará. El probador modela la historia de todos los TFs a los que se dirige, es decir, si usted ejecutó la prueba en H1 y durante la prueba accedió a los datos en TF M1, entonces cuando se inicia estará disponible para 1000 barras en H1, y por lo tanto 60 * 1000 = 60.000 barras M1

necesitas leer más artículos como estehttps://www.mql5.com/ru/articles/1511

Tengo una idea de cómo hacerlo.

Puedes hacer arrancar un EA y no operar durante un mes.

y al mes siguiente sólo empezará a cotizar.

Se acumulará el historial y se calculará el coeficiente de varianza antes de operar.


¿qué le parece el método?



Pero, ¿cómo puedo registrar que "el primer mes no se negoció"...

Voy a hacer pruebas en diferentes períodos.

No quiero tener que arreglar la fecha a mano todo el tiempo.

No quiero seguir corrigiendo la fecha a mano.

 
multiplicator:

He descubierto cómo hacerlo.

puedes hacer que el EA se inicie y no opere durante un mes.

Esto es más o menos lo que necesitas para tu problema, pero de nuevo, utiliza iBars() y sabrás cuánta historia está disponible para el EA en el probador

 

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

Igor Makanu:

pero de nuevo, utilice iBars() y sabrá cuánta historia está disponible para el EA en el probador

Exactamente!

cuando iBars() se convierte en > 30 000 - calcular la varianza y luego permitir que el EA para el comercio.

gracias a todos los que respondieron.

 

Hola! Ayuda para un comerciante principiante sin experiencia! ¡Tengo un EA pero no tiene un stop loss! Quién puede añadir un stop loss a un EA (¡y a ser posible gratis!)

 
Tem4ik:

Hola! Ayuda para un comerciante principiante sin experiencia! ¡Tengo un EA pero no tiene un stop loss! Quién puede añadir un stop loss a un EA (¡y a ser posible gratis!)


Publica el código aquí (si no está descompilado) y quizás alguien te ayude.

 
#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;}
...
}

No puedo encontrar el archivo a través deFileIsExist, la función no quiere verlo. Ya he barajado este archivo tanto en el directorio general como en el directorio de la terminal - el resultado no ha cambiado

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

La función que escribe List.csv la abre mediante la misma sustitución de la macro de la lista

¿Cuál es el error?

 
Ilya Prozumentov:

No puedo encontrar el archivo a través de FileIsExist, la función no quiere verlo. Ya he barajado este archivo tanto en el directorio general como en el directorio de la terminal - el resultado no ha cambiado

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

La función que escribe List.csv la abre mediante la misma sustitución de la macro de la lista

¿Cuál es el error?

Pruebe esto#define lista "Files\\\Cryptocurrency Market\List.csv"

El archivo debe estar en la carpeta Files

 
Vladimir Pastushak:

Pruebe esto#define lista "Files\\\Cryptocurrency Market\List.csv"

El archivo debe estar en la carpeta Files

No funcionó.


P.D Problema encontrado, hay un espacio al final de un nombre de archivo ya existente

 

Hola.

¿Pueden decirme cómo determinar la fecha (en formato de fecha) del comienzo de la semana y del final de la semana? Necesito que el oscilador se ponga a cero al final de la semana y empiece a contar desde cero al principio de la nueva semana. De momento sé cómo ponerlo a cero para cada día, pero no tengo ni idea de cómo ponerlo a cero para cada semana. Así es como me reinicio cada día.

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;
      }
  }

Gracias

 
Gerkl:

¿Pueden aconsejar cómo determinar la fecha (en formato de fecha) del comienzo de la semana y del final de la semana?

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

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

Lo más probable es que necesite la variante №1, entonces en el indicador en el ciclo de cálculo, donde se buscan las barras, se utiliza la siguiente estructura:

if(TimeDayOfWeek(Time[i]))==1) // Понедельник
if(TimeDayOfWeek(Time[i]))==5) // Пятница
tiene el tiempo correcto en Time[i] después de comprobar la condición