//+------------------------------------------------------------------+ //| 스크립트 프로그램 시작 기능 | //+------------------------------------------------------------------+ void OnStart() { //--- 시세를 저장할 배열 double source_array[][8]; double dest_array[][8]; MqlRates rates[]; //--- 현재 시간 프레임에 대한 최근 20개의 초 데이터를 얻습니다. int copied=CopyRates(NULL,0,0,20,rates); if(copied<=0) { PrintFormat("CopyRates(%s,0,0,20,rates) failed, error=%d", Symbol(),GetLastError()); return; } //--- 복사된 데이터의 양에 대한 배열 크기 설정 ArrayResize(source_array,copied); //--- rate_array_1[] 배열을 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; } //--- source_array[] 및 dest_array[] 간에 데이터 스왑 if(!ArraySwap(source_array,dest_array)) { PrintFormat("ArraySwap(source_array,rate_array_2) failed, error code=%d",GetLastError()); return; } //--- 스왑 후 원본 배열이 0이 되었는지 확인 PrintFormat("ArraySwap() done: ArraySize(source_array)=%d",ArraySize(source_array)); //--- dest_array[] 대상 배열의 데이터 표시 ArrayPrint(dest_array); } |