//+------------------------------------------------------------------+
//| Fonction de démarrage du programme |
//+------------------------------------------------------------------+
void OnStart()
{
//--- tableaux pour stocker les cotations
double source_array[][8];
double dest_array[][8];
MqlRates rates[];
//--- récupère les données des 20 dernières bougies de la période courante
int copied=CopyRates(NULL,0,0,20,rates);
if(copied<=0)
{
PrintFormat("Echec de CopyRates(%s,0,0,20,rates), erreur=%d",
Symbol(),GetLastError());
return;
}
//--- définit la taille du tableau pour correspondre à la quantité de données copiées
ArrayResize(source_array,copied);
//--- remplit le tableau rate_array_1[] avec les données de rates[]
for(int i=0;i<copied;i++)
{
source_array[i][0]=(double)rates[i].time;
source_array[i][1]=rates[i].open;
source_array[i][2]=rates[i].high;
source_array[i][3]=rates[i].low;
source_array[i][4]=rates[i].close;
source_array[i][5]=(double)rates[i].tick_volume;
source_array[i][6]=(double)rates[i].spread;
source_array[i][7]=(double)rates[i].real_volume;
}
//--- intervertit les données entre les tableaux source_array[] et dest_array[]
if(!ArraySwap(source_array,dest_array))
{
PrintFormat("Echec de ArraySwap(source_array,rate_array_2), code d'erreur=%d",GetLastError());
return;
}
//--- vérifie que le tableau source est à zéro après l'interversion
PrintFormat("ArraySwap() effectué : ArraySize(source_array)=%d",ArraySize(source_array));
//--- affiche les données du tableau destination dest_array[]
ArrayPrint(dest_array);
}
|