Discussione sull’articolo "Creazione di un Expert Advisor, che fa Trading su una Serie di Strumenti" - pagina 2

 
gisip:
Tutto funziona bene su MQL4 senza timer.
La tua affermazione non è del tutto accettabile, stiamo parlando di test multicurrency. Non c'è un timer in MT4, ma non c'è nemmeno un tester multicurrency. Quando si lavora su MT4, l'Expert Advisor dipende in ogni caso dall'intensità del flusso di quotazioni dello strumento su cui lavora. Immaginate una situazione del genere: supponiamo di avere un Expert Advisor multicurrency su EURUSD, e se in un certo lasso di tempo non ci sono tick su questa coppia, come farete a seguire l'arrivo di nuovi tick su altri strumenti?
 
Interesting:

Beh, non esiste in MQL4, anche le strutture e le classi non esistono lì, proponete di abbandonarle qui?


IMHO

Usare o non usare la libreria standard è una questione di gusti di ognuno (nel peggiore dei casi, si può usare solo il proprio codice), ma rinunciare a tutti i vantaggi solo perché non sono disponibili in MT4 non è molto ragionevole.....

Non ho scritto affatto di questo.

Ho scritto che MQL5 è difettoso e produce dati errati in alcune combinazioni di strumenti.

Ad esempio: se si sovrappone EURJPY o EURGBP al grafico di EURUSD, tutto va bene.

Ma se si sovrappone EURCAD, i dati sul grafico sono errati, mentre in MQL4 non c'era questo errore.

[Eliminato]  
gisip:

Non ho scritto affatto di questo.

Ho scritto che MQL5 si blocca e produce dati errati con determinate combinazioni di strumenti.

Ad esempio: se si sovrappone EURJPY o EURGBP al grafico EURUSD, tutto è normale.

Ma se si sovrappone EURCAD, i dati sul grafico presentano un errore, mentre in MQL4 questo non accadeva, non c'era alcun errore.

L'avevo capito, ma Kos ha ragione (soprattutto il bel post del 2010.07.02 14:57). Non riesco a capire perché tutti gli sviluppatori (compreso MQ ) continuino a ignorare il timer. Se teniamo conto del fatto che non ci sono esempi ufficiali di trader multicurrency, allora tutto è chiaro con MQ in questa materia, ma perché altri si ostinino a ignorare OnTimer() per me personalmente rimane un GRANDE mistero....
 
gisip:

Non ho scritto affatto di questo.

Ho scritto che MQL5 si blocca e produce dati errati con determinate combinazioni di strumenti.

Ad esempio: se si sovrappone EURJPY o EURGBP al grafico EURUSD, tutto è normale.

Ma se si sovrappone EURCAD, i dati sul grafico presentano un errore, mentre in MQL4 questo non accadeva, non c'era alcun errore.

Si prega di fornire un esempio con un errore.
 
Renat:
Vi prego di fornirmi un esempio con un errore.
Beh, non scriverò tutto qui, mi sembra abbastanza chiaro.
//--------- Opzione con MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
SetIndexBuffer(0,Buffer); // Assegna l'array al buffer
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Stile di linea

while(i >= 0){//-- Muoversi da destra a sinistra (cioè dalla barra più alta a quella 0 che si sta ancora formando) --
Buffer[i] = (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- prossima barra
}/next (while)



//----------- Ora quasi la stessa variante in MQL5 --------
#property indicator_separate_window // L'indicatore. viene disegnato in una finestra separata
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int handle1;

copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);

//--Ora lanciamo su EURUSD.

//--Non importa su quale strumento posizioniamo l'indicatore, il grafico non deve cambiare.
 
Si prega di incollare il codice correttamente, in modo da renderlo più comprensibile.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Rosh:
Si prega di inserire il codice correttamente, rende più facile la comprensione.

//--------- Opzione con MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
int init()
{
SetIndexBuffer(0,Buffer); // Assegna l'array al buffer
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Stile linea
}
int start()
{
while(i >= 0){
Buffer[i] = (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- prossima barra
}//next (while)
}


//----------- Ora quasi la stessa variante in MQL5 --------
#property indicator_separate_window // L'indicatore. viene disegnato in una finestra separata
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int OnInit()
{
{ IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
}

int OnCalculate(....)
{
copied=CopyClose(InstrumentName,0,0,0,CountBars,Buffer);
}
//--Ora lo lanciamo su EURUSD.

//--Non importa su quale strumento posizioniamo l'indicatore, il grafico non dovrebbe cambiare.
[Eliminato]  
Gisip, dovresti usare l'inserimento del codice usando il pulsante "SRC"...
 

Si prega di creare un esempio riproducibile. Cioè, è necessario un codice già pronto che si possa compilare, inserire in un grafico e ottenere i risultati.

Senza questo, pochi capiranno di cosa stiamo parlando.
 

Aiuterò coloro che sono privi di coscienza.

//----------- Ora quasi la stessa variante in MQL5 --------
#property  indicator_separate_window    // L'indicatore viene disegnato in una finestra separata
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[]; 
int OnInit() 
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
return(0);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
int copied;
int CountBars=rates_total;
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
  return(copied);
}
//--Ora passiamo a EURUSD.

//-Non importa su quale strumento posizioniamo l'indicatore, il grafico non deve cambiare.

Idealmente non dovrebbe, ma io ce l'ho che stride con gli algoritmi è apparso solo su 1 TF sugli altri ha mostrato categoricamente il vuoto .....

anche dopo un'ora di test.....

e tentativi di caricare la cronologia