Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 196
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
Bem, tentarei fazer minha parte mais para educá-lo.
Eu me dirijo a você como "você" quando eu o enviar. Tenho uma foto do ponteiro...
Por favor me diga, não parece errado chamar a mesma função 5 vezes no mesmo carrapato? Mas isso é metade do problema. Esta função percorre todas as ordens. E tudo isso 5 vezes em um só tique... E eu conto 4 funções desse tipo. Não podemos pensar o suficiente em como encaixar mais 3 funções com o laço para procurar todas as ordens em um ciclo.
Aqui estão dois deles.
Isto é
Não está nem perto de ser seguido.Para entender isto, precisamos entender claramente a definição de trilha. Não consigo me lembrar literalmente, mas é aproximadamente "Moving StopLoss level following the price in order to decrease possible losses or increase "guaranteed" profit.
E isto
como é quando você dirige o Expert Advisor? Provavelmente quatro linhas... eles são necessários?
E a última coisa por hoje: você não precisa ter uma biblioteca na cabeça. É suficiente ter documentação e saber como utilizá-la. Ainda não consigo me lembrar de todos os parâmetros do iMA(_Symbol, _Period, ,,,,,) e não posso ir mais longe sem estudar a documentação. E assim, quase todas as funções. Felizmente, eles fizeram pontas de ferramentas não há muito tempo, o que não ajuda muito. Eu não estou tentando memorizar como escrever estes ou aqueles enumeros. Por isso, tenho que olhar sempre a documentação.
Alexey, obrigado pela informação. Sim, admito que o código não é ótimo, apenas não sou um programador e não conheço as sutilezas que você descreveu. Eu simplesmente não entendo tais nuances, não entendo como otimizar tudo isso, talvez o faça mais tarde, se eu seguir em frente. Agora eu sei exatamente que se eu começar a otimizar, só quebrarei tudo. Vi códigos de outros EAs em meu site - há tantas coisas lá! - Com certeza se você é um programador profissional, talvez seu código seja menos exigente para o terminal do que o meu, mas por enquanto não posso levar em conta seus comentários, pois realmente não entendo essas nuances de otimização da programação. E se você remover algumas chamadas para funções no código - com certeza, o Expert Advisor começaria o caos lá e abriria ordens quando não fosse necessário. Eu codifiquei lá, testei - nada deu errado ou deu errado, corrigi e como resultado o código final ficou assim, não tive tempo para otimização, como vocês entendem com minha bagagem de conhecimento.
Quanto ao trilho - o mais importante é que ele trilha o lucro, neste estágio de desenvolvimento estou satisfeito com ele)))) Com certeza o antigo e o novo código de trilha igualmente e a quantidade de acordos é a mesma - claro que concluí que a trilha tem funcionado, mas como fazê-lo corretamente neste ambiente onde a trilha funciona ninguém me disse, e eu não tenho nenhuma idéia sobre isso - todo o meu código é Lego construtor - ou seja, eu o montei a partir de materiais de vídeo tutoriais. Naturalmente, há um pouco do meu próprio - é o algoritmo do próprio Expert Advisor, enquanto o código e as funções inteiras não são invenções minhas, mas vieram dos tutoriais em vídeo da TradeLikeaPro e eu o "editei" por analogia e para minhas próprias necessidades - para meu próprio algoritmo. No final, eu consegui o que tinha.
Veja o gráfico de depósito - interessou-se e baixou a primeira versão. Copiou-o no MetaEdit. Tenho dois avisos. Primeiro, eu a eliminei substituindo int timeprev=0; por datetime timeprev=0; Porque esta variável contém data. A segunda indica em
Eu removi as três últimas cordas. Traduz-se de forma limpa. Vamos mais longe...
mudou (para esclarecimento, anexei o roteiro - execute-o, ele explicará) portanto
Aqui está o resultadoEsta função é removida - não há chamadas dela e seu corpo está vazio.
Tentei executá-lo e serrar:
Foi
Eu o mudei somente ao executar o Expert Advisor em dois gráficos com o mesmo símbolo e Slippage - por que mudar este parâmetro? Depois pensei sobre isso e aumentei os parâmetros 10 vezes. E eu removi a função OnInit. Afinal, eu só utilizo o código de cinco dígitos. Por quê? Porque o spread de quatro dígitos é de 3 pontos, portanto é de 30. E o spread de cinco dígitos é de apenas 12.
tornou-se mais claro.
Eu cortei o topo do cabeçalho. Foi o que eu deixei:
esta linha aqui mesmo.
levou-o para a reivindicação. É assim.
op=CalculateProfit(); if (op>=tp) { CloseAll(); }
Então eu joguei fora a descrição da variável op no início e a substituí por esta
if (CalculateProfit()>=tp) CloseAll();
No início da função OnTick há um par de linhas. Isto é para garantir que o processamento seja realizado apenas uma vez por barra em vez de cada carrapato
Então o MA é calculado. Isto deve ser estudado em detalhes. Para este fim, fiz um roteiro e exibi o resultado
Podemos ver que o quarto parâmetro MaShift e o último são somados, ou seja, número de barras = sua soma. Tomamos o MA do bar 2, o terceiro do final.
Vou analisar a questão mais adiante. Interessado?
...
Vou continuar procurando. Interessado?
Você continua falando nisso?
Já chega - as pessoas seguem o tema para aqueles que estão interessados e ele é desperdiçado.
Se você quiser que uma pessoa lhe responda, chame-a para a linha. Assim: @STARIJ. Mas você não precisa continuar levantando o assunto, editando seu último post.
Isso significa que alguém está sem sorte. Mais uma vez. Este é um roteiro, não um Expert Advisor ou indicador
Imaginei que - aparentemente o terminal não tinha memória suficiente - fechava alguns gráficos e funcionava.
Obrigado - de fato, os cálculos acontecem.
E se as variáveis não são do tipo int, mas bool , o que fazer?
Olá, poderia me dizer, por favor?
1 - é registro somente como pessoa física ou também pode ser como pessoa jurídica e existem quaisquer restrições e condições
2 - Existe alguma sincronização com as redes sociais, para ter uma única conta (nome de usuário e senha)
3 - Eu também vi uma função "colocar um widget em sua página, compartilhar o sinal" - estamos falando do site ou de outra coisa
Veja o gráfico de depósito - interessou-se e baixou a primeira versão. Copiou-o no MetaEdit. Tenho dois avisos. Primeiro, eu a eliminei substituindo int timeprev=0; por datetime timeprev=0; Porque esta variável contém data. A segunda aponta para
*
Resposta
Talvez tenha a ver com o fato de que o TP era do tipo int na aula de vídeo, mas eu o converti para o dobro e, portanto, o int permanece como está. OK, eu vou consertar isso. Mas como isso afeta a operação da EA? Na verdade, estas barras e tempo foram relevantes para a função TrailingStop do vídeo tutorial, mas como eu substituí esta função pela minha própria, ela simplesmente permanece como uma relíquia do código fonte e meu trailing stop não é na verdade baseado no tempo da barra.
Eu removi as três últimas linhas. Traduz-se de forma limpa. Eu fui mais longe...
Eu o mudei (para esclarecimento anexei um roteiro - execute-o, ele explicará) desta forma
Aqui está o resultado
*Resposta.
Para onde foi esse pedaço de código?
return(INIT_SUCCEEDED); }
Talvez devesse ser assim?
nulo OnInit()
{
if(Dígitos == 3 || Dígitos == 5)
{
Passo *= 10;
TrailingStep *= 10;
TrailingStop *= 10;
Slippage *= 10;
}
return(INIT_SUCCEED);
}
Mas por que você fez TakeProfit do tipo int? Isso significa que será lucro em pontos, enquanto a função CalculateProfit() é do tipo duplo, então eu fiz TakeProfit do mesmo tipo para torná-los consistentes.
Eu deletei esta função - não há chamadas dela e seu corpo está vazio
*
Resposta
No código, há a função CloseAll() vazia. Pensei que estava de alguma forma relacionada a esta função
*
Resposta
Ok, vamos removê-lo.
Tentei executá-lo e serrar:
Foi
às custas de fazer mudanças - bem apenas acrescentou comentários e removeu o exterior da Magic
*
Resposta
Sim, talvez o externo seja redundante porque nunca o mudei e nem o Slippage - tudo isso é do código fonte do vídeo tutorial
- nós o alteramos somente quando executamos a EA em dois gráficos com a mesma ferramenta e Slippage - por que alterar este parâmetro? Depois pensei sobre isso e aumentei os parâmetros 10 vezes. E eu removi a função OnInit. Afinal, eu só utilizo o código de cinco dígitos. Por quê? Porque o spread de quatro dígitos é de 3 pontos, portanto é de 30. Em um spread de cinco dígitos, são apenas 12.
*
A resposta é .
Esta é a configuração padrão para que a EA trabalhe com todas as moedas. Eu vou manter Oninit ().
tornou-se mais claro.
Eu cortei o cabeçalho no topo. Aqui está o que eu deixei:
*
Resposta
Este cabeçalho é feito por padrão do editor. Vou deixar as coisas como estavam, caso algo não passe no corretor ou no terminal por causa da ausência dessas linhas.
Eu movi esta linha
passou para a reivindicação. Foi assim
Depois removi a descrição da variável op no início e a substituí por
*
Resposta
É bastante lógico.
No início da função OnTick, há um par de linhas. Isto é para garantir que o processamento seja realizado apenas uma vez por barra em vez de cada carrapato
Então o MA é calculado. Isto deve ser estudado em detalhes. Para este fim, fiz um roteiro e produzi o resultado.
Você pode ver que o quarto parâmetro MaShift e o último parâmetro são somados, ou seja, número de barras = sua soma. Tomamos o MA do bar 2, o terceiro do final.
*
Resposta
Devido ao fato de eu ter mudado o trailing - data/hora Moving Average não é relevante, acho eu. É uma relíquia do código fonte, eu costumava tentar arrastá-lo até a última das 3 (três) ordens abertas. O problema é que se o mercado vai na direção errada pelo valor de STep, a EA abre uma contra-ordem e então se o mercado continua na direção oposta, uma terceira ordem do tipo da segunda posição é adicionada, Ou vice-versa, se o preço for retornado, então a terceira ordem será aberta com o primeiro tipo de ordem (compra ou venda). Lá, o rastreamento é feito em três ordens usando a função CalculateProfit(); entretanto, se a primeira ordem abrir com sucesso e o preço se mover como deveria, nesta situação, o rastreamento na barra seria feito usando a data como no tutorial em vídeo - repito, mesmo em 1 ordem de rastreamento usando a função Calculateprofit()
Vou analisar a questão mais adiante. Interessado?
*
Resposta
Sim, eu tenho alguns problemas com o arrasto. Parece que ele segue o rastro, mas não quero que ninguém entenda o que eu fiz com ele. Trailing() funciona sem barras e sem data/hora - funciona com Trailing().
O período de MA é de aproximadamente 200, mas a questão é que é um valor ajustável. E o parâmetro-chave Valor parece estar faltando - expliquei seu significado na descrição do arquivo README.
Obrigado por se preocupar com tudo isso. Na verdade, o Expert Advisor não é realmente tão bom, mecânico, eu diria. Mas, basicamente, se você o montar e ocasionalmente monitorar seu trabalho, ele pode ser bastante bom. O tempo o dirá. Provavelmente, eles podem ganhar alguma coisa, mas vão falir sem sequer piscar um olho e não vão enviar uma mensagem de texto. Eu nem sequer me preocupei com isso, embora minha idéia fosse enviar um SMS se o saque for superior a 30% do depósito - isto significa que 3 pedidos já foram abertos e o mercado começou a contra-mover-se, nesta situação, cheira a parafina. Todos os outros casos são resolvidos pelo Consultor Especialista, se este for ajustado para o histórico comportamental do quadro de instrumentos comerciais.
Fiz recomendações (mas não todas) de mudanças no código do Bloco de Notas por enquanto. Por favor, verifique se eu corrigi o código?
Eu sou a favor da otimização, só que eu não considerei os momentos em que você removeu oninit - eu preciso disso para poder testar e trabalhar em todas as moedas))))
Olá, eu só recentemente comecei a aprender Mql4. Se eu lhe fiz uma pergunta no lugar errado, por favor, me encaminhe para o assunto certo. Minha pergunta é a seguinte: como trabalhar com indicadores que constroem várias zonas, retângulos, etc. Posso programar um cruzamento de linhas ou preço mais alto ou mais baixo, por exemplo, MA.) Anexei um indicador na parte inferior, o buffer é quatro e existem oito tipos de zonas. Por isso, não consigo descobrir como codificar uma quebra ou quebra dessas zonas.
Se você quiser saber mais sobre o programador, você deve olhar os exemplos e usar os botões coloridos. Você pode perguntar: Como você obtém o código mql4 como exemplo de programação e como você sabe o que fazer com ele?) Talvez você progredirá.
geratdc:
...
Sim, eu tenho algumas perguntas sobre a rede de arrasto. Parece arrasto, mas ninguém quer saber o que eu fiz com ele.
...
Você pode precisar fazer o download de vídeos tutoriais de programação mql4 da TradeLikeApro no RuTracker. Eu acho que o princípio básico do mql4 é que você não precisa fazer nada complicado e não tem que fazer nada). Talvez você progredirá.
Assistiu ao vídeo sobre como trabalhar com o indicador externo, escreveu um pequeno código para ver os valores dos amortecedores no testador:
nulo OnTick()
{
duplo Buf1=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",0,1);
duplo Buf2=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",1,1);
duplo Buf3=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",2,1);
duplo Buf4=iCustom(NULL,0, "Shved-Supply-and-Demandand-e600",3,1);
Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);
}
As zonas aparecem e desaparecem no modo de visualização. Mas o valor dos amortecedores é sempre zero de qualquer forma. Não há maneira de formalizar essas zonas no código?
Talvez exista uma função, além do iCustom, que seria adequada para tais indicadores? Talvez alguém tenha escrito corujas com tais indicadores?