Esta variante da função não tem nenhuma função New_bar();
Esta é a opção que mais economiza recursos que já proporcionei. Além disso, tem outra vantagem: o novo evento de barra é salvo todo o tempo em que o código do usuário é executado em um timer ou evento de tick.
Anteriormente, só se podia obter este evento uma vez e a bandeira era liberada com New_bar(). A função especial agora limpa a matriz "event_new_bar[][]" uma vez por minuto e é chamada somente após a execução do código personalizado.
Funções personalizadas podem acessar diretamente a matriz e recuperar novas informações de eventos de barra todo o tempo em que o código é executado em um timer ou evento de tick.
Isto economiza ainda mais recursos.
O último código também não funciona, demorou 7 minutos para que a impressão chegasse
//+------------------------------------------------------------------+//Пример использования событий нового бара в пользовательском функционал.//Просто обращаемся к глобальному массиву "События_нового_бара[a1][a2]" напрямую//и используем событие в наших торговых алгоритмах.//+------------------------------------------------------------------+void Моя_стратегия_торговли_на_новых_барах()
{
for(int a1 = 0; a1 < Всех_символов; a1++)
{
string Этот_символ = Символы[a1];
//----------------------------------for(int a2 = 0; a2 < Всех_таймфреймов; a2++)
{
bool Новый_бар = События_нового_бара[a1][a2];
int Этот_таймфрейм = Таймфреймы[a2];
//----------------------------------if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M5)
{
Print("M5");
}
//---------------------------------- if(Новый_бар && Этот_символ == "EURUSD" && Этот_таймфрейм == PERIOD_M1)
{
Print("M1");
}
//----------------------------------
}
}
}
O último código também não funciona, demorou 7 minutos para que a impressão chegasse.
Esta função deve ser chamada da OnTick ou de um temporizador.
Pode haver um pequeno problema, mas ainda não fui capaz de localizá-lo. Dê uma olhada no código você mesmo e procure por um erro. É tão simples quanto um 3 kopecks. E com comentários também.
Se você não entender, pergunte. Eu tenho outras coisas a fazer.
Esta variante da função não tem nenhuma função New_bar();
Esta é a opção que mais economiza recursos que já proporcionei. Além disso, tem outra vantagem: o novo evento de barra é salvo todo o tempo em que o código do usuário é executado em um timer ou evento de tick.
Anteriormente, só se podia obter este evento uma vez e a bandeira era liberada com New_bar(). A função especial agora limpa a matriz "event_new_bar[][]" uma vez por minuto e é chamada somente após a execução do código personalizado.
Funções personalizadas podem acessar diretamente a matriz e recuperar novas informações de eventos de barra todo o tempo em que o código é executado em um timer ou evento de tick.
Os recursos são economizados ainda mais.
Eu não entendo o humor. Por que - o depurador não entende russo? Ou sou só eu que tenho uma falha dessas? Vê variáveis em latim, mas não em cirílico.
Peter, então como você usa o depurador, ou não o usa?
Qualquer pessoa interessada pode procurar por um bug no código.
A essência do código:
1. declarar arrays globais:
matriz unidimensional para os nomes dos símbolos "Symbols[]".
matriz unidimensional para os períodos de tempo "Timeframes[]".
Uma matriz bidimensional onde escrevemos o número atual de barras "Number_bars[][]".
matriz bidimensional "New Bar Events[][]" onde escreveremos as bandeiras do novo evento do bar de cada símbolo e de cada período de tempo. Aqueles que estão em arrays "Symbols[]" e "Timeframes[]". Esta matriz será preenchida no laço por símbolos e cronogramas no evento do temporizador, uma vez por minuto. Depois disso, será liberado. No intervalo entre o enchimento e a limpeza desta matriz será chamada pela funcionalidade do usuário e informada sobre as novas barras.
2. Na inicialização, defina o tamanho do conjunto de símbolos e escreva lá os nomes dos símbolos da revisão do mercado.
3. Definir o tamanho da primeira dimensão da matriz "Number_bars[][]" que é igual ao número de símbolos, e a segunda dimensão é igual ao número de cronogramas. Este conjunto é como uma mesa. Ele registrará o número atual de barras de cada símbolo e cada período de tempo. O número é devolvido pela função iBars.
4. Definir o tamanho da primeira dimensão da matriz "Events_new_bar[][]", que é igual ao número de símbolos, e a segunda dimensão é igual ao número de cronogramas. Este conjunto é como uma mesa. Ele registrará as bandeiras de eventos de novas barras de cada símbolo em cada período de tempo.
5. Dentro do temporizador, contamos o minuto e fazemos um loop duplo (aninhado) nos símbolos (que estão na matriz Symbols[]) e nos prazos (que estão na matriz Timeframes[]). Chamamos a função iBars e obtemos o número atual de barras de cada símbolo e cada intervalo de tempo dos Símbolos e Matrizes de Intervalo de Tempo. Primeiro, comparamos o número atual de barras com o número já armazenado na matriz. Se estes valores não forem iguais, colocamos a bandeira do novo evento da barra na matriz "Event_new_bar[][]". Escrevemos então o número atual de bares no lugar do anterior.
A matriz global "events_new_bar[][]" está disponível em qualquer ponto do programa e é automaticamente preenchida a cada minuto, e também automaticamente limpa. Durante o período em que a matriz está sendo preenchida, a funcionalidade do usuário recebe novos dados sobre novas barras. A matriz é então limpa automaticamente.
Esta função deve ser chamada da OnTick ou de um temporizador.
Pode haver algum pequeno problema, mas ainda não fui capaz de localizá-lo. Dê uma olhada no código você mesmo e procure por um erro. É tão simples quanto um 3 kopecks. E ainda por cima, com comentários.
Se você não entender, basta perguntar. Eu tenho outras coisas a fazer.
Eu não entendo o humor. O que - o depurador não entende russo? Ou sou só eu que tenho uma falha dessas? Ele vê variáveis em latim, mas não em cirílico.
Peter, então como você usa o depurador, ou você não o usa?
Nikolai, para minha vergonha, não tenho a menor idéia de como usar o depurador. Eu nunca o usei. ((
Esta função deve ser chamada da OnTick ou de um temporizador.
Pode haver algum pequeno problema, mas ainda não fui capaz de localizá-lo. Dê uma olhada no código você mesmo e procure por um erro. É tão simples quanto um 3 kopecks. E com comentários também.
Se você não entender, basta perguntar. Eu tenho outras coisas a fazer.
É tão complexo e retorcido que não dá para perceber.
Esta variante da função não tem nenhuma função New_bar();
Esta é a opção que mais economiza recursos que já proporcionei. Além disso, tem outra vantagem: o novo evento de barra é salvo todo o tempo em que o código do usuário é executado em um timer ou evento de tick.
Anteriormente, só se podia obter este evento uma vez e a bandeira era liberada com New_bar(). A função especial agora limpa a matriz "event_new_bar[][]" uma vez por minuto e é chamada somente após a execução do código personalizado.
Funções personalizadas podem acessar diretamente a matriz e recuperar novas informações de eventos de barra todo o tempo em que o código é executado em um timer ou evento de tick.
Isto economiza ainda mais recursos.
O último código também não funciona, demorou 7 minutos para que a impressão chegasse
O último código também não funciona, demorou 7 minutos para que a impressão chegasse.
Esta função deve ser chamada da OnTick ou de um temporizador.
Pode haver um pequeno problema, mas ainda não fui capaz de localizá-lo. Dê uma olhada no código você mesmo e procure por um erro. É tão simples quanto um 3 kopecks. E com comentários também.
Se você não entender, pergunte. Eu tenho outras coisas a fazer.
Esta variante da função não tem nenhuma função New_bar();
Esta é a opção que mais economiza recursos que já proporcionei. Além disso, tem outra vantagem: o novo evento de barra é salvo todo o tempo em que o código do usuário é executado em um timer ou evento de tick.
Anteriormente, só se podia obter este evento uma vez e a bandeira era liberada com New_bar(). A função especial agora limpa a matriz "event_new_bar[][]" uma vez por minuto e é chamada somente após a execução do código personalizado.
Funções personalizadas podem acessar diretamente a matriz e recuperar novas informações de eventos de barra todo o tempo em que o código é executado em um timer ou evento de tick.
Os recursos são economizados ainda mais.
Eu não entendo o humor. Por que - o depurador não entende russo? Ou sou só eu que tenho uma falha dessas? Vê variáveis em latim, mas não em cirílico.
Peter, então como você usa o depurador, ou não o usa?

Qualquer pessoa interessada pode procurar por um bug no código.
A essência do código:
1. declarar arrays globais:
2. Na inicialização, defina o tamanho do conjunto de símbolos e escreva lá os nomes dos símbolos da revisão do mercado.
3. Definir o tamanho da primeira dimensão da matriz "Number_bars[][]" que é igual ao número de símbolos, e a segunda dimensão é igual ao número de cronogramas. Este conjunto é como uma mesa. Ele registrará o número atual de barras de cada símbolo e cada período de tempo. O número é devolvido pela função iBars.
4. Definir o tamanho da primeira dimensão da matriz "Events_new_bar[][]", que é igual ao número de símbolos, e a segunda dimensão é igual ao número de cronogramas. Este conjunto é como uma mesa. Ele registrará as bandeiras de eventos de novas barras de cada símbolo em cada período de tempo.
5. Dentro do temporizador, contamos o minuto e fazemos um loop duplo (aninhado) nos símbolos (que estão na matriz Symbols[]) e nos prazos (que estão na matriz Timeframes[]). Chamamos a função iBars e obtemos o número atual de barras de cada símbolo e cada intervalo de tempo dos Símbolos e Matrizes de Intervalo de Tempo. Primeiro, comparamos o número atual de barras com o número já armazenado na matriz. Se estes valores não forem iguais, colocamos a bandeira do novo evento da barra na matriz "Event_new_bar[][]". Escrevemos então o número atual de bares no lugar do anterior.
A matriz global "events_new_bar[][]" está disponível em qualquer ponto do programa e é automaticamente preenchida a cada minuto, e também automaticamente limpa. Durante o período em que a matriz está sendo preenchida, a funcionalidade do usuário recebe novos dados sobre novas barras. A matriz é então limpa automaticamente.
É isso aí.
Esta função deve ser chamada da OnTick ou de um temporizador.
Pode haver algum pequeno problema, mas ainda não fui capaz de localizá-lo. Dê uma olhada no código você mesmo e procure por um erro. É tão simples quanto um 3 kopecks. E ainda por cima, com comentários.
Se você não entender, basta perguntar. Eu tenho outras coisas a fazer.
resposta profissional
Eu não entendo o humor. O que - o depurador não entende russo? Ou sou só eu que tenho uma falha dessas? Ele vê variáveis em latim, mas não em cirílico.
Peter, então como você usa o depurador, ou você não o usa?
resposta profissional
Esta função deve ser chamada da OnTick ou de um temporizador.
Pode haver algum pequeno problema, mas ainda não fui capaz de localizá-lo. Dê uma olhada no código você mesmo e procure por um erro. É tão simples quanto um 3 kopecks. E com comentários também.
Se você não entender, basta perguntar. Eu tenho outras coisas a fazer.
É tão complexo e retorcido que não dá para perceber.
Sinto muito, mas também é completamente ilegível.
É tão complicado e retorcido que é uma bagunça.
Sinto muito, mas também é completamente ilegível.
Você sabe o que dizem sobre "você não pode... não torturar..."? Acho que é uma boa.
Você conhece o ditado sobre "você não pode... não torturar..."? Acho que é uma boa.
É isso mesmo, foi assim que você conseguiu realizar a tarefa de forma conclusiva, bem, ou eu não consegui acertar sua solução.