#include #include #include #include #define risk_free 0.038 struct{ int data; float preco; }typedef forma; void Arquivo(FILE *arq, FILE *saida) { //leitura do arquivo forma geral[321]; int contador = 0, i, quant_valores; char ch; while((ch = fgetc(arq)) != EOF){//varre caracter por caracter ate o final do arquivo if (ch != '\n'){//quando encontra uma quebra de linha if (contador == 0){ fscanf(arq, "%d", &quant_valores); contador++; } if (contador > 0){ for(i=0; i<321; i++){ fscanf(arq, "%d %f\n", &geral[i].data, &geral[i].preco); contador++; } } } } //retorno diario float retorno[320]; for(i=0; i<320; i++){ retorno[i] = (geral[i+1].preco - geral[i].preco)/geral[i].preco; retorno[i] = (retorno[i])*100; } //encontrando media de retornos float media_retorno = 0; for(i=0; i<319; i++){ media_retorno += retorno[i]; } media_retorno = media_retorno/320; media_retorno = media_retorno*100; //calculando o maior e o menor retorno float maior_retorno = retorno[0], menor_retorno = retorno[0]; for(i=0; i<320; i++){ if (retorno[i] > maior_retorno) maior_retorno = retorno[i]; if (retorno[i] < menor_retorno) menor_retorno = retorno[i]; } int DataMaior, DataMenor; for(i=0; i<320; i++){ if (retorno[i] == maior_retorno) DataMaior = geral[i+1].data; if (retorno[i] == menor_retorno) DataMenor = geral[i+1].data; } //retorno total float Rtotal; Rtotal = retorno[319]/retorno[0]; //desvio padrao float desvio, variancia = 0; for(i=1; i<319; i++){ variancia += pow((retorno[i] - media_retorno),2); } variancia = variancia/320; desvio = sqrt(variancia); //Sharpe ratio float sharpe; sharpe = (media_retorno - risk_free)/desvio; //transformando as datas necessarias para o formato dd/mm/yyyy // INCOMPLETO char Data_Menor[8], Data_Maior[8]; sprintf(Data_Menor, "%d", DataMenor); sprintf(Data_Maior, "%d", DataMaior); //Imprimindo na tabela fprintf(saida, "\t%c%c/%c%c/2%c%c%c\t%c%c/%c%c/%c%c%c%c\t%.2f%%\t %.2f%%\t%.2f%%\t%.2f\t% .2f\t %.2f \n", Data_Menor[6], Data_Menor[7], Data_Menor[4], Data_Menor[5], Data_Menor[1], Data_Menor[2], Data_Menor[3], Data_Maior[6], Data_Maior[7], Data_Maior[4], Data_Maior[5], Data_Maior[0], Data_Maior[1], Data_Maior[2], Data_Maior[3], menor_retorno, maior_retorno, media_retorno, desvio, Rtotal, sharpe); } int main(int argc, char *arg[]) { system("cls"); //Abrindo o arquivo de saida FILE *ArqSAIDA; ArqSAIDA = fopen("SAIDA.txt", "w"); if (ArqSAIDA == NULL){ printf("Erro na criacao do arquivo SAIDA!\n"); system("pause"); exit(1); } //foramtando a tabela fprintf(ArqSAIDA, "\tDataMenor\tDataMaior\tMenor\t Maior\t Media\tDesvio\tRTotal\tSharpe\n"); int i; if (argc == 1) { printf("Nao foi digitado nenhum codigo!\n"); system("pause"); exit(1); } for (i=1; i