A primeira vez que você o vê, é obviamente redundante, pois são 20:00 e 00:00, tudo é como eu sugeri em meu primeiro post neste tópico, mas o fato de não poder posicionar um objeto (construir uma linha), provavelmente algo mais com uma base de cotação, se você acha que precisa, tente primeiro pregá-lo, e depois adicionar manualmente
Eu li sobre as barras em ascensão. Talvez (para o indicador) seja a função iBarShift()
<br/ translate="no"> int iBarShift( símbolo de corda, int timeframe, datetime time, bool exact=false) Busca de barra por hora. A função retorna o offset da barra à qual pertence o tempo especificado. Se não houver barra para o tempo especificado (uma "lacuna" no histórico), a função, dependendo do parâmetro exato, retorna -1 ou o deslocamento da barra mais próxima.
Parâmetros: símbolo - nome do símbolo do instrumento. NULL significa o símbolo atual. timeframe - Período. Pode ser um dos períodos do gráfico. 0 significa período do gráfico atual. tempo - Valor do tempo a ser pesquisado. exato - Valor devolvido se nenhuma barra for encontrada. FALSO - iBarShift retorna o mais próximo. VERDADEIRO - iBarShift retorna -1.
Exemplo: datetime some_time=D'2004.03.21 12:00'; int shift=iBarShift("EUROUSD",PERIOD_M1,some_time); Print("shift of bar with open time ",TimeToStr(some_time)," é ",shift);
Essa pergunta já me foi feita em uma página anterior. :о) Não, não foi. É um bar "dominical" regular, e abre às 23h00. A FIBO, por exemplo, tem bares "dominicais" que começam às 22 horas.
Verdade, tudo confirmado. Ainda consegui colocar a linha no lugar certo. Para isso, mudei primeiro para os relógios. Acho que ao colocar um objeto, ele sempre procura a barra mais próxima ao Período exato () minutos.
A versão final do indicador usando a segunda moeda. Diferentes horários de chegada aos bares, bem como omissões na história, são levados em consideração. As críticas são bem-vindas.
#property copyright "Copyright Quark"
#property link ""
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Lime
// indicator parameters
extern int nPeriod = 6;
double arrOpen[];
int nExtCountedBars = 0;
int nBars;
int nBarsUsdChf;
////////////////////////
int init()
{
nBars = 0;
nBarsUsdChf = 0;
string strIndicatorShortName = "Test_1(" + Symbol() + " " + nPeriod + ")";
IndicatorShortName(strIndicatorShortName);
// drawing settings
SetIndexStyle(0, DRAW_LINE);
SetIndexShift(0, 0);
IndicatorDigits(4);
// indicator buffers mapping
SetIndexBuffer(0, arrOpen);
return(0);
}
///////////////////////////
int start()
{
if(Bars <= nPeriod)
return(0);
if(nBars == Bars || nBarsUsdChf == iBars("USDCHF", 0))
return(-1);
int nPos = Bars - nBars;
int nPosUsdChf = nPos;
nBars = Bars;
nBarsUsdChf = iBars("USDCHF", 0);
while(nPos >= 0)
{
// Adjust nPosUsdChf, so that time is the same as in EURUSD
// If Time(USDCHF) < Time(EURUSD), decrease nPosUsdChf
while(nPosUsdChf > 0 &&
TimeDay(Time[nPosUsdChf]) < TimeDay(Time[nPos]) || // Yerterday vs. Today
(TimeDay(Time[nPosUsdChf]) == TimeDay(Time[nPos]) && // Same day
TimeHour(Time[nPosUsdChf]) < TimeHour(Time[nPos])))
nPosUsdChf--;
// Now, if Time(USDCHF) > Time(EURUSD), increase nPosUsdChf
while(nPosUsdChf < Bars &&
TimeDay(Time[nPosUsdChf]) > TimeDay(Time[nPos]) || // Yerterday vs. Today
(TimeDay(Time[nPosUsdChf]) == TimeDay(Time[nPos]) && // Same day
TimeHour(Time[nPosUsdChf]) > TimeHour(Time[nPos])))
nPosUsdChf++;
arrOpen[nPos] = iOpen("USDCHF", 0, nPosUsdChf);
nPos--;
nPosUsdChf--;
}
return(0);
}
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
aqui estão os dados dos arquivos
e aqui está esta barra na tabela
e este não é o único caso, é apenas um exemplo de muitos.
Todos esses bares estão relacionados a bares "dominicais".
mas o fato de não poder posicionar um objeto (construir uma linha), provavelmente algo mais com uma base de cotação, se você acha que precisa, tente primeiro pregá-lo, e depois adicionar manualmente
Busca de barra por hora. A função retorna o offset da barra à qual pertence o tempo especificado. Se não houver barra para o tempo especificado (uma "lacuna" no histórico), a função, dependendo do parâmetro exato, retorna -1 ou o deslocamento da barra mais próxima.
Parâmetros:
símbolo - nome do símbolo do instrumento. NULL significa o símbolo atual.
timeframe - Período. Pode ser um dos períodos do gráfico. 0 significa período do gráfico atual.
tempo - Valor do tempo a ser pesquisado.
exato - Valor devolvido se nenhuma barra for encontrada. FALSO - iBarShift retorna o mais próximo. VERDADEIRO - iBarShift retorna -1.
Exemplo:
datetime some_time=D'2004.03.21 12:00';
int shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
Print("shift of bar with open time ",TimeToStr(some_time)," é ",shift);
Vou tentar ver as citações do MiG, mais tarde.
Não, não foi.
É um bar "dominical" regular, e abre às 23h00. A FIBO, por exemplo, tem bares "dominicais" que começam às 22 horas.
Diferentes horários de chegada aos bares, bem como omissões na história, são levados em consideração.
As críticas são bem-vindas.
#property copyright "Copyright Quark" #property link "" #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Lime // indicator parameters extern int nPeriod = 6; double arrOpen[]; int nExtCountedBars = 0; int nBars; int nBarsUsdChf; //////////////////////// int init() { nBars = 0; nBarsUsdChf = 0; string strIndicatorShortName = "Test_1(" + Symbol() + " " + nPeriod + ")"; IndicatorShortName(strIndicatorShortName); // drawing settings SetIndexStyle(0, DRAW_LINE); SetIndexShift(0, 0); IndicatorDigits(4); // indicator buffers mapping SetIndexBuffer(0, arrOpen); return(0); } /////////////////////////// int start() { if(Bars <= nPeriod) return(0); if(nBars == Bars || nBarsUsdChf == iBars("USDCHF", 0)) return(-1); int nPos = Bars - nBars; int nPosUsdChf = nPos; nBars = Bars; nBarsUsdChf = iBars("USDCHF", 0); while(nPos >= 0) { // Adjust nPosUsdChf, so that time is the same as in EURUSD // If Time(USDCHF) < Time(EURUSD), decrease nPosUsdChf while(nPosUsdChf > 0 && TimeDay(Time[nPosUsdChf]) < TimeDay(Time[nPos]) || // Yerterday vs. Today (TimeDay(Time[nPosUsdChf]) == TimeDay(Time[nPos]) && // Same day TimeHour(Time[nPosUsdChf]) < TimeHour(Time[nPos]))) nPosUsdChf--; // Now, if Time(USDCHF) > Time(EURUSD), increase nPosUsdChf while(nPosUsdChf < Bars && TimeDay(Time[nPosUsdChf]) > TimeDay(Time[nPos]) || // Yerterday vs. Today (TimeDay(Time[nPosUsdChf]) == TimeDay(Time[nPos]) && // Same day TimeHour(Time[nPosUsdChf]) > TimeHour(Time[nPos]))) nPosUsdChf++; arrOpen[nPos] = iOpen("USDCHF", 0, nPosUsdChf); nPos--; nPosUsdChf--; } return(0); }Э... É que havia um MA, e então eu o removi. Mas não até o fim :)