int start(){ Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]); //при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению ... return(0); }
void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){ ...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено) }
int start(){ Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]); //при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению ... return(0); }
void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){ ...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено) }
Lo primero que haría es añadir #property strict, corregir los errores/advertencias (si los hay) y sustituir init() y start() por OnInit() y OnTick().
Alexey Kozitsyn: Lo primero que haría es añadir #property strict, corregir los errores/advertencias (si los hay) y sustituir init() y start() por OnInit() y OnTick().
Alexey Kozitsyn: Intente escribir en un idioma "nuevo" y habrá menos errores difíciles de encontrar.
Me encontré con una construcción de este tipo en el tutorial de MQL4:
//-------------------------------------------------------------------- start() // Специальная функция start() { while(!IsStopped()) // До тех пор, пока пользователь.. { // ..не прекратит исполнение программы RefreshRates(); // Обновление данных //......................Здесь указывается основной код программы Sleep(5); // Небольшая пауза } return; // Управление возвращается терминалу } //--------------------------------------------------------------------
¿Podemos utilizar también la "nueva" lengua, o hay una solución más moderna?
Maksym Mudrakov: Me encontré con una construcción de este tipo en el tutorial de MQL4:
//-------------------------------------------------------------------- start() // Специальная функция start() { while(!IsStopped()) // До тех пор, пока пользователь.. { // ..не прекратит исполнение программы RefreshRates(); // Обновление данных //......................Здесь указывается основной код программы Sleep(5); // Небольшая пауза } return; // Управление возвращается терминалу } //--------------------------------------------------------------------
¿se puede aplicar también en la "nueva" lengua, o hay una solución más moderna?
Alexey Kozitsyn: Um... entonces depende de lo que ocurra en el código principal. Si el envío de un pedido es malo
Sí, el envío de un pedido se produce. No me queda claro si las cotizaciones deben actualizarse forzosamente, en caso de que el Asesor Experto esté ejecutando en la ventana de un instrumento comercial, pero envíe una orden para otro instrumento comercial. Si, por ejemplo, las cotizaciones del EURUSD no se actualizan y, al mismo tiempo, se reciben las nuevas cotizaciones del GBPUSD. ¿Y si mi Asesor Experto se ejecuta en EURUSD, y no realizoRefreshRates(), entonces el Asesor Experto no enviará una orden en GBPUSD, hasta que se actualicen las cotizaciones en EURUSD?
Maksym Mudrakov: Sí, el pedido se está enviando. No me queda claro si las cotizaciones deben actualizarse obligatoriamente en caso de que el EA se lance en la ventana de un símbolo pero se envíe una orden para otro símbolo. Si, por ejemplo, las cotizaciones del EURUSD no se actualizan y, al mismo tiempo, se reciben las nuevas cotizaciones del GBPUSD. ¿Y si mi Asesor Experto se ejecuta en EURUSD, y no realizoRefreshRates(), entonces el Asesor Experto no enviará una orden en GBPUSD, hasta que se actualicen las cotizaciones en EURUSD?
Hay varias formas de obtener los precios actuales:
1. Para cualquier símbolo: si quiere obtener precios actuales garantizados, llame a SymbolInfoDouble() con los identificadores correctos antes de utilizarlos.
2. Para el símbolo actual, también puede obtener los precios actuales a través de las variables predefinidas Bid y Ask. Estos pueden quedar desfasados, por lo que si la función OnTick() se ejecuta durante mucho tiempo, debería refrescarlos utilizando RefreshRates().
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
¿Puedo ver el código?
extern string SYMBOLS ="EURUSD,GBPUSD,EURGBP,EURJPY,USDJPY";
string symbolsArray[1];
...
void init(){
StringToArray(SYMBOLS, symbolsArray);
...
}
int start(){
Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]);
//при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению
...
return(0);
}
void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
extern string SYMBOLS ="EURUSD,GBPUSD,EURGBP,EURJPY,USDJPY";
string symbolsArray[1];
...
void init(){
StringToArray(SYMBOLS, symbolsArray);
...
}
int start(){
Comment(symbolsArray[0]+"|"+symbolsArray[1]+"|"+symbolsArray[2]+"|"+symbolsArray[3]+"|"+symbolsArray[4]);
//при запуске советника комментарий выводит правильную информацию, но через время один из элементов массива становится равным совсем другому значению
...
return(0);
}
void StringToArray (string stringOfSymbols, string &arrayOfSymbols[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
Lo primero que haría es añadir #property strict, corregir los errores/advertencias (si los hay) y sustituir init() y start() por OnInit() y OnTick().
Tengo 5 errores y 83 advertencias ))))
Gracias.
5 errores y 83 advertencias salieron de ))))
Intente escribir en un idioma "nuevo" y habrá menos errores difíciles de encontrar.
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
Me encontré con una construcción de este tipo en el tutorial de MQL4:
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
¿Está en el guión o en el experto?
en el examinador.
Um... entonces depende de lo que ocurra en el código principal. Si el envío de un pedido es malo
Sí, el pedido se está enviando. No me queda claro si las cotizaciones deben actualizarse obligatoriamente en caso de que el EA se lance en la ventana de un símbolo pero se envíe una orden para otro símbolo. Si, por ejemplo, las cotizaciones del EURUSD no se actualizan y, al mismo tiempo, se reciben las nuevas cotizaciones del GBPUSD. ¿Y si mi Asesor Experto se ejecuta en EURUSD, y no realizoRefreshRates(), entonces el Asesor Experto no enviará una orden en GBPUSD, hasta que se actualicen las cotizaciones en EURUSD?
Hay varias formas de obtener los precios actuales:
1. Para cualquier símbolo: si quiere obtener precios actuales garantizados, llame a SymbolInfoDouble() con los identificadores correctos antes de utilizarlos.
2. Para el símbolo actual, también puede obtener los precios actuales a través de las variables predefinidas Bid y Ask. Estos pueden quedar desfasados, por lo que si la función OnTick() se ejecuta durante mucho tiempo, debería refrescarlos utilizando RefreshRates().