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[]){ ...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено) }
A primeira coisa que eu faria é adicionar #propriedade rigorosa, corrigir qualquer erro/aviso (se houver) e substituir init() e start() por OnInit() e OnTick().
Alexey Kozitsyn: A primeira coisa que eu faria é adicionar #propriedade rigorosa, corrigir qualquer erro/aviso (se houver) e substituir init() e start() por OnInit() e OnTick().
Alexey Kozitsyn: Tente escrever em uma "nova" linguagem e haverá menos erros difíceis de encontrar.
Encontrei tal construção no tutorial da MQL4:
//-------------------------------------------------------------------- start() // Специальная функция start() { while(!IsStopped()) // До тех пор, пока пользователь.. { // ..не прекратит исполнение программы RefreshRates(); // Обновление данных //......................Здесь указывается основной код программы Sleep(5); // Небольшая пауза } return; // Управление возвращается терминалу } //--------------------------------------------------------------------
Podemos usar a "nova" linguagem também, ou existe uma solução mais moderna?
Maksym Mudrakov: Encontrei tal construção no tutorial da MQL4:
//-------------------------------------------------------------------- start() // Специальная функция start() { while(!IsStopped()) // До тех пор, пока пользователь.. { // ..не прекратит исполнение программы RefreshRates(); // Обновление данных //......................Здесь указывается основной код программы Sleep(5); // Небольшая пауза } return; // Управление возвращается терминалу } //--------------------------------------------------------------------
pode ser aplicado também na "nova" linguagem, ou existe uma solução mais moderna?
Alexey Kozitsyn: Um... então depende do que está acontecendo no código principal. Se o envio de um pedido for ruim!
Sim, o envio de um pedido acontece de fato. Só não está claro para mim se as cotações devem ser atualizadas à força, caso o Expert Advisor esteja correndo na janela de um instrumento comercial, mas envia uma ordem para outro instrumento comercial. Se, por exemplo, as cotações para EURUSD não forem atualizadas, e ao mesmo tempo, as novas cotações para GBPUSD forem recebidas. E se meu Expert Advisor for executado em EURUSD, e eu não fizerRefreshRates(), então o Expert Advisor não enviará um pedido em GBPUSD, até que as cotações em EURUSD sejam atualizadas?
Maksym Mudrakov: Sim, o envio do pedido é feito. Não está claro para mim se as citações devem ser atualizadas obrigatoriamente no caso de a EA ser lançada na janela de um símbolo, mas uma ordem é enviada para outro símbolo. Se, por exemplo, as cotações para EURUSD não forem atualizadas, e ao mesmo tempo, as novas cotações para GBPUSD forem recebidas. E se meu Expert Advisor for executado em EURUSD, e eu não fizerRefreshRates(), então o Expert Advisor não enviará um pedido em GBPUSD, até que as cotações em EURUSD sejam atualizadas?
Há várias maneiras de obter os preços atuais:
1. Para qualquer símbolo: se você quiser obter preços atuais garantidos, ligue para SymbolInfoDouble() com os identificadores corretos antes de usá-los.
2. Para o símbolo atual, você também pode obter os preços atuais através das variáveis pré-definidas Bid and Ask. Estes podem ficar desatualizados, portanto, se a função OnTick() estiver funcionando por um longo tempo, você deve atualizá-los usando RefreshRates().
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Posso ver o 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[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
A primeira coisa que eu faria é adicionar #propriedade rigorosa, corrigir qualquer erro/aviso (se houver) e substituir init() e start() por OnInit() e OnTick().
Recebeu 5 erros e 83 avisos ))))
Obrigado!
5 erros e 83 avisos surgiram ))))
Tente escrever em uma "nova" linguagem e haverá menos erros difíceis de encontrar.
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
Encontrei tal construção no tutorial da MQL4:
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
Está no roteiro ou está no especialista?
no examinador.
Um... então depende do que está acontecendo no código principal. Se o envio de um pedido for ruim!
Sim, o envio do pedido é feito. Não está claro para mim se as citações devem ser atualizadas obrigatoriamente no caso de a EA ser lançada na janela de um símbolo, mas uma ordem é enviada para outro símbolo. Se, por exemplo, as cotações para EURUSD não forem atualizadas, e ao mesmo tempo, as novas cotações para GBPUSD forem recebidas. E se meu Expert Advisor for executado em EURUSD, e eu não fizerRefreshRates(), então o Expert Advisor não enviará um pedido em GBPUSD, até que as cotações em EURUSD sejam atualizadas?
Há várias maneiras de obter os preços atuais:
1. Para qualquer símbolo: se você quiser obter preços atuais garantidos, ligue para SymbolInfoDouble() com os identificadores corretos antes de usá-los.
2. Para o símbolo atual, você também pode obter os preços atuais através das variáveis pré-definidas Bid and Ask. Estes podem ficar desatualizados, portanto, se a função OnTick() estiver funcionando por um longo tempo, você deve atualizá-los usando RefreshRates().