Indicador Perguntas Diversas - página 6

 
Ele respondeu com mais atenção.
 
Marco vd Heijden:

Bem, se se tratar de prazos de troca, então o temporizador não é uma boa opção porque o temporizador é destruído ao mudar de estrutura.

Você pode criar suas linhas na função OnInit(), e atualizá-las nas funções OnTick() ou OnTimer().

Observe também a função ObjectsDeleteAll() no OnDeint() que assegurará que tudo seja removido antes de ser criado novamente em seu novo quadro.

---

E além disso, se você quiser atualizar as linhas sempre que surgir uma vela nova, você pode combinar o exemplo da página anterior com o último a lhe dar isto:

...

Se houver mais algum problema, por favor, mostre algum código.

Eu pesquisei seus últimos comentários.

Outros 2 grandes comentários. Parece que o código é semelhante (seu comentário nº 18), mas isso é muito diferente para mim.

Então, sim, eu me senti "Timer" destruir quando eu troquei de frame. Mas isso é muito útil para mim porque meu indicador é atualizado uma vez em um PERÍODO_**'s.

Sim! Já criei linhas principais na função especial init(), e elas são atualizadas na função OnTimer().

(você pode me entender mais claramente a partir do código abaixo)

...surge uma nova vela que você pode combinar...

Se houver mais algumproblema...

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Como eu disse, há um problema que leva mais tempo. Neste momento, preciso mostrar-lhes um pouco do meu código indicador. E eu não uso 'switch operator & ObjectMove()' no meu indicador.

@Marco

Por favor, me informe que o código abaixo é bom ou o quê?

Qual é o seu conselho,poderia começar a pesquisar amplamente seus dois últimos comentários e poderia envolver "mudar() e ObjectMove()" para o meu indicador? (Por que estou perguntando antes de fazê-lo? - porque leva muito tempo).

(como você vê, obtive mais benefícios de seu comentário #18 - e agora estou enfrentando um dilema entre meu código abaixo e seus dois últimos grandes comentários)

//|+--------------------------------------------------------------------------------+
int  init()
{
    EventSetMillisecondTimer( 1250 );
    _CreateLines_M5();

    return(INIT_SUCCEEDED);
}
//|+--------------------------------------------------------------------------------+
int  start()
{
    return(0);
}
//|+--------------------------------------------------------------------------------+
int  deinit()
{
    ObjectsDeleteAll( 0, _prefix );
    return(0);
}
//|+--------------------------------------------------------------------------------+
void OnTimer()
{
    //---
    if ( _dt_Prd_M5 != iTime( Symbol(), _prd_M5, 0 ) )
    {
         _dt_Prd_M5  = iTime( Symbol(), _prd_M5, 0 );
         _CreateLines_M5();
    }
    return;
}
//|+--------------------------------------------------------------------------------+
void _CreateLines_M5( )
{
    //---
    int _dayCnt_M5 = _prd_cnt + 0;
    int    _cnt_M5 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_W1, _dayCnt_M5 ) );
    for ( i = 0; i < _cnt_M5; i++ )
    {
        _time_M5     = Time[i];
        _prdCvrt_M5  = PeriodSeconds( _prd_M5 );
        _timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;

        _vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr( _timeCvrt_M5, TIME_DATE|TIME_MINUTES );

        if ( _Period < PERIOD_M15 )
        {
            if (
                    ...
                    TimeHour( _timeCvrt_M5 ) == 12
               )
            {
                ObjectCreate ( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0  );
            }
        }
    }
    return;
}

Tudo de bom para você.

 
Keith Watford:

Não conheço ninguém, mas acho sua mistura de fonte, cores, negrito e itálico, etc., distraindo e irritando. Na verdade, eu não poderia me incomodar em ler este post.

Concordo plenamente, desde o início do tópico estou "pulando" acima de todos estes comentários.
 
Max Enrik:

Eu pesquisei seus últimos comentários.

Outros 2 grandes comentários. Parece que o código é similar (seu comentário nº 18), mas isso é muito diferente para mim.

Então, sim, eu me senti "Timer" destruir quando troquei de frame. Mas isso é muito útil para mim porque meu indicador é atualizado uma vez em um PERÍODO_**'s.

Sim! Já criei linhas principais na função especial init(), e elas são atualizadas na função OnTimer().

(você pode me entender mais claramente a partir do código abaixo)

...surge uma nova vela que você pode combinar...

Se houver mais algumproblema...

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Como eu disse, há um problema que leva mais tempo. Neste momento, preciso mostrar-lhes um pouco do meu código indicador. E eu não uso 'switch operator & ObjectMove()' no meu indicador.

@Marco

Por favor me avise que o código abaixo é bom ou o quê?

Qual é o seu conselho,poderia começar a pesquisar amplamente seus dois últimos comentários e poderia envolver "mudar() e ObjectMove()" para meu indicador? (Por que estou perguntando antes de fazê-lo? - porque leva muito tempo).

