<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Fiz uns testes e realmente ficou muito mais rápido. Apenas três
    problemas apareceram, todos com a mesma provável resolução.<br>
    No loop 2:<br>
    O primeiro negócio não é classificado, e os próximos, digamos, 6,
    mantém o mesmo preço, logo, todos estes deveriam ser não
    classificados. O código apenas desclassifica o subsequente. Para que
    estivesse ok, teria que ser repetido.<br>
    No loop 3:<br>
    Acontece algo semelhante. Se havia um Zero.DOWNTICK, e o próximo
    negócio também não mudou este tb deveria ser ZERO.DOWNTICK, mas o
    código está mantendo "C".<br>
    <br>
    Grato,<br>
    <br>
    Luciano.<br>
    <br>
    <br>
    Em 6/20/2011 5:34 PM, Benilton Carvalho escreveu:
    <blockquote
      cite="mid:BANLkTimbM7VDoYLgvNOzA0X5VMEk_KGnCw@mail.gmail.com"
      type="cite">
      <div>abaixo, nao testado, deve estar bem proximo do q vc precisa.
        b</div>
      <div><br>
      </div>
      loop 1:
      <div><br>
      </div>
      <div>y[,4] = ifelse(y[,2] == 10, 'NC', 'C')</div>
      <div><br>
      </div>
      <div>loop 2:</div>
      <div><br>
      </div>
      <div>n = nrow(y)</div>
      <div>y[-1, 4] = ifelse(diff(y[,3]) == 0 & y[-n, 4] == 'NC',
        'NC', y[-1, 4])<br>
        <br>
      </div>
      <div>loop 3:</div>
      <div><br>
      </div>
      <div>dy = diff(y[,3])</div>
      <div>y[-1, 4] = ifelse(y[-1, 4] == 'C' & dy > 0,
        'DOWNTICK', y[-1, 4])</div>
      <div>y[-1, 4] = ifelse(y[-1, 4] == 'C' & dy < 0, 'UPTICK',
        y[-1, 4])</div>
      <div>y[-1, 4] = ifelse(y[-1, 4] == 'C' & dy == 0 & y[-n,
        4] %in% c('UPTICK', 'ZERO.UPTICK'), 'ZERO.UPTICK', y[-1, 4]) </div>
      <div>
        <meta charset="utf-8">
        <div>y[-1, 4] = ifelse(y[-1, 4] == 'C' & dy == 0 & y[-n,
          4] %in% c('DOWNTICK', 'ZERO.DOWNTICK'), 'ZERO.DOWNTICK', y[-1,
          4]) </div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div class="gmail_quote">2011/6/20 Luciano Ramos Gonçalves <span
            dir="ltr"><<a moz-do-not-send="true"
              href="mailto:lrg.financas@gmail.com">lrg.financas@gmail.com</a>></span><br>
          <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
            0.8ex; border-left: 1px solid rgb(204, 204, 204);
            padding-left: 1ex;">
            <div text="#000000" bgcolor="#ffffff"> <tt><span
                  style="font-size: 10pt; line-height: 115%;">Colaboradores

                  do grupo, realizei um teste de financas em R,
                  conhecido como TICKTEST, porém meu código ficou muito
                  lento. Talvez alguém possa ajudar a torná-lo mais
                  ágil. <br>
                  <br>
                  Grato,<br>
                  Luciano<br>
                  <br>
                  Resumidamente:<br>
                  1 - Prentende-se classificar mudanças de preço em uma
                  ação.<br>
                  2 - O primeiro negócio do dia não é classificado. Os
                  negócios subsequentes em que haja estabilidade no
                  preço tb não são classificados.<br>
                  3 - Classifica-se as restantes conforme o movimento do
                  preço. Se sobe, UPTICK. Se desce, DOWNTICK. Se é
                  estável e a última variação foi positiva, ZERO.UPTICK.
                </span></tt><tt><span style="font-size: 10pt;
                  line-height: 115%;">Se é estável e a última variação
                  foi positiva, ZERO.DOWNTICK.</span></tt><br>
              <tt><span style="font-size: 10pt; line-height: 115%;"><br>
                  Um exemplo dos dados:<br>
                  <br>
                </span></tt>
              <table width="357" border="0" cellpadding="0"
                cellspacing="0" height="232">
                <colgroup><col style="width: 59pt;" width="78" span="2">
                  <col style="width: 57pt;" width="76"> <col
                    style="width: 94pt;" width="125"> </colgroup><tbody>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt; width: 59pt;"
                      width="78" align="center" height="20">Data</td>
                    <td style="width: 59pt;" width="78" align="center">Operação</td>
                    <td style="width: 57pt;" width="76" align="center">Preço</td>
                    <td style="width: 94pt;" width="125" align="center">Classificação</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/1/2011</td>
                    <td align="center">10</td>
                    <td align="center">$10.00</td>
                    <td align="center">NC</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/1/2011</td>
                    <td align="center">20</td>
                    <td align="center">$9.90</td>
                    <td align="center">DOWNTICK</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/1/2011</td>
                    <td align="center">30</td>
                    <td align="center">$9.90</td>
                    <td align="center">ZERO.DOWNTICK</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/1/2011</td>
                    <td align="center">40</td>
                    <td align="center">$10.10</td>
                    <td align="center">UPTICK</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/1/2011</td>
                    <td align="center">50</td>
                    <td align="center">$10.20</td>
                    <td align="center">UPTICK</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/2/2011</td>
                    <td align="center">10</td>
                    <td align="center">$9.80</td>
                    <td align="center">NC</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/2/2011</td>
                    <td align="center">20</td>
                    <td align="center">$9.80</td>
                    <td align="center">NC</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/2/2011</td>
                    <td align="center">30</td>
                    <td align="center">$9.90</td>
                    <td align="center">UPTICK</td>
                  </tr>
                  <tr style="min-height: 15pt;" height="20">
                    <td style="min-height: 15pt;" align="center"
                      height="20">1/2/2011</td>
                    <td align="center">30</td>
                    <td align="center">$9.90</td>
                    <td align="center">ZERO.UPTICK</td>
                  </tr>
                </tbody>
              </table>
              <tt><span style="font-size: 10pt; line-height: 115%;"><br>
                  <u><b>O CÓDIGO EM SI:</b></u><br>
                  <b><big>#</big></b> Abre o arquivo de dados, cria um
                  novo objeto "y" com uma coluna vazia.<br>
                  x <-
                  read.table("dados.txt",sep=";",header=F,skip=1)</span></tt><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><br>
                <tt><span>y <- cbind(x,(rep(NA,nrow(x))))</span></tt><br>
                <tt><span></span></tt><tt><span><br>
                    <big><b># 1º Loop:</b></big> Se a operação foi nº 10
                    não classifica, o resto classifica.<br>
                  </span></tt> <tt><span></span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span>z <- 1:nrow(x)</span></tt></span><br>
              <span style="font-size: 10pt; line-height: 115%;
                font-family: "Courier New";"><tt><span>for (t
                    in z)</span></tt><br>
                <tt><span>{</span></tt><br>
                <tt><span>    if (y[t,2]==10)</span></tt><br>
                <tt><span>        y[t,4]<-"NC"</span></tt><br>
                <tt><span>    else y[t,4] <-"C"</span></tt><br>
                <tt><span>}<br>
                    <br>
                    <big><b># 2º Loop:</b></big> Se a operação anterior
                    não foi classificada e o preço não mudou na atual,
                    desclassifica esta também.<br>
                  </span></tt></span><span style="font-size: 10pt;
                line-height: 115%; font-family: "Courier
                New";"><tt><span>w <- 1:(nrow(x)-1)</span></tt></span><br>
              <span style="font-size: 10pt; line-height: 115%;
                font-family: "Courier New";"><tt><span></span></tt>
                <tt><span>for (i in w)</span></tt><br>
                <tt><span>{</span></tt><br>
                <tt><span>    if (y[i,4]=="NC" & y[i,3]==y[i+1,3])</span></tt><br>
                <tt><span>        y[i+1,4]<-"NC"</span></tt><br>
                <tt><span>}<br>
                    <big><b># 3º Loop:</b></big> divide as operações
                    classificadas em quatro classes:<br>
                  </span></tt></span><span style="font-size: 10pt;
                line-height: 115%; font-family: "Courier
                New";"><tt><span>for
                    (i in w)</span></tt><br>
                <tt><span>{    </span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span><br>
                  </span></tt></span><span style="font-size: 10pt;
                line-height: 115%; font-family: "Courier
                New";"><tt><span><b><big>#</big></b></span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span> Se o preço
                    diminuiu, DOWNTICK;</span></tt></span><br>
              <span style="font-size: 10pt; line-height: 115%;
                font-family: "Courier New";"><tt><span></span></tt>
                <tt><span>    if (y[i+1,4]=="C" &
                    y[i,3]>y[i+1,3])</span></tt><br>
                <tt><span>        y[i+1,4]<-"DOWNTICK"<br>
                  </span></tt></span><span style="font-size: 10pt;
                line-height: 115%; font-family: "Courier
                New";"><tt><span><b><big>#</big></b></span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span> Se o preço
                    aumentou, UPTICK;</span></tt></span><br>
              <span style="font-size: 10pt; line-height: 115%;
                font-family: "Courier New";"><tt><span></span></tt>
                <tt><span>    if (y[i+1,4]=="C" &
                    y[i,3]<y[i+1,3])</span></tt><br>
                <tt><span>        y[i+1,4]<-"UPTICK"<br>
                  </span></tt></span><span style="font-size: 10pt;
                line-height: 115%; font-family: "Courier
                New";"><tt><span><b><big>#</big></b> Se o preço
                    permaneceu constante, mas a ultima variação foi
                    positiva, ZERO.UPTICK;</span></tt></span><br>
              <span style="font-size: 10pt; line-height: 115%;
                font-family: "Courier New";"><tt><span></span></tt>
                <tt><span>    if (y[i+1,4]=="C" & y[i,3]==y[i+1,3]
                    & </span></tt><br>
                <tt><span>            (y[i,4]=="UPTICK" |
                    y[i,4]=="ZERO.UPTICK"))</span></tt><br>
                <tt><span>        y[i+1,4]<-"ZERO.UPTICK"<br>
                  </span></tt></span><span style="font-size: 10pt;
                line-height: 115%; font-family: "Courier
                New";"><tt><span></span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span></span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span><b><big>#</big></b></span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span> </span></tt></span><span
                style="font-size: 10pt; line-height: 115%; font-family:
                "Courier New";"><tt><span>Se o preço
                    permaneceu constante, mas a ultima variação foi
                    negativa, ZERO.DOWNTICK;</span></tt></span><br>
              <span style="font-size: 10pt; line-height: 115%;
                font-family: "Courier New";"><tt><span></span></tt>
                <tt><span>    if (y[i+1,4]=="C" & y[i,3]==y[i+1,3]
                    & </span></tt><br>
                <tt><span>            (y[i,4]=="DOWNTICK" |
                    y[i,4]=="ZERO.DOWNTICK"))</span></tt><br>
                <tt><span>        y[i+1,4]<-"ZERO.DOWNTICK"</span></tt><br>
                <tt><span>}</span></tt></span> </div>
            <br>
            _______________________________________________<br>
            R-br mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
            <a moz-do-not-send="true"
              href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br"
              target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
            Leia o guia de postagem (<a moz-do-not-send="true"
              href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>)
            e forneça código mínimo reproduzível.<br>
          </blockquote>
        </div>
        <br>
        <br clear="all">
        <br>
        -- <br>
        Successful people ask better questions, and as a result, they
        get better answers. (Tony Robbins)<br>
      </div>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
R-br mailing list
<a class="moz-txt-link-abbreviated" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
<a class="moz-txt-link-freetext" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a>
Leia o guia de postagem (<a class="moz-txt-link-freetext" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</pre>
    </blockquote>
    <br>
  </body>
</html>