Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 112
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Posso vedere il codice?
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[]){
...//функция заносит в массив названия торговых инструментов, здесь ошибок нету (проверено)
}
La prima cosa che farei è aggiungere #property strict, correggere qualsiasi errore/avvertimento (se c'è) e sostituire init() e start() con OnInit() e OnTick().
Ho 5 errori e 83 avvertimenti ))))
Grazie!
Sono usciti 5 errori e 83 avvertimenti ))))
Provate a scrivere in una lingua "nuova" e ci saranno meno errori difficili da trovare.
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
Mi sono imbattuto in una costruzione simile nel tutorial di MQL4:
start() // Специальная функция start()
{
while(!IsStopped()) // До тех пор, пока пользователь..
{ // ..не прекратит исполнение программы
RefreshRates(); // Обновление данных
//......................Здесь указывается основной код программы
Sleep(5); // Небольшая пауза
}
return; // Управление возвращается терминалу
}
//--------------------------------------------------------------------
È nella sceneggiatura o nell'esperto?
nell'esaminatore.
Ehm... allora dipende da cosa sta succedendo nel codice principale. Se inviare un ordine è male!
Sì, l'ordine è stato inviato. Non mi è chiaro se le quotazioni devono essere aggiornate obbligatoriamente nel caso in cui l'EA venga lanciato nella finestra di un simbolo ma venga inviato un ordine per un altro simbolo. Se, per esempio, le quotazioni per EURUSD non vengono aggiornate, e allo stesso tempo si ricevono le nuove quotazioni per GBPUSD. E se il mio Expert Advisor viene eseguito su EURUSD, e non eseguoRefreshRates(), allora l'Expert Advisor non invierà un ordine su GBPUSD, finché le quotazioni su EURUSD non saranno aggiornate?
Ci sono diversi modi per ottenere i prezzi attuali:
1. Per qualsiasi simbolo: se volete ottenere prezzi correnti garantiti, chiamate SymbolInfoDouble() con gli identificatori corretti prima di usarli.
2. Per il simbolo corrente, puoi anche ottenere i prezzi attuali attraverso le variabili predefinite Bid e Ask. Questi possono diventare obsoleti, quindi se la funzione OnTick() è in esecuzione da molto tempo, dovreste aggiornarli usando RefreshRates().