Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 112
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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().