//+------------------------------------------------------------------+ //| 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); } |