[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 842
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
Olá a todos! recentemente se interessaram por médias móveis. Encontrei alguma combinação de médias móveis e condições comerciais e decidi verificar meu TS, se é lucrativo ou não, e otimizá-lo, se for o caso. Mas meu Consultor Especialista não abriu negócios durante os testes. Passei a noite inteira tentando descobrir a solução e decidi perguntar a vocês, caros programadores. Para entender como funciona a EA, explicarei brevemente meu TS: no gráfico com EMA(13) e EMA(55), se uma barra cruzou EMA(13) e todas as barras seguintes estavam acima/abaixo de EMA(13), então ao tocar o preço com MA(13) abrimos uma posição na direção das barras anteriores (depois de cruzar + pelo menos 9 e não mais que 23). Take Profit 60 pontos, Stop Loss = EMA(55) mais cinco pontos negativos. Essa é na verdade toda a estratégia. Para melhor ilustração, eu coloquei um exemplo:
E aqui está o código do Conselheiro Especialista:
Se alguém puder ajudar, por favor. Eu também lhe darei a própria EA
Muitas funções podem ser coletadas em um ciclo para abrir, mudar, fechar posições, etc.
Aqui está um exemplo simples:
- Pergunta: é correto usar "quebrar" em vez de "devolver" aqui? Há alguma diferença?
Muitas funções podem ser coletadas em um ciclo para abrir, mudar, fechar posições, etc.
Aqui está um exemplo simples:
- Pergunta: é correto usar "quebrar" em vez de "devolver" aqui? Há alguma diferença?
A partir de https://docs.mql4.com/ru/basis/operators/break:
"A declaração de interrupção interrompe a execução do interruptor externo aninhado mais próximo, enquanto, ou por declaração". O controle é dado ao operador que segue aquele que termina".
A partir de https://docs.mql4.com/ru/basis/operators/return:
"A declaração de retorno encerra a função atual e devolve o controle ao programa de chamada".
Resposta: É correto usar "intervalo" aqui.
A partir de https://docs.mql4.com/ru/basis/operators/break:
"A declaração de interrupção encerra a execução do interruptor externo aninhado mais próximo, enquanto ou para declaração". O controle é dado ao operador que segue aquele que termina".
A partir de https://docs.mql4.com/ru/basis/operators/return:
"O operador de retorno encerra a função atual e retorna o controle ao programa de chamada".
Resposta: é correto usar "break" aqui.
Na verdade, eu mesmo uso break, mas pensei que o retorno significava uma mudança de carrapato (e break não significava).
Na realidade, até que a ordem mude, haverá uma mudança de tick, portanto, para que o testador possa simular corretamente a situação
você precisa usar retorno. Certo?
Talvez eu esteja enganado, mas gostaria de entendê-lo.
Na verdade, eu mesmo uso o break, mas pensei que o retorno significava uma mudança de carrapato (enquanto o break não significa).
Na realidade, até que a ordem mude, a mudança de tick ocorrerá e, portanto, o testador deve usar o retorno para simular corretamente a situação
você precisa usar retorno. Certo?
Talvez eu esteja enganado, mas quero entendê-lo.
Vamos ler na documentação: "O operador de retorno deixa de executar a função atual e retorna o controle ao programa de chamada".
Se a função de início() atual, leia novamente a documentação:
https://docs.mql4.com/ru/runtime/start
"Quando uma nova cotação chega, a função de Expert Advisors e indicadores personalizados é executada. Se na chegada de uma nova cotação, a função iniciar(), executando a cotação anterior, é executada, então a cotação recebida será ignorada pelo Expert Advisor. Todas as novas citações, vindas durante a execução do programa, são ignoradas até que a próxima execução da função start() seja concluída. Depois disso, a função start() será lançada somente após a próxima nova cotação.
Leia na documentação: "A declaração de retorno encerra a função atual e devolve o controle ao programa de chamada".
Se a função atual for iniciada(), leia novamente na documentação:
https://docs.mql4.com/ru/runtime/start
"Quando novas citações são feitas, a função começa() para Expert Advisors anexos e indicadores personalizados. Se na chegada de uma nova cotação, a função iniciar(), executando a cotação anterior, é executada, então a cotação recebida será ignorada pelo Expert Advisor. Todas as novas citações, vindas durante a execução do programa, são ignoradas até que a próxima execução da função start() seja concluída. Depois disso, a função start() será lançada somente após a próxima nova cotação.
Gostaria que você colocasse isso em suas próprias palavras. Eu não entendo o que você quer dizer.
No testador, se for terminado com pausa e alguma outra função o seguir, será executado no mesmo tick. Mas, na realidade, vários carrapatos podem mudar durante este tempo (enquanto a ordem está sendo modificada). É por isso que eu acho que o retorno é mais realista. Não é?
Gostaria que você tivesse colocado em suas próprias palavras. Eu não entendo o que você quer dizer.
Se for terminado com pausa e seguido por alguma outra função, será executado no mesmo tick. Mas, na realidade, vários carrapatos podem mudar durante este tempo (enquanto a ordem está sendo modificada). É por isso que eu acho que o retorno é mais realista. Não é assim?
start() começa no início de um tick e pode não estar terminado no início do tick seguinte.
break termina para, e o retorno termina a função. Se não houver operadores depois de para, não há diferença no uso e retorno para este algoritmo.
Mas cada operador tem seu propósito. E o uso não intencional de um operador é como uma espingarda descarregada.
Novamente, no algoritmo de loop, por alguma razão não há necessidade de continuar executando a função, podemos usar o retorno.
Em outras palavras, se o algoritmo requer uma quebra no laço, então a quebra é usada, mesmo que a função ainda seja terminada após o laço.
start() começa a funcionar no início de um tick e seu trabalho pode não terminar no início do tick seguinte.
break completa para, return completa a função. Se não houver operadores depois de para, não há diferença entre usar para e retornar para este algoritmo.
Mas cada operador tem seu propósito. E o uso não intencional de um operador é como uma espingarda descarregada.
Novamente, no algoritmo de loop, por alguma razão não há necessidade de continuar executando a função, podemos usar o retorno.
Em outras palavras, se o algoritmo exigir que rompamos o laço, nós colocamos a quebra, mesmo que a função termine após o laço de qualquer maneira.
Ocorreu-me um pensamento, já que tudo isso foi destinado apenas ao testador, podemos (quando necessário) fazer o seguinte:
Obrigado!
Surgiu uma idéia - já que isto só foi iniciado para um testador, você poderia (quando apropriado) fazer o seguinte:
Obrigado!
você pode