Indicadores: Prior Cote - AJUSTE ( modo calculo local ) para DOL , IND, WDO e WIN - página 3

 

Olá, Daniel!

Parabéns pelo(s) indicador* (es), pelos artigos e principalmente pelo suporte que você disponibiliza no fórum.

Diferente do Max, estive olhando o código do ajuste e vi que o COTE_TODAY só devolve o valor ao final do dia. Teria como antecipá-lo para disponibilizar o valor assim que conclui o cálculo (Win a partir das 17:16 e Wdo a partir das 16:01)?

Juro que estou tentando entender e aprender (porque sou novo no fórum e muito enferrujado em c/c++). No final do código tem o identificador do SYMBOL_EXPIRATION_TIME que parece ser o momento em que o cálculo do COTE_TODAY é passado para tela. Confere? 

string ValidSymbol(const bool bNext = false)
  {
   MqlDateTime mdt1;
   string sz0, sz1, sz2, szSymbol;
   datetime dt = TimeLocal();

   szSymbol = _Symbol;
   sz0 = StringSubstr(szSymbol, 0, 3);
   if((sz0 != "WDO") && (sz0 != "DOL") && (sz0 != "WIN") && (sz0 != "IND"))
      return szSymbol;
   sz1 = (sz0 == "WDO" ? "DOL" : (sz0 == "WIN" ? "IND" : sz0));
   sz0 = (sz1 == "DOL" ? "WDO" : "WIN");
   sz2 = (sz0 == "WDO" ? "FGHJKMNQUVXZ" : "GJMQVZ");
   TimeToStruct(dt, mdt1);
   for(int i0 = 0, i1 = mdt1.year - 2000;;)
     {
      szSymbol = StringFormat("%s%s%d", sz0, StringSubstr(sz2, i0, 1), i1);
      if(i0 < StringLen(sz2))
         i0++;
      else
        {
         i0 = 0;
         i1++;
        }
      if(macroGetDate((bNext ? macroAddHours(24, dt) : dt)) < macroGetDate(SymbolInfoInteger(szSymbol, SYMBOL_EXPIRATION_TIME)))
         break;
     }

Perdoe-me pela falta de conhecimento e pelos termos nem sempre corretamente abordados.

E muito obrigado

*PS: Usei uma parte do seu código (Macrogetdate) do VWAP que está em um dos artigos para criar um indicador que devolve fechamento, máxima, mínima do dia anterior e abertura do dia corrente. Muito obrigado, novamente.

 
bomgorilao #:

Olá, Daniel!

Parabéns pelo(s) indicador* (es), pelos artigos e principalmente pelo suporte que você disponibiliza no fórum.

Diferente do Max, estive olhando o código do ajuste e vi que o COTE_TODAY só devolve o valor ao final do dia. Teria como antecipá-lo para disponibilizar o valor assim que conclui o cálculo (Win a partir das 17:16 e Wdo a partir das 16:01)?

Juro que estou tentando entender e aprender (porque sou novo no fórum e muito enferrujado em c/c++). No final do código tem o identificador do SYMBOL_EXPIRATION_TIME que parece ser o momento em que o cálculo do COTE_TODAY é passado para tela. Confere? 

Perdoe-me pela falta de conhecimento e pelos termos nem sempre corretamente abordados.

E muito obrigado

*PS: Usei uma parte do seu código (Macrogetdate) do VWAP que está em um dos artigos para criar um indicador que devolve fechamento, máxima, mínima do dia anterior e abertura do dia corrente. Muito obrigado, novamente.

NÃO ... COTE_TODAY mostra o valor no exato instante que o ajuste é calculado. Só que tem um detalhe: A linha de preço onde o ajuste aconteceu, é cortada de forma que ela irá começar a aparecer a barra seguinte. Você pode mudar este comportamento de forma que o valor do ajuste comece a aparecer assim que o calculo iniciar, e conforme ele vai sendo calculado a linha de marcação vai sendo movida mostrando onde ele ocorrerá, desta forma você irá ver ele o tempo todo. Mas é preciso modificar um pouco a lógica do indicador.

Já o SYMBOL_EXPIRATION_TIME, tem como finalidade forçar o indicador a procurar o ativo corrente, ou seja o ativo que realmente está sendo negociado, naquela data especifica. Esta parte do código que você recortou e está mostrando faz justamente isto. Porém este código já está obsoleto, já que tem um artigo em que mostro ele bem mais elaborado. E eu uso um outro ainda mais elaborado. Porém quanto mais elaborado é o código, mais confuso ele se torna para quem não tem muita experiência em programação. Por isto não atualizei este post. Mas estude este código com calma e você vai entender o que eu expliquei sobre as marcações.😁👍

 

Muito bom, mas eu percebi que existe uma diferença grande do valor do ajuste que é exibido pela B3 e o que é calculado pelo indicador. Por exemplo: WINZ23 - hoje 22/11/2023 - Ajuste B3 126.491 e o indicador tá mostrando em 126.337. Uma diferença de 154 pontos. Será que existe uma forma de corrigir essa diferença?