//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 기능 |
//+------------------------------------------------------------------+
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);
}
|