[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 332
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
Estou tentando escrever um indicador. A idéia é simples: vamos para a média (força dos touros - força dos ursos). Naturalmente, por um certo período de tempo.
int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,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);
Buf_0[i]=MA_Bulls[i];
i--;
}
retornar;
}
Eu exibo apenas touros alisados Buf_0[i]=MA_Bears[i]; é feito para controlar em um determinado estágio de plotagem de índice. Nem mesmo EXATAMENTE. Se eu os alisar com um período de 1, eles de fato devem repetir os touros embutidos. Assim, concluí que algo está errado na linha MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i); não entendo o que exatamente...AJUDA-ME!!!! Já se passaram 3 dias de consulta de manuais e documentação. OBRIGADO!
Você deve primeiro formar as matrizes de dados de touros e ursos e depois alisá-los com o próximo ciclo, porque você ainda não os formou e já está usando alisamento, não há dados para alisar?
Primeiro forme as matrizes de dados de touros e ursos e depois use o ciclo seguinte para engomá-los, porque você ainda não os formou e já está usando suavização, e não há dados para suavizar?
Tradução de
costy_ писал(а) >>
Muito obrigado, estou me aproximando. Um ponto não está bem claro.
'14:56' - data em que a string literal está incompleta este é o aviso que recebi do computador.
Tanto quanto sei, ainda quer a data, mas eu não preciso de uma data específica. O que eu preciso é comparar o preço atual todos os dias com o preço a uma determinada hora no mesmo dia. Por favor, esclareça o ponto.
Por que você precisa chamá-los através do iCast? É para a unificação? Escreva um indicador-embalador separado para cada um deles e chame-os através do iCustom...
O problema é que mudei estes dois indicadores (AO e AC) e agora quero que as barras sejam coloridas de acordo com os indicadores modificados. Ou existe outra forma de fazê-lo? Eu comecei a MQL recentemente...
O problema é que eu refiz os dois indicadores (AO e AC), e agora quero que as barras sejam coloridas de acordo com os indicadores modificados. Ou existe outra forma de fazê-lo? Comecei a aprender MQL recentemente...
Então, o que você refez e chamou, qual é o problema? Por exemplo, se os indicadores modificados forem chamados de AO, AC, a chamada será
ou você pode adicionar seus próprios parâmetros
Muito obrigado, estou me aproximando. Um ponto não está bem claro.
'14:56' - data em que a string literal está incompleta este é o aviso que recebi do computador.
Tanto quanto sei, ainda quer a data, mas eu não preciso de uma data específica. O que eu preciso é comparar o preço atual todos os dias com o preço a uma determinada hora no mesmo dia. Por favor, esclareça o ponto.
costy_ писал(а) >>
Muito obrigado, estou me aproximando
.Um ponto não está bem claro.
14:56' - data literal string está incompleta - este é o aviso que recebi do computador.
Entendo que ele ainda quer a data, mas não preciso de uma data específica, preciso comparar o preço atual todos os dias com o preço de uma determinada hora do mesmo dia
.Favor esclarecer o ponto.
No entanto, quero saber se é possível manter a ligação até um certo tempo. Na MQL4, como se diz o preço de licitação às 14.00 de cada dia de negociação?
skifodessa 05.12.2009 14:07
Boa tarde a todos.
Por favor, me diga como calcular o número de cruzamentos de preço de um determinado nível. Quero que meu pedido abra após 3 (4,5...), mas não após a primeira travessia.
Obrigado.
------------------------------------------------------------
Você poderia tentar o algoritmo
Se (Preço da barra atual>nível e preço da barra anterior<nível)então {counter incrementado por um}
Se (contador>3) então {open order; reset counter to zero}
Agora vamos escrever o mesmo na língua usual (estou escrevendo apenas blocos. Você pode inseri-los nos lugares necessários)
Exterior int Chet=10; // após quantas travessias uma ordem deve ser aberta
Duplo Uroven externo=1,6566; // após o preço ter cruzado o nível para começar a contar.
Na função inicial, as condições serão aproximadamente as seguintes
int k;
if(Open[0]>Uroven && Open[1]<Uroven)k=k+1;// aqui consideramos uma travessia UP
if(k>Chet){OrderSend(.......);k=0};
Em geral, a questão não é muito difícil. O livro sobre MCL explica os princípios básicos da ALGORITHMICS
FOR Vinin escreveu >>.
Obrigado pela dica, mas isso não ajuda. Porque você acabou de substituir o loop While por um loop FOR.
FOR Urain escreveu(a) >>
As duas linhas seguintes estão formando o conjunto certo.
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Urain Você deve ter pensado que a função iMAOnArray deveria passar um array que já foi formado. Formá-lo com o loop FOR não ajudou. Porque não é a matriz que você passa para esta função (iMAOnArray), mas seu NOME. E a matriz é processada PESSOALMENTE.
mudando i na string MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i);
Eu resolvi o problema. É muito mais profundo do que parece. Se você aplicar este processamento somente no Expert Advisor, não haverá problemas, mas se você construir um gráfico usando-o, você terá um problema de qualquer maneira. A questão é que as matrizes são indexadas de forma inversa. A função iMAOnArray tem indexação direta (da esquerda para a direita), enquanto o gráfico é indexado da direita para a esquerda. Obrigado a Garfich por esta explicação.
FOR Vinin escreveu >>.
Obrigado pela dica, mas isso não ajuda. Porque você acabou de substituir o loop While por um loop FOR.
FOR Urain escreveu(a) >>
As duas linhas seguintes estão formando o conjunto certo.
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Urain Você deve ter pensado que a função iMAOnArray deveria passar um array que já foi formado. Formá-lo com o loop FOR não ajudou. Isso porque não é a matriz passada para esta função (iMAOnArray), mas seu NOME. E a matriz é processada PESSOALMENTE.
mudando i na string MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i);
Eu resolvi o problema. É muito mais profundo do que parece. Se você aplicar este processamento somente no Expert Advisor, não haverá problemas, mas se você usá-lo para construir um gráfico, você enfrentará problemas de qualquer maneira. A questão é que as matrizes são indexadas de forma inversa. A função iMAOnArray tem indexação direta (da esquerda para a direita), enquanto o gráfico é indexado da direita para a esquerda. Obrigado a Garfich por esta explicação.
Não sei qual era o problema, mas Vinin escreveu-o corretamente (não importa por ou enquanto), o principal é que primeiro o laço forma a matriz de dados e depois o próximo laço forma o iMA a partir dele,
e a string Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i); preenche apenas um i-ésimo valor da array
sem um loop, a matriz não será gerada.