Indicador Perguntas Diversas

 

Hi,

#Tempo do Corretor

Passei poucas horas para ler alguns comentários, mas não descobri como posso ajustar meuTempo de Corretor aos meus indicadores / como posso ajustar meus indicadores ao meu Tempo de Corretor. (talvez eu esteja confuso)

Meu tempo de corretor começa a partir da 01: 00, mas todos os meus indicadores funcionam a partir das 00:00.

Então, como posso resolver meu problema?

Por favor, me ajude.

Obrigado.

(O inglês não é minha língua nativa).

 

#Broker Time - Fechado por enquanto.

Eu resolvo meu problema.

 

#Mês OBJ_VLINE

Preciso criar linhas de Meses, mas luto.

int _prd = PERIOD_MN1;
int _cnt_MN1 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_MN1, 0 ) );
for ( int i = 0; i < _cnt_MN1; i++ )
{
    //---date & time
    datetime _time          = Time[i]                                               ;
    datetime _prd_time      = iTime( Symbol(), _prd, 0 )                            ;
    datetime _timeCvrt_MN1  = _time + ( _time % _prd_time ) - PeriodSeconds( _prd ) ;
    //---name
    string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( _timeCvrt_MN1, TIME_DATE )    ;

    if ( _Period < PERIOD_MN1 )
    {
        ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, _time, 0 )                 ;
        ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;
    }   //---if Close
}   //---for Close

Alguém pode, por favor, me agradar?

Melhor

 
Você sabe quando o mês começou: iTime(_Symbol, PERIOD_MN1, 0) Não há necessidade do loop, ou de todo o resto. Basta desenhar a linha.
datetime BOM = iTime( Symbol(), PERIOD_MN1, 0 ); // Beginning of the month.
string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( BOM, TIME_DATE )    ;
ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, BOM, 0 )                 ;
ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;
 
int _cnt_MN1 = 12; // 12 lines for a year 24 for two years and etc.
for ( int i = 0; i < _cnt_MN1; i++ )
{
   ObjectCreate(0,"PERIOD_MN1-"+IntegerToString(i),OBJ_VLINE,0,iTime(Symbol(),PERIOD_MN1,i),0);
   ObjectSetString(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_TOOLTIP,TimeToString(iTime(Symbol(),PERIOD_MN1,i),TIME_DATE));
   ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i), OBJPROP_COLOR , C'180,160,080'  );
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_WIDTH,1);
}
 
whroeder1:
Você sabe quando o mês começou: iTime(_Symbol, PERIOD_MN1, 0) Não há necessidade do loop, ou de todo o resto. Basta desenhar a linha.
datetime BOM = iTime( Symbol(), PERIOD_MN1, 0 ); // Beginning of the month.
string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( BOM, TIME_DATE )    ;
ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, BOM, 0 )                 ;
ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;

Obrigado pela resposta rápida e por seu comentário.

Também tentei seu código, mas vejo apenas um mês anterior 2016/10.

Mas preciso criar Linhas de Meses a partir do ano atual e de um futuro.

exemplo: O mês começa de - janeiro 2016 - fevereiro 2016 - março 2016 - ... até dezembro 2016

Espero que você me entenda claramente agora.

Então, o que posso fazer por isso, por favor?

Obrigado de antemão.

 
Marco vd Heijden:
int _cnt_MN1 = 12; // 12 lines for a year 24 for two years and etc.
for ( int i = 0; i < _cnt_MN1; i++ )
{
   ObjectCreate(0,"PERIOD_MN1-"+IntegerToString(i),OBJ_VLINE,0,iTime(Symbol(),PERIOD_MN1,i),0);
   ObjectSetString(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_TOOLTIP,TimeToString(iTime(Symbol(),PERIOD_MN1,i),TIME_DATE));
   ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i), OBJPROP_COLOR , C'180,160,080'  );
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_WIDTH,1);
}

Você me entende claramente o que estou pensando, e eu não vi seu grande comentário (enquanto eu escrevia resposta para o comentário anterior)

Muito apreciado.

 
Max Enrik:

Você me entende claramente o que estou pensando, e eu escrevi resposta para um comentário anterior (enquanto eu não via seu grande comentário).

Muito agradecido.

Apenas mantenha-o simples
 
    ObjectCreate(0,"Future-H4-",OBJ_VLINE,0,0,0);
    ObjectMove(0,"Future-H4-",0,iTime(Symbol(),PERIOD_H4,0)+PERIOD_H4,0);

MN1 está um pouco distante demais, mas aqui está um para H4.

Você também pode usar o

TimeCurrent()
E mova sua linha na função OnTick() ou OnTimer() então ela se moverá junto com o tempo.
 
Marco vd Heijden:
    ObjectCreate(0,"Future-H4-",OBJ_VLINE,0,0,0);
    ObjectMove(0,"Future-H4-",0,iTime(Symbol(),PERIOD_H4,0)+PERIOD_H4,0);

MN1 está um pouco distante demais, mas aqui está um para H4.

Você também pode usar o

TimeCurrent()
E mova sua linha na função OnTick() ou OnTimer() então ela se moverá junto com o tempo.

Uau! Muito obrigado por seu comentário.

Eu uso o código abaixo (que você mencionou) em meu Indicador de Linhas de Período, de modo que funciona bem para mim até 'PERÍODO_MN1'.

iTime(Symbol(),PERIOD_*,0)+PERIOD_*

---

Li um pouco mais sobre ' Funções de Manuseio de Eventos', mas preciso de conselhos de um codificador profissional.

Qual função é útil para o meu indicador (Hora 4, Dia, Semana, Mês, Linhas)?

exemplo: init(), start(), OnTick() ou OnTimer()

Obrigado de antemão.

 

Bem, você pode desenhar todas as linhas no OnInit() e depois desenhar novas sempre que a opção da última barra mudar, você saberá que havia uma nova barra.

Mas não tenho certeza do que exatamente você está querendo fazer.