Indicador Perguntas Diversas - página 8

 
Marco vd Heijden:

A primeira barra do dia deve ser a primeira barra após o TimeHour() começou de novo com a contagem.
Essa será, naturalmente, a primeira barra de qualquer coisa M1 , M5 , M15 etc. Todos eles iniciam novas barras.

Vou tentar em breve, também estou trabalhando nesta questão.

Muito obrigado.

 

Ainda leio fóruns e pesquisas, posso encontrar fóruns semelhantes, mas não consigo encontrar exatamente o que quero. ( talvez eu não entenda seu estilo de código ou ... )
Fiz uma rápida captura de tela, espero que isto possa ajudá-lo a me entender claramente.

primeira barra do dia

Obrigado de antemão.

 
datetime open;

open=iOpen(Symbol(),PERIOD_D1,0);

// put in ontick

if(iOpen(Symbol(),PERIOD_D1,0)!=open)
{
  if(TimeHour(open)==0)
   {
    Alert("New Day !!");
   }
  open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour
}

Eu bebi algumas cervejas, então espero que você tenha certeza de que está errado de todas as maneiras possíveis.

Acho que a abertura deve ser substituída pelo tempo.

iTime(

Ou talvez você possa até mesmo fazer:

if(TimeHour(TimeCurrent())==0)
{
  Alert("NEw DAy m8");
}
ps. o que acontece com o outro fio? foram quase 40 páginas?
 
Marco vd Heijden:

Eu bebi algumas cervejas, então espero que vocês tenham a idéia de que estou certo de que está errado de todas as maneiras possíveis.
Ou talvez você possa até mesmo fazer:

ps. o que acontece com a outra linha? eram quase 40 páginas?
Sr. William - ( Respeito a você e seus comentários. ) Enfrentei poucas vezes que você escreveu esta frase: Não há leitores de mentes aqui.
Agora eu acho que se eu não posso escrever mais claramente sobre minha edição, como as pessoas podem me entender claramente?!

---

Sr. Marco - muito obrigado por seu comentário. Eu já sei, também utilizei códigos semelhantes em meus indicadores.

( tentei explicar meu problema na seção de código fonte )

iTime( Symbol(), PERIOD_D1, 0 )
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time

---

P.S

Vocês pensam por que eu não abro subtemas?
Eu ainda estou trabalhando nisso. Posso encontrar soluções em fóruns. Agora está indo bem também um pouco devagar.

Além disso:
Quando comecei a escrever os EA do Painel de Comércio, pensei que precisava escrever 4 scripts funcionais Sell, Buy, Close all Order, EXIT ( remover ) EA.
Enquanto trabalhava nele, tive muitas idéias... agora que os EA's têm mais de 3k linhas.
Mesmo assim, eu deveria escrever quase mais 10 funções úteis se eu decidisse sobre todas elas.

Também talvez quando eu terminar os meus EA's do Painel de Comércio eu escreva uma pequena história sobre como comecei a escrever o roteiro para os meus EA's do Painel de Comércio. ( mesmo eu não o terminei - realmente acredito que a maioria das pessoas vai dizer quem vai ver: Uau, incrível! ) hehehe :)

---

Obrigado Sr. Marco.

Muito obrigado a todos vocês ( que respondem aos meus comentários ) e por sua ajuda.

 
#property strict
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)

void OnStart()
  {
   local_offset*=HOUR;

   int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;

   datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
   datetime local_midnight  = broker_midnight + local_offset;

   int      M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
   datetime M5_time  = iTime(_Symbol,PERIOD_M5,M5_shift);
   double   M5_open  = iOpen(_Symbol,PERIOD_M5,M5_shift);

   printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
  }
 
honest_knave:

Obrigado por seu grande exemplo.
Talvez, se eu tomar um tempo, tentarei explicar com vídeo / imagem amanhã.

Eu pesquiso muito sobre este assunto.

( também pesquiso como estas palavras-chave no google seo (até agora não fiz comentários úteis no seo): site:mql4.com | site:mql5.com primeira barra do dia )

 

Você está procurando uma maneira de detectar automaticamente a compensação local > do tempo de corretagem? por exemplo, +1 hora

Se você vai ter uma configuração manual (isto é melhor porque às vezes você não quer usar a hora local, mas um outro fuso horário ao todo) os passos que você segue são como no meu script acima:

1. Obter meia-noite na hora do corretor (usando o iTime ou através de cálculos)

2. Converta-o para uma meia-noite local usando sua configuração offset

3. Coloque a meia-noite local através do iBarShift para obter a barra correta no período de tempo escolhido.

 
honest_knave:

Você está procurando uma maneira de detectar automaticamente a compensação local > hora do corretor? por exemplo, +1 hora
Se você vai ter uma configuração manual (isto é melhor porque às vezes você não quer usar a hora local, mas outro fuso horário completamente) os passos que você segue são como no meu script acima:
1. Obtenha a meia-noite na hora do corretor (usando o iTime ou através de cálculos)
2. Converta-o para uma meia-noite local usando sua configuração offset
3. Coloque a meia-noite local através do iBarShift para obter a barra correta no período de tempo escolhido.

Você me entendeu absolutamente corretamente - que estou procurando uma maneira de automaticamente... - Então, por quê? Tenho poucos indicadores importantes ( self made - com diferentes fóruns ajudados ) se eu escolher a forma manual - eu poderia mudar suas configurações... isso é muito longe - eu sou tão preguiçoso. :)
Muito mais obrigado!
Talvez eu tenha encontrado uma solução ( neste momento parece que está funcionando - eu já tentei 2 corretores diferentes, tenho o tempo correto ).

Acredito que a pergunta vem da falta de experiência.

P: Como posso manter apenas a Hora 1 abaixo do resultado, por favor?
( Na verdade eu descobri como posso manter apenas " 1 " abaixo do resultado - mas preciso de um método profissional, por favor )
( por exemplo: resultado: 2017.02.2701:00:00 - Mas preciso manter apenas: 1 )

2017.00.00 00:00:00.000 Custom Indicator EURUSD,M5:  Bar Time: 2017.02.27 01:00:00

Muito obrigado por tudo.

( Vou compartilhar como encontrei a solução. - se você não ajudou, não consigo encontrar solução - mais um muito obrigado. )

 

Eu estava procurando logo abaixo do código.
Mas ainda preciso testá-lo.

Period_Look=iTime(Symbol(),PERIOD_W1,0); // actually I need PERIOD_D1 - but did not work correctly - I still need to see first Hour of Monday for test.
Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look);
Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);

GMT_Offset=(Period_Time-iTime(Symbol(),PERIOD_W1,0)-PeriodSeconds(PERIOD_D1))/PeriodSeconds(PERIOD_H1); // result: 1

Se o código acima não estiver correto, por favor, me avise.

Muito obrigado @honest_knave e @Marco

 

Bem, Max considere isto, se você estiver escaneando um padrão, e ele se formar, então seu gatilho irá disparar independentemente da marca de tempo.

Portanto, o gatilho pode ter vários carimbos de tempo em diferentes corretores, mas o momento exato do gatilho seria mais ou menos o mesmo em todos os corretores.

Não exatamente, mas perto o suficiente.