Olá.
Estou interessado em seu indicador. Mas preciso que as linhas "TL_Support" e "TL_Resistance" sejam construídas não pelos dois últimos fractais, mas pelo último e pelo próximo mais alto/baixo.
Fiz alterações no código. Ele funciona bem on-line, mas no testador ele se recusa a funcionar. Ele faz a primeira construção e congela. Você poderia me dizer como fazer para que o indicador com as alterações funcione no testador do MT5?
Citarei o código abaixo, as alterações feitas serão destacadas em amarelo.
//+------------------------------------------------------------------+ //| Busca de valores fractais| //+------------------------------------------------------------------+ // --- Procurar o primeiro fractal superior for(n=0; n<Bars(Symbol(),base_tf); n++) { // --- se for um valor não vazio, encerre o loop if(FractalUp_base[n]!=EMPTY_VALUE) break; } UpFractal_1_base=FractalUp_base[n];// --- escrever o valor do preço do primeiro fractal na variável UpperFractal_1_base=n;// --- escrever o índice do primeiro fractal na variável // --- // --- Pesquisar o segundo fractal superior for(n=UpperFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- se for um valor não vazio, encerre o loop if( FractalUp_base[n]!=EMPTY_VALUE && FractalUp_base[n]>UpFractal_1_base ) break; } UpFractal_2_base=FractalUp_base[n]; // --- escreva o valor do preço do segundo fractal na variável UpperFractal_2_base=n;// --- escrever o índice do segundo fractal na variável // --- // --- Procure o primeiro fractal inferior for(n=0; n<Bars(Symbol(),base_tf); n++) { // --- se for um valor não vazio, encerre o loop if(FractalDown_base[n]!=EMPTY_VALUE) break; } LowFractal_1_base=FractalDown_base[n];// --- escrever o valor do preço do primeiro fractal na variável LowerFractal_1_base=n;// --- escrever o índice do primeiro fractal na variável // --- // --- Pesquisar o segundo fractal inferior for(n=LowerFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- se for um valor não vazio, encerre o loop if( FractalDown_base[n]!=EMPTY_VALUE && FractalDown_base[n]<LowFractal_1_base ) break; } LowFractal_2_base=FractalDown_base[n];// --- escreva o valor do preço do segundo fractal na variável LowerFractal_2_base=n;// --- escrever o índice do segundo fractal na variável //---
Não verifiquei isso pessoalmente, mas tente adicionar uma condição melhor para desenhar as próprias linhas, onde os objetos são criados. Por exemplo, para uma linha de suporte:
//--- Criar linha de suporte if (LowFractal_1_base<LowFractal_2_base)//se o preço do primeiro fractal encontrado for menor que o preço do segundo fractal encontrado, desenhe uma linha { ObjectCreate(0,"TL_Support",OBJ_TREND,0,LowFractalTime_2_base[0],LowFractal_2_base,LowFractalTime_1_base[0],LowFractal_1_base); ObjectSetInteger(0,"TL_Support",OBJPROP_RAY_RIGHT,true); ObjectSetInteger(0,"TL_Support",OBJPROP_COLOR,Support_Color); ObjectSetInteger(0,"TL_Support",OBJPROP_STYLE,Support_Style); ObjectSetInteger(0,"TL_Support",OBJPROP_WIDTH,Support_Width); }
Não verifiquei isso pessoalmente, mas tente adicionar uma condição melhor para desenhar as próprias linhas, onde os objetos são criados. Por exemplo, para uma linha de suporte:
Boa tarde, obrigado por seu comentário. A ideia é boa, mas para linhas de suporte a condição deve ser (de acordo com a lógica que estou tentando implementar) o oposto, a mínima do segundo fractal encontrado deve ser menor do que a do primeiro, todos os candidatos ao segundo fractal cuja mínima seja maior do que a do primeiro devem ser ignorados
Além disso, se você seguir esse caminho, terá que reprojetar o bloco de desenho, na verdade, e tudo o mais depois disso também. O belo código perderá sua elegância, na minha opinião.
Há mais um fator pelo qual escrevi um comentário nesta postagem: o programa funciona perfeitamente bem, tudo é desenhado perfeitamente em cotações reais, dentro do prazo, sem bugs, mas no testador ele não quer fazer isso. E quando algo não está claro, isso me alarma e me estressa, por isso quero descobrir o que é.
O arquivo do código editado está anexado. Ficarei extremamente grato se colegas mais competentes apontarem o motivo desse comportamento do testador.
Boa tarde, obrigado por seu comentário. A ideia é boa, mas para linhas de suporte a condição deve ser (de acordo com a lógica que estou tentando implementar) o oposto, a mínima do segundo fractal encontrado deve ser menor que a do primeiro, todos os candidatos ao segundo fractal, cuja mínima é maior que a do primeiro, devem ser ignorados
Além disso, se você seguir esse caminho, terá que redesenhar o bloco de desenho, na verdade, e tudo o mais depois disso também. Na minha opinião, o código perderá sua elegância.
Há mais um fator pelo qual escrevi um comentário nesta postagem: o programa funciona perfeitamente bem, tudo é desenhado perfeitamente em cotações reais, dentro do prazo, sem bugs, mas no testador ele não quer. E quando algo não está claro, isso me deixa alarmado e estressado, por isso quero resolver o problema.
O arquivo do código editado está anexado. Ficarei extremamente grato se colegas mais competentes apontarem o motivo desse comportamento do testador.
Aparentemente, há um conflito com o array FractalDown_base[]. É estranho que isso não ocorra com os fractais superiores. De qualquer forma, modifiquei um pouco sua comparação:
for(n=LowerFractal_1_base+1; n<Bars(Symbol(),base_tf); n++) { // --- se for um valor não vazio, encerre o loop if(FractalDown_base[n]!=EMPTY_VALUE && FractalDown_base[n]<Low_base_tf[LowerFractal_1_base] ) break; }
Ou seja, adicionei a definição de High e Low e já comparei com eles. Dessa forma, tudo funciona bem no testador. O arquivo modificado está anexado.
Aparentemente, há um conflito com a matriz FractalDown_base[]. Estranhamente, isso não ocorre com os fractais superiores. De qualquer forma, alterei um pouco sua comparação:
Ou seja, adicionei a definição de High e Low e já comparei com eles. Dessa forma, tudo funciona bem no testador. O arquivo modificado está anexado.
Boa tarde, obrigado por seu tempo e atenção. Fiz o upload do arquivo anexado. Infelizmente, o testador ainda funciona incorretamente, o indicador faz a primeira construção e não reconstrói mais as linhas de resistência e suporte, não exibe fractais. Para testá-lo, eu produzi High_base_tf[UpperFractal_1_base] e Low_base_tf[LowerFractal_1_base] no comentário. Ele conta corretamente, tudo está bem com a lógica. Aparentemente, a falha está em algum lugar do desenho.
A varredura da tela, que mostra que novos fractais são formados, mas as linhas não são reconstruídas, está anexada no link.
***
Lá você também pode ver as linhas Low_base_tf[LowerFractal_1_base] e seus valores, que podem ser comparados com os valores de LowFractal_1_base (para valores baixos, para valores altos de forma semelhante). Tudo conta corretamente, mas NÃO há novas construções.
A varredura da tela, que mostra que novos fractais foram formados, mas as linhas não foram reorganizadas, está anexada no link.
***
Infelizmente, o link foi removido.
Infelizmente, o link foi removido.
Os links para sites de terceiros são proibidos.
Não são permitidos links para sites de terceiros.
Como posso publicar uma digitalização da tela do testador? Só consigo enviá-la em PDF, e sei que esse formato não é aceito no fórum.
Como posso publicar uma digitalização da tela do testador? Só consigo enviá-la em PDF, e sei que esse formato não é aceito no fórum.
Uma captura de tela é uma imagem. O que o PDF tem a ver com isso? Salve a captura de tela como uma imagem png e cole a imagem em sua postagem.
Os links para sites de terceiros são proibidos.
Vladimir, boa noite. Você é um programador experiente, a julgar por suas publicações e trabalhos. Poderia me orientar sobre a essência deste tópico - o programa não funciona no testador, mas funciona corretamente nos gráficos on-line. O autor não responde, aparentemente está ocupado.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Fractal_TL:
Indicador para desenho automático de linhas de tendência em fractais num determinado período.
Autor: Almat Kaldybay