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

 

Dónde está el error, no lo sé.

Op.

Archivos adjuntos:
5system2.mq4  8 kb
 
CJIeCaPb:

Dónde está el error, no lo sé.

Ope.

Algo está mal en el bucle while(O==3)

 
CJIeCaPb:

Algo está mal en el bucle while(O==3)

Uf... Eso es, lo he resuelto. Tras el cierre, el billete se borra y la orden tiene que volver a ejecutarse
 
¡Hola! Este es el problema, no puedo abrir el archivo. He probado con diferentes extensiones de archivo, sin éxito, sólo da: error 5004. El archivo está en la caja de arena de archivos. Se trata del mango, pero no tengo ni idea de por qué. Aquí está el código:
   int filehandle=FileOpen("test.txt",FILE_TXT|FILE_WRITE,";");
   if(filehandle<0)
   Alert("ошибка ",GetLastError());                          //Для проверки handle

 
 int filehandle=FileOpen("test.txt",FILE_WRITE|FILE_TXT,";");
 
evillive:
Probado sin el separador - no sirve.
 
Kapizdo4ka:
Hola, tengo este problema, no puedo abrir el archivo. Probado con diferentes extensiones de archivo, no sirve, sólo da: error 5004. El archivo está en la caja de arena del archivo. Se trata del mango, pero no tengo ni idea de por qué. Aquí está el código:

¿Has probado a especificar que el archivo está en una carpeta compartida

Banderas de apertura de archivos

Los valores de las banderas que definen cómo se manejará el archivo. Los indicadores se definen de la siguiente manera:

Identificador

Valor

Descripción

FILE_READ

1

El archivo se abre para su lectura. Esta bandera se utiliza al abrir un archivo (FileOpen()). FILE_WRITE y/o FILE_READ deben establecerse cuando se abre el archivo.

FILE_WRITE

2

El archivo se abre para escribir. Esta bandera se utiliza para abrir un archivo (FileOpen()). Cuando se abre un archivo, las banderas FILE_WRITE y/o FILE_READ deben estar activadas.

FILE_BIN

4

Modo binario de lectura-escritura (sin conversión de o a cadena). Esta bandera se utiliza para abrir archivos (FileOpen())

FILE_CSV

8

Archivo de tipo csv (todos los elementos escritos se convierten en una cadena del tipo apropiado, unicode o ansi, y se separan con un separador). Esta bandera se utiliza al abrir un archivo (FileOpen())

FILE_TXT

16

Archivo de texto simple (igual que csv, pero sin separador). Esta bandera se utiliza cuando se abren los archivos (FileOpen())

FILE_ANSI

32

Cadenas ANSI (caracteres de un solo byte). Esta bandera se utiliza al abrir archivos (FileOpen())

FILE_UNICODE

64

Cadenas UNICODE (caracteres de dos bytes). Esta bandera se utiliza al abrir archivos (FileOpen())

FILE_SHARE_READ

128

Acceso de lectura compartido por varios programas. Esta bandera se utiliza al abrir un archivo (FileOpen()), pero no sustituye la necesidad de FILE_WRITE y/o FILE_READ al abrir un archivo.

FILE_SHARE_WRITE

256

Esta bandera se utiliza para compartir el acceso de escritura entre varios programas. Esta bandera se utiliza para abrir archivos (FileOpen()), pero no sustituye a FILE_WRITE y/o FILE_READ al abrir un archivo.

FILE_REWRITE

512

El archivo puede ser sobrescrito por FileCopy() y FileMove(). El archivo debe existir o ser escribible. De lo contrario, el archivo no se abrirá

FILE_COMMON

4096

Ubicación del archivo en la carpeta compartida de todos los terminales del cliente. Esta bandera se utiliza al abrir archivos (FileOpen()), al copiar archivos (FileCopy(), FileMove()) y al comprobar la existencia de archivos (FileIsExist())

Se pueden especificar una o más banderas al abrir un archivo, esta combinación se llama combinación de banderas. La combinación de banderas se escribe utilizando el signo de operación lógica OR (|) que se coloca entre las banderas que se enumeran. Por ejemplo, para abrir un archivo CSV para leer y escribir al mismo tiempo, puede especificar la combinación FILE_READ|FILE_WRITE|FILE_CSV.

 
Vinin:

¿Has probado a especificar que el archivo está en una carpeta compartida

Banderas de apertura de archivos

Los valores de las banderas que definen cómo se abrirá el archivo. Los indicadores se definen de la siguiente manera:

Identificador

Valor

Descripción

FILE_READ

1

El archivo se abre para su lectura. Esta bandera se utiliza al abrir un archivo (FileOpen()). FILE_WRITE y/o FILE_READ deben establecerse cuando se abre el archivo.

FILE_WRITE

2

El archivo se abre para escribir. Esta bandera se utiliza al abrir un archivo (FileOpen()). El indicador FILE_WRITE debe estar activado y/o el indicador FILE_READ debe estar activado cuando se abre un archivo.

FILE_BIN

4

Modo binario de lectura-escritura (sin convertir a y desde cadena). Esta bandera se utiliza para abrir archivos (FileOpen())

FILE_CSV

8

csv (todos los elementos escritos se convierten en una cadena del tipo apropiado, unicode o ansi, y se separan con un delimitador). Esta bandera se utiliza al abrir archivos (FileOpen())

FILE_TXT

16

Archivo de texto simple (mismo tipo, pero se ignora el delimitador). Esta bandera se utiliza al abrir un archivo (FileOpen())

FILE_ANSI

32

Cadena de tipo ANSI (caracteres de un solo byte). Esta bandera se utiliza al abrir archivos (FileOpen())

FILE_UNICODE

64

Cadenas UNICODE (caracteres de dos bytes). Esta bandera se utiliza al abrir archivos (FileOpen())

FILE_SHARE_READ

128

Acceso de lectura compartido entre varios programas. Esta bandera se utiliza al abrir un archivo (FileOpen()), pero no sustituye a la especificación de FILE_WRITE y/o FILE_READ al abrir un archivo.

FILE_SHARE_WRITE

256

Esta bandera es para el acceso de escritura compartido por varios programas. Esta bandera se utiliza para abrir archivos (FileOpen()), pero no sustituye la necesidad de especificar las banderas FILE_WRITE y/o FILE_READ al abrir un archivo.

FILE_REWRITE

512

FileCopy() y FileMove() pueden utilizarse para sobrescribir un archivo. El archivo debe existir o ser escribible. De lo contrario, el archivo no se abrirá

FILE_COMMON

4096

Ubicación del archivo en la carpeta compartida de todos los terminales cliente \Terminal\Common\Files . Esta bandera se utiliza al abrir archivos (FileOpen()), al copiar archivos (FileCopy(), FileMove()) y al comprobar la existencia de archivos (FileIsExist())

Al abrir un archivo, se pueden especificar una o más banderas, esta combinación se denomina combinación de banderas. Una combinación de banderas se registra utilizando el signo lógico OR (|) colocado entre las banderas enumeradas. Por ejemplo, para abrir un archivo CSV para leer y escribir al mismo tiempo, puede especificar la combinaciónFILE_READ|FILE_WRITE|FILE_CSV.

Gracias. Sin embargo, la respuesta resultó ser mucho más sencilla. Todo por los cambios en la nueva construcción. Resulta que ahora la función FileOpen debe especificar el tipo uint en lugar del tipo int, como en la versión anterior:
uint filehandle=FileOpen(filename,FILE_TXT||FILE_WRITE,"\r\n");

Y ahora en caso de error la función devuelve 0 en lugar de -1.

 

Dibujo de un simple Trailing Stop. bez_Level - Nivel de inicio de Trailing en pips. TrallStep - paso de arrastre. Magia - número de Magia.

El problema es que, si se abren varias órdenes por el Asesor Experto, sólo se trilla la primera orden. Y, cuando la primera orden se cierra, la segunda empieza a trinar. No recibo ningún mensaje de error. No puedo intentar averiguar qué he hecho mal. Gracias...

int lim=Total de pedidos()-1;

for(int i=lim; i>=0; i--)
{
if(bez_Nivel>0)
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_SELL)
{
{ if((OrderOpenPrice()-Ask)>(Point*bez_Level))
{
if((OrderStopLoss()>(Ask+Point*bez_Level)+(Point*TrallStep)) || (OrderStopLoss()==0))
{
//--- modificar la orden y salir
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*bez_Level,OrderTakeProfit(),0))
Print("Trailing error ",GetLastError());
}
}
}
if(OrderType()==OP_BUY)
{
if((Oferta-PrecioAbierto()>Punto*Nivel_de_Orden))
{
if(OrderStopLoss()<Bid-(Point*bez_Level)-(Point*TrallStep))
{
//--- modificar el orden
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*bez_Level,OrderTakeProfit(),0))
Print("Error de seguimiento ",GetLastError())
}
}

}

}
}
}
 

Chicos, ¿cuál es el truco? ¿Por qué no sale de Inita?

POR QUÉ NO HAY ENTRADA A START?????????

int init()
 {
   if(init_data()==false)error=true;
   if(error==false)load_data();
   if(error==false)count_data();
   //if(error==true)Print("---------->>>>>>> ERORR!!! <<<<<<<<<--------------");
   setparam();
   Print ("Инит завершён успешно");
   return (0);
 }

int start()
{
  // if(iTime(Symbol(),0,0) == prevtime) return(0);    //ждем нового бара
 //  prevtime = iTime(Symbol(),0,0);                   //если появился новый бар , включаемся    
   Print (" Старт после нового бара"); 
...