[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 471

 
Axmed писал(а) >>


CSV - Valores separados por comas. El "," es el delimitador por defecto. La separación con ";" se utiliza con menos frecuencia, y no estoy seguro de que incluso se admita en MQL4.


int FileOpen( string filename, int mode, int delimiter=';')
Abre el archivo para la entrada y/o salida. Devuelve el descriptor del archivo abierto o -1 en caso de fallo. Llame a GetLastError() para obtener más información sobre el error.
Nota: los archivos sólo pueden abrirse en la carpetaterminal_directory\experts\files (terminal_directory\tester\files en caso de pruebas de expertos) o en sus subcarpetas.
Los modos FILE_BIN y FILE_CSV no pueden utilizarse simultáneamente.
Si FILE_WRITE no se combina con FILE_READ, se abrirá un archivo de longitud cero. Incluso si había datos en el archivo antes de que se abriera, se destruirán. Si hay que añadir datos a un archivo existente, hay que abrirlo con la combinación FILE_READ | FILE_WRITE.
Si FILE_READ no se combina con FILE_WRITE, el archivo sólo se abrirá si ya existe. Si el archivo no existe, se puede crear con FILE_WRITE.
No se pueden abrir más de 32 archivos al mismo tiempo dentro del mismo ejecutable. Los descriptores de los archivos abiertos en un módulo no pueden ser transferidos a otros módulos (bibliotecas).
Parámetros:
nombre de archivo - Filename - nombre del archivo.
modo - Método de apertura. Puede ser un solo valor o una combinación de valores: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE.
delimitador - Un carácter delimitador para los archivos csv. Por defecto se aplica el carácter ';'.
Ejemplo:
 int handle; handle=FileOpen("mis_datos.csv",FILE_CSV|FILE_READ,';'); if(handle<1) { Print("Archivo mis_datos.dat no detectado, último error ", GetLastError()); return(false); }

También deberías leer la ayuda.
 
Axmed >>:


Что конкретно Вам не понравилось в том что я пишу?..

Todo está mal.
El ";" es el delimitador por defecto.
FileReadString - no lee toda la cadena, sino desde la posición actual del puntero en el archivo hasta el siguiente separador.

 

Hola, ¿podríais decirme cómo llamar a la variable requerida desde un indicador personalizado? He probado con GlobalVariableSet() / GlobalVariableGet() - funciona desde otro EA, pero no desde un indicador. Gracias de antemano.

 
kara100 писал(а) >>

Hola, podríais decirme cómo llamar a la variable requerida desde un indicador personalizado, he probado con GlobalVariableSet() / GlobalVariableGet() - funciona desde otro EA, pero no desde un indicador. Gracias de antemano...


¿Qué variable quiere obtener y de qué indicador?
 

Precio de +MP (línea 228) - Necesito valores de nivel (de precio)

Archivos adjuntos:
ymp_1.mq4  6 kb
 
kara100 писал(а) >>

Precio de +MP (línea 228) - Necesito valores (precio) niveles


intente mover la variable prise al nivel global, y coloque la cadena GlobalVariableSet("55", prise); al principio de la función start() y desde el otro programa obtenga double x=GlobalVariableGet("55");

 
Techno писал(а) >>


intente mover la variable prise a nivel global, y coloque la cadena GlobalVariableSet("55", prise); al principio de la función start() y desde el otro programa obtenga double x=GlobalVariableGet("55");


Lo he probado... Escribe, que la variable global no está descrita, es decir, las variables globales no salen del indicador... >> Lo intentaré de nuevo.

 
kara100 писал(а) >>


Creo que lo probé... dice que no se describe ninguna variable global, es decir, no salen variables globales del indicador... >> Lo intentaré de nuevo.


Una vez que arregles el código, publícalo aquí.
 
Amigos, muchas gracias por responder. aclaración, ¿cómo convertir una cadena en doble?
StrToDouble() no funciona :(

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
if(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..
Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера
else // При любой другой ошибке..
Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
PlaySound("Bzrrr.wav"); // Звуковое сопровождение
return; // Выход из start()
}
k=0;
while(FileIsEnding(Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла
//--------------------------------------------------------- 5 --
ss1[k] = (FileReadString(Handle));
x1[k]=StrToDouble(ss1[k]);//
ss2[k] = (FileReadString(Handle));
rr1[k] = (FileReadString(Handle));
rr2[k] = (FileReadString(Handle));
k=k+1;
if(FileIsEnding(Handle)==true) // Файловый указатель в конце
break; // Выход из чтения и рисования
}
FileClose( Handle ); // Закрываем файл
PlaySound("bulk.wav"); // Звуковое сопровождение
//-----------------------------------------------
Alert(" ", ss1[0], " ", ss2[0], " ", rr1[0], " ", rr2[0], " x1== ", x1[0] );

Las matrices de cadenas se llenan desde el archivo normalmente. Pero, necesito convertir estas cadenas en dobles.
Yo lo hago:
x1[k]=StrToDouble(ss1[k]);
pero, cuando se envía a Alert, x1[0] = 0, lo cual es incorrecto. es decir, hay un error en la conversión de tipo en alguna parte...

¿Cómo arreglar esta situación?
 
Morzh09 >>:

Друзья, спасибо большое, что откликнулись. уточнение, как преобразовать string в double?
StrToDouble() - не прокатывает :(
Строковые массивы заполняются из файла нормально. Но, необходимо преобразовать эти строки в double.
делаю это:
x1[k]=StrToDouble(ss1[k]);
но, при выводе в Алерте, x1[0] = 0, что неправильно. то есть, где-то тут ошибка в преобразовании типов...

Как такую ситуацию исправить?

¿Podría publicar el script completo? Me refiero a las declaraciones de matrices de variables, etc.

Razón de la queja: