Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1155

 
igorbel:

input datetime test                                =0;

Compilar. Con una fecha cero de 1970.01.01, no es posible fijar la hora en 00, 01 o 02 en los ajustes.

Este es un ejemplo de introducción de la hora en los parámetros de entrada

 
int    total=OrdersTotal();      
for(int i=0;i<total;i++)
        {
         Print("i=",i);
         if(!OrderSelect(i,SELECT_BY_POS))
           {
            Print("order not selected. Error=",GetLastError());
            continue;
           }
         if(OrderMagicNumber()!=magic_number)
           {
            Print("magic number not correct.");
            continue;
           }
         if(OrderSymbol()!=Symbol())
           {
            Print("symbol not correct.");
            continue;
           }
         if(OrderType()!=OP_SELL)
           {
            Print("order type not correct.");
            continue;
           }
         if(OrderCloseTime()>0)
           {
            Print("order close time not correct.");
            continue;
           }
         if(!OrderClose(ticket,lots,price,slippage,clrClose))
              {
               Print("order Sell with ticket=",ticket,", was not closed. Error=",GetLastError());
              }
            else
              {               
               Print("order Sell with ticket=",ticket,", was closed.");
              }
        }

¿Por qué recibo un error 4051 en OrderSelect()? La primera orden abierta se cierra correctamente, en la segunda orden no se selecciona. Error=4051. Valor válido 2 en total.

 
igorbel:

¿Por qué recibo un error 4051 en OrderSelect()? La primera orden abierta se cierra correctamente, en la segunda orden no se selecciona. Error=4051. Valor válido 2 en total.

Al borrar y cerrar, el bucle debe invertirse:

for(int i=total-1;i>=0;i--)
 
igorbel:

Algún que otro bicho maravilloso.

Añadiendo las entradas:

input datetime test                                =0;

Compilar. Con la fecha 1970.01.01 cero, no es posible ajustar la hora a 00, 01 o 02 en los ajustes.

la variable de entrada no puede ser modificada en la EA
variable externa - sí

 
Taras Slobodyanik:

La variable de entrada no puede ser modificada en la EA
la variable externa - puede


No en el código de EA. En la ventana de parámetros de entrada, cuando se adjunta el EA al gráfico.

 
Artyom Trishkin:

El ciclo debe invertirse al borrar y cerrar:


gracias

 

Buenas tardes, por favor, ayuda con estas preguntas (2):

1. ¿Existe tal EA, guardar los resultados de las pruebas por la historia en un archivo de Excel. Por ejemplo, he probado un EA y quiero obtener los parámetros del EA, allí el beneficio, el tipo de operación, el resultado, los DÍAS DE LA SEMANA, etc.

También me gustaría saber cómo hacer un análisis detallado o compartir mi experiencia sobre cómo se prueba un EA y ver si vale la pena o es una mierda total.

2. ¿Cómo puedo pasar un array o una estructura a una función? Es decir, tengo un montón de variables, añado estas variables a una estructura y la paso a una función.

Luego abro esta estructura en esta función y obtengo las variables que necesito. Esto se hace para evitar "arrastrar" todos los valores de las variables a una función (por comodidad).

Gracias.

 
rabanik:

Buenas tardes, por favor, ayuda con estas preguntas (2):

1. ¿Existe tal EA, guardar los resultados de las pruebas por la historia en un archivo de Excel. Por ejemplo, he probado un EA y quiero obtener los parámetros del EA, allí el beneficio, el tipo de operación, el resultado, los DÍAS DE LA SEMANA, etc.

También me gustaría saber cómo hacer un análisis detallado o compartir mi experiencia sobre cómo se prueba un EA y ver si vale la pena o es una total basura.

2. ¿Cómo puedo pasar un array o una estructura a una función? Es decir, tengo un montón de variables, añado estas variables a una estructura y la paso a una función.

Luego abro esta estructura en esta función y obtengo las variables que necesito. Esto se hace para evitar "arrastrar" todos los valores de las variables a una función (por comodidad).

Gracias.

La respuesta está aquí.

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("a и b после вызова:",a," ",b);
  }
//+------------------------------------------------------------------+
//--- результат выполнения скрипта
//  a и b перед вызовом: 14 8
//  a и b после вызова: 28 4
Передача параметров - Функции - Основы языка - Справочник MQL4
Передача параметров - Функции - Основы языка - Справочник MQL4
  • docs.mql4.com
Передача параметров - Функции - Основы языка - Справочник MQL4
 

Estimados señores.

Por favor, ayúdenme a entender el problema.

He utilizado un operador switch(int err)

Recibí un mensaje

int ErrorDescription()

{

Alert("beg ErrorDescription")


switch(err)

{

caso 0: err="Ningún error"; break;

caso 1: err="No hay error, pero el resultado es desconocido"; break;

caso 2: err="Error general"; break;

caso 3: err="Parámetros erróneos";

¿Qué pasa, no puedo averiguar dónde se supone que está el punto y coma? No está claro...

 
buyanov:

Estimados señores.

Por favor, ayúdenme a entender el problema.

He utilizado un operador switch(int err)

Recibí un mensaje

int ErrorDescription()

{

Alert("beg ErrorDescription")


switch(err)

{

caso 0: err="Ningún error"; break;

caso 1: err="No hay error, pero el resultado es desconocido"; break;

caso 2: err="Error general"; break;

caso 3: err="Parámetros erróneos";

¿Qué pasa? ¿No puedes saber dónde debería estar el punto y coma? No está claro...

¿Has mirado después de Alert()? Dónde está ";" ?

int ErrorDescription()
  { 
   Alert("beg ErrorDescription");   // где у вас ";" ???
   switch(err)
   {    
      case 0:   err="Нет ошибок";                                                     break;
      case 1:   err="Нет ошибки, но результат неизвестен";                            break;
      case 2:   err="Общая ошибка";                                                   break;
      case 3:   err="Неправильные параметры";        
¿Y por qué le das a la función un fragmento?