Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1207
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
por que este ciclo não termina quando ... (acrescentei a segunda condição para i < 2000 quando percebi que o laço é infinito) MQL4
cv * tvp * (double)stop < ml
por que este ciclo não termina quando ... (acrescentei a segunda condição para i < 2000 quando percebi que o laço é infinito)
O loop não terminará até
cv * tvp * (double)stop < ml
Para que o loop termine quando esta condição for preenchida, podemos escrever o seguinte no corpo do loop
ou
Na MQL4 somente desta forma:
Resultado:
Mais uma vez obrigado por sua ajuda. Ficaria muito grato se você também pudesse me dizer como fazer o seguinte...
Que função ou construção de linguagem pode ser usada para calcular o valor de índice de um elemento de matriz que tinha o índice antes da ordenação.
Aqui, eu tenho a matriz A[] antes da classificação (a linha superior) e a mesma matriz após a classificação. Um elemento com valor 5 antes da ordenação estava no índice 9
, e um elemento com valor 5 após a ordenação está no índice 3.
Eu encontro uma célula com valor 5 na matriz ordenada e a função salva o número índice desta célula na matriz ordenada para W, que é igual ao índice 3
ArraySort(А,10,0,MODE_ASCEND);
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND);
PERGUNTA: Após o ArrayBsearch(), como o valor de índice de uma célula com valor 5 pode ser armazenado em uma variável que tenha uma matriz não classificada.
Ou seja, economize o valor de 9.
Obrigado por sua ajuda.
Alexey Viktorov
Mihail Matkovskij
Obrigado!
Olá a todos. Quem sabe como definir um valor negativo em um indicador personalizado e fazê-lo funcionar? ou seja, "Mude o indicador em relação à tabela de preços".
Exemplo: Se você colocar um valor -4 no indicador de Média Móvel, ele se move em relação ao gráfico à esquerda - e funciona.
Mas se você colocar este valor no código do indicador - então o indicador deixa de funcionar. e mostra todos os valores TF em vermelho.
Obrigado novamente por sua ajuda. Ficaria muito grato se você também pudesse me dizer como fazer o seguinte...
Que função ou construção de linguagem pode ser usada para calcular o valor de índice de um elemento de matriz, que este elemento tinha antes da ordenação.
Aqui, eu tenho a matriz A[] antes da classificação (a linha superior) e a mesma matriz após a classificação. Um elemento com valor 5 antes da ordenação estava no índice 9
, e um elemento com valor 5 após a ordenação está no índice 3.
Eu encontro uma célula com valor 5 na matriz ordenada e a função salva o número índice desta célula na matriz ordenada para W, que é igual ao índice 3
ArraySort(А,10,0,MODE_ASCEND);
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND);
PERGUNTA: Após o ArrayBsearch(), como o valor de índice de uma célula com valor 5 pode ser armazenado em uma variável que tenha uma matriz não classificada.
Ou seja, economize o valor de 9.
Obrigado por sua ajuda.
mas não separe os dados ao acaso e apenas para nenhum propósito global.
A partir do projeto atual: pegue uma (breve) matriz, a saída será índices de elementos na ordem correta:
{
for(int i=0;i<5;i++)
index[i]=i;
for(int i=0;i<4;i++) {
for(int j=1;j<5;j++) {
if (data[index[i]]>data[index[j]]) {
int tmp=index[i];
index[i]=index[j];
index[j]=tmp;
}
}
}
}
para matrizes maiores, precisamos mudar o algoritmo de classificação (borbulhar não funciona para matrizes maiores) - mudá-lo.
A mensagem principal é: não toque nos dados da fonte. Operar ou com referências ou, melhor ainda, com índices de matriz. Caso contrário, a informação é perdida, o que será muito necessário mais tarde.
Obrigado novamente por sua ajuda. Ficaria muito grato se você também pudesse me dizer como fazer o seguinte...
Que função ou construção de linguagem pode ser usada para calcular o valor de índice de um elemento de matriz, que este elemento tinha antes da ordenação.
Aqui, eu tenho a matriz A[] antes da classificação (a linha superior) e a mesma matriz após a classificação. Um elemento com valor 5 antes da ordenação estava no índice 9
, e um elemento com valor 5 após a ordenação está no índice 3.
Eu encontro uma célula com valor 5 na matriz ordenada e a função salva o número índice desta célula na matriz ordenada para W, que é igual ao índice 3
ArraySort(А,10,0,MODE_ASCEND);
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND);
PERGUNTA: Após o ArrayBsearch(), como o valor de índice de uma célula com valor 5 pode ser armazenado em uma variável que tenha uma matriz não classificada.
Isso é para economizar o valor de 9.
Obrigado por sua ajuda.
Para isso você precisa responder duas perguntas.o que você fará se:
1. Haverá múltiplos valores de 5, em diferentes células da matriz.
2. Não haverá um valor 5 na matriz.
Como a funçãoArrayBsearch (para dados classificados), no primeiro caso, dará o primeiro índice encontrado onde o valor da célula é 5, no segundo caso, dará um elemento próximo ao valor 5. Como você gostaria de lidar com uma matriz não classificada não está claro para mim.
Olá a todos. Quem sabe como definir um valor negativo em um indicador personalizado e fazê-lo funcionar? ou seja, "Mude o indicador em relação à tabela de preços".
Exemplo: Se você colocar um valor -4 no indicador de Média Móvel, ele se move em relação ao gráfico à esquerda - e funciona.
Mas se você colocar este valor no código do indicador, o indicador deixa de funcionar. e mostra valores vermelhos para todos os TFs.
SetIndexShift.
O turno também é especificado no iMA:
iMA
Devolve o valor do indicadortécnico da Média Móvel.
duploiMA(
símbolo de corda,// nome do símbolo
inttimeframe,// prazo
intma_period,// período
intma_shift,// média de turnos
intma_method,// método de cálculo da média
intapplied_price,// tipo de preço
intturno// turno
);
Parâmetros
símbolo
[em] Nome do símbolo cujos dados serão usados para calcular o indicador.NULL significa símbolo atual.
cronograma
[em] Período. Pode ser um dos valores da enumeraçãoENUM_TIMEFRAMES. 0 significa o período do gráfico atual.
ma_período
[em] Período de cálculo da média para o indicador.
ma_shift
[em] Mudança de indicador em relação à tabela de preços.
ma_método
[em] Método de cálculo da média. Pode ser qualquer um dos valores da enumeraçãoENUM_MA_METHOD.
preço_aplicado
[em] Preço aplicado. Pode ser qualquer valor da enumeraçãoENUM_APPLIED_PRICE.
turno
[em] Índice do valor obtido do buffer de indicadores (deslocamento relativo à barra atual por um número especificado de períodos de retorno).
Valor retornado
Valordo indicador técnico médio móvel.
Exemplo:
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
https://docs.mql4.com/ru/indicators/ima
Aqui está um exemplo pronto, mas na MQL5: https://www.mql5.com/ru/docs/indicators/ima ,
que pode ser facilmente traduzida em MQL4.
Não há nenhuma mudança nas configurações do indicador. Entrei no código e coloquei o turno -4 no código e o indicador parou de funcionar - ele mostra que todas as TFs estão vermelhas. Estou aqui sentado me perguntando por quê.
Para fazer isso, você precisa responder a duas perguntas.O que você fará se
1. Haverá vários valores de 5, em diferentes células da matriz.
2. O valor 5 não estará na matriz.
Como a funçãoArrayBsearch (para dados classificados), no primeiro caso, dará o primeiro índice encontrado onde o valor da célula é 5, no segundo caso, dará um elemento próximo ao valor 5. Como você gostaria de lidar com uma matriz não classificada não está claro para mim.
Muito obrigado por sua resposta rápida. No meu caso, cada valor de um elemento de matriz é único e existe em uma única instância. Ou seja, o valor 5, como outros valores, não é repetido.
No meu caso, o valor 5 pode não existir em uma matriz não classificada. Isso significa que algumas células em array não selecionado podem estar vazias.
Mas se o valor 5 não estiver em array não selecionado, então não posso especificar o valor 5 como segundo parâmetro na função ArrayBsearch(). Somente valores que necessariamente existem em array não selecionado entram nesta função.
Obrigado por sua ajuda