[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 333
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Eu não vou discutir! Se você tentar, você verá o que está errado. Estou apenas escrevendo para aqueles que vão se deparar com este problema. É invertido no tempo, portanto, o gráfico é invertido no tempo. Estou afixando o texto do indicador. DIREITO. Veja o gráfico com entradas muito interessantes que podem ser detectadas por ele. Parece-me que ele entra mais cedo e com mais precisão do que o MASD
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 1
#indicador de propriedade_cores1 Vermelho
double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexBuffer(0,Buf_0);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
retornar;
}
duplo período externoPower=13;
duplo MA_Periodo externo=5;
int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Aplicado para sincronização de indexação na função iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Linha1[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMMA,i);
Line2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;
i--;
}
retornar;
}
Eu não vou discutir! Se você tentar, você verá o que está errado. Estou apenas escrevendo para aqueles que vão se deparar com este problema. É invertido no tempo, portanto, o gráfico é invertido no tempo. Estou afixando o texto do indicador. PRONTO. Veja o gráfico com entradas muito interessantes que podem ser detectadas por ele. Parece-me que ele entra mais cedo e com mais precisão do que o MASD.
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 1
#indicador de propriedade_cores1 Vermelho
double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexBuffer(0,Buf_0);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
retornar;
}
duplo período externoPower=13;
duplo MA_Periodo externo=5;
int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Aplicado para sincronização de indexação na função iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Linha1[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMMA,i);
Line2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;
i--;
}
retornar;
}
Pode ser aparafusado, mas pode ser feito de uma forma normal.
O indicador pode conter até 8 amortecedores. Algumas delas podem ser usadas para cálculos intermediários.
Entretanto, se o desempenho não for crítico, então sim, você pode fazer isso dessa maneira.
Você pode brincar ou pode fazer isso normalmente.
O indicador pode conter até 8 amortecedores. Alguns deles podem ser usados para cálculos intermediários.
Embora, se não for crítico para si mesmo e para o desempenho, então sim, você pode fazer isso dessa maneira.
A noção de normal é relativa. Assim é a noção de direito. Esta é mais uma questão filosófica. Tentei implementar o algoritmo de uma maneira OPTIMAL. A fim de construir um indicador em UM ciclo. Na minha opinião, é o menor carregamento de hardware, enquanto você pode obter o mesmo resultado.
>> E, quanto ao fato de que existem 8 buffers, e em tempo de guerra seu número pode chegar a 54 e meio, qualquer sapador sabe disso. :-)
Normal é relativo. Assim é o conceito de direito. Estas são questões mais filosóficas. Tentei implementar o algoritmo de uma maneira OPTIMAL. Para que o indicador seja construído em UM ciclo. Na minha opinião, ele carrega o hardware o menos possível quando o resultado ainda está correto.
Cerca de 8 buffers, e seu número em tempo de guerra pode chegar a 54 e meio, todo engenheiro sabe disso. :-)
É possível fazer tudo em um loop, e usar um número mínimo de buffers, mas isso é outra história.
Qualquer operação com um array (não um buffer) leva um tempo considerável. Portanto, foi mais fácil e mais rápido fazer várias voltas do que enfiar tudo em um só.
Mais rápido no sentido do funcionamento do indicador.
É possível fazer tudo em um loop, e usar um número mínimo de buffers, mas isso é toda uma outra conversa.
Qualquer operação com um array (não um buffer) leva muito tempo. Portanto, foi mais fácil e mais rápido fazer várias voltas do que enfiar tudo em um só.
Mais rápido no sentido do desempenho do indicador.
Diga-me, Vinin, você tentou dar uma olhada em sua idéia e ver o que ela desenha?
É possível fazer tudo em um ciclo e usar um número mínimo de amortecedores, mas isso é toda uma outra conversa.
Qualquer operação com um array (não um buffer) leva muito tempo. Portanto, foi mais fácil e mais rápido fazer várias voltas do que enfiar tudo em um só.
Mais rápido no sentido do desempenho do indicador.
Querido Vinin, você tentou dar uma olhada em sua idéia e descobri-la?
int start()
{
int i, limit=Bars-IndicatorCounted()-1;
para (i=limite;i>=0;i--){
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
}
para (i=limite;i>=0;i--){
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i);
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i);
}
retornar;
}
Eu entendo que na primeira etapa você forma uma série de touros e ursos. No segundo ciclo, estas duas matrizes são suavizadas. Se você gosta tanto, basta olhar para o resultado e você entenderá tudo.
Veja atentamente o GRÁFICO AGRÁFICO
Eu estava falando sobre este tipo de código indicador em geral.
Eu concordo. O resultado é bom e tudo está correto. Eu só precisava exibir a seguinte saída
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;
Deve ser feito em um loop separado. Eu prefiro sua versão porque prefiro o FOR loop. Obrigado por sua ajuda e atenção.