(como você vê, obtive mais benefícios de seu comentário #18 - e agora estou enfrentando um dilema entre meu código abaixo e seus dois últimos grandes comentários)

//|+--------------------------------------------------------------------------------+
int  init()
{
    EventSetMillisecondTimer( 1250 );
    _CreateLines_M5();

    return(INIT_SUCCEEDED);
}
//|+--------------------------------------------------------------------------------+
int  start()
{
    return(0);
}
//|+--------------------------------------------------------------------------------+
int  deinit()
{
    ObjectsDeleteAll( 0, _prefix );
    return(0);
}
//|+--------------------------------------------------------------------------------+
void OnTimer()
{
    //---
    if ( _dt_Prd_M5 != iTime( Symbol(), _prd_M5, 0 ) )
    {
         _dt_Prd_M5  = iTime( Symbol(), _prd_M5, 0 );
         _CreateLines_M5();
    }
    return;
}
//|+--------------------------------------------------------------------------------+
void _CreateLines_M5( )
{
    //---
    int _dayCnt_M5 = _prd_cnt + 0;
    int    _cnt_M5 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_W1, _dayCnt_M5 ) );
    for ( i = 0; i < _cnt_M5; i++ )
    {
        _time_M5     = Time[i];
        _prdCvrt_M5  = PeriodSeconds( _prd_M5 );
        _timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;

        _vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr( _timeCvrt_M5, TIME_DATE|TIME_MINUTES );

        if ( _Period < PERIOD_M15 )
        {
            if (
                    ...
                    TimeHour( _timeCvrt_M5 ) == 12
               )
            {
                ObjectCreate ( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0  );
            }
        }
    }
    return;
}

Tudo de bom para você.

Bem, se funcionar e se não continuar apenas tentando.

 
Marco vd Heijden:

Bem, se funcionar e se não continuar apenas tentando.

Muito obrigado!
 

#Hora do Corretor - ReOpen

Eu leio poucos fóruns aqui e ali. Talvez minha solução seja qualquer um deles. Mas eu não descobri.

Antes deste comentário - eu tentei mais uma vez. Mas não consigo encontrar uma solução.
Então, eu tenho 2 corretores, A e B.

  • R: Os objetos da linha Vline colocam o tempo correto. Qual eu quero. Por exemplo: Hora 2017.02.18 0:00 também objeto vline colocado na mesma hora.
  • B: Objeto Vline colocado na hora errada ( talvez eu esteja errado ). eg: Tempo 2017.02.18 0:00 Hora 2017.02.18 1:00 mas objeto vline colocado 0:00.
Portanto, se alguém entender minha preocupação, qualquer comentário seria melhor para mim.

Tenha um bom fim de semana.

 
Max Enrik:

#Hora do Corretor - ReOpen

Eu leio poucos fóruns aqui e ali. Talvez minha solução seja qualquer um deles. Mas eu não descobri.

Antes deste comentário - eu tentei mais uma vez. Mas não consigo encontrar uma solução.
Então, eu tenho 2 corretores, A e B.

  • R: Os objetos da linha Vline colocam o tempo correto. Qual eu quero. Por exemplo: Hora 2017.02.18 0:00 também objeto vline colocado na mesma hora.
  • B: Objeto Vline colocado na hora errada ( talvez eu esteja errado ). eg: Tempo 2017.02.18 0:00 Hora 2017.02.18 1:00 mas objeto vline colocado 0:00.
Portanto, se alguém entender minha preocupação, qualquer comentário seria melhor para mim.

Tenha um bom fim de semana.

Precisaria ver o código
 

O código abaixo me dá resultados diferentes em dois Corretores diferentes.
( Meu comentário anterior poderia ajudar você a me entender )

Obrigado de antemão.

void PerioDay()
  {
// High

   ObjectSet("PeriodHigh",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_D1,0));
   ObjectSet("PeriodHigh",OBJPROP_PRICE2,iHigh(Symbol(),PERIOD_D1,0));

   ObjectSet("PeriodHigh",OBJPROP_TIME1,TimeCurrent());
   ObjectSet("PeriodHigh",OBJPROP_TIME2,TimeCurrent() -(TimeCurrent()-iTime(Symbol(),PERIOD_D1,0)));

// Low

   ObjectSet("PeriodLow",OBJPROP_PRICE1,iLow(Symbol(),PERIOD_D1,0));
   ObjectSet("PeriodLow",OBJPROP_PRICE2,iLow(Symbol(),PERIOD_D1,0));

   ObjectSet("PeriodLow",OBJPROP_TIME1,TimeCurrent());
   ObjectSet("PeriodLow",OBJPROP_TIME2,TimeCurrent() -(TimeCurrent()-iTime(Symbol(),PERIOD_D1,0)));
  }
 

Se você quer dizer que os valores de iHigh e iLow diferem entre os corretores, isso é bastante comum.

2 razões:

1. Os preços variam ligeiramente entre os corretores, e

2. Se os servidores dos corretores tiverem diferentes compensações GMT, as barras começam em horários diferentes.

 
honest_knave:

Se você quer dizer que os valores de iHigh e iLow diferem entre os corretores, isso é bastante comum.
2 razões:
1. Os preços variam ligeiramente entre os corretores, e
2. Se os servidores dos corretores tiverem diferentes compensações GMT, as barras começam em horários diferentes.

Quero dizer apenas Tempo diferente.

Então, não há nenhuma chance de resolver este problema, por favor?

Muito obrigado.