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
Obrigado cloudbreaker! Isto está começando a tornar um pouco mais divertido, eu não sabia que você pode chamar uma função dentro de um retorno (mesmo que provavelmente esteja no livro mql, assim como tudo o resto teórico). Helicóptero com bom aspecto EC 155! Por que 'felizmente', você não quer seu próprio helicóptero?
Pergunta Aero HC2:
Tenho 3 roteiros para minha estratégia até aqui. 2 são uni-direcionais, 1 é bidirecional (que é o que estamos trabalhando aqui).
A partir de sua experiência com o MT4, devo esperar sérios problemas se eu anexar diferentes scripts a 5 ou mais pares na tela (1 script por par). Será mais fácil para mim do que programar ou mudar 1 script grande e fazer com que um escolha o par que eu quero (pois isso exigiria mudanças diárias no código)?
Pergunta Aero HC2:
Tenho 3 roteiros para minha estratégia até aqui. 2 são uni-direcionais, 1 é bidirecional (que é o que estamos trabalhando aqui).
A partir de sua experiência com o MT4, devo esperar sérios problemas se eu anexar diferentes scripts a 5 ou mais pares na tela (1 script por par). Será mais fácil para mim do que programar ou mudar 1 script grande e fazer com que um escolha o par que eu quero (pois isso exigiria mudanças diárias no código)?
Assumindo aqui que estamos falando de uma única estratégia de negociação entre pares de moedas:-
Eu prefiro fazer meu EAs par-agnóstico - ou seja, o mesmo EX4 pode ser anexado a qualquer par.
-Assim, temos apenas uma base de código para manter.
-A lógica permanece tão simples quanto possível.
Assumindo aqui que estamos falando de uma única estratégia comercial entre pares de moedas:-
Eu prefiro fazer meu EAs par-agnóstico - ou seja, o mesmo EX4 pode ser anexado a qualquer par.
-Assim, temos apenas uma base de código para manter.
-A lógica permanece tão simples quanto possível.
Sim, isso seria o ideal, mas eu estabeleço um filtro manual para cada moeda a cada dia, não baseado em indicadores, além de que ele acaba sendo 3 estratégias, embora a idéia seja a mesma. Isto tornaria o código realmente grande em meu entendimento e incômodo de ajustar diariamente se tivéssemos que colocar tudo junto. Para o futuro próximo eu programo o filtro para cortar meu tempo de trabalho, mas sempre há coisas que você não pode programar (90% para ser programado, o resto é o que o cérebro é para mim. Embora eu tenha perseguido o 'Santo Graal' antes de tentar programar tudo e chegar ao modelo perfeito haha, olhando na direção errada).
Estou lançando as 2 estratégias ao vivo nesta segunda-feira, à medida que o código sobre elas é feito. Elas foram executadas manualmente por meu pai na lei e por mim mesmo um pouco, a codificação deve trazer resultados mais altos. Para a estratégia combinada, posso lançar 2 EA's, acho que no mesmo gráfico (um para longo e outro para curto), mas ainda quero aprender, portanto, vou retomar o processo de codificação. Portanto, espero que muitas perguntas venham muito em breve!
Em que país você está baseado? Estou em Londres, Reino Unido.
Hey quebrador de nuvens e outros mt4 gurus aqui!
Pergunta: Tenho 2 roteiros (um é para comprar outro é para abreviar). Eu queria usar ambos hoje em 3 pares. Agora, como apenas 1 EA pode ser anexado a um gráfico, abri 6 gráficos (2 por par), e anexei os scripts a eles. Entretanto, apenas 1 script foi executado. Não tenho a menor idéia do motivo. Alguma ajuda, por favor?
Resumindo: 2 EAs, um só compra outro só abrevia, regras muito básicas (cruz de ouro em emas e pronto), o lucro leva 20 pips, sem stop loss. Por que apenas 1 é executado? Eu verifiquei que os Expert Advisors foram ativados, e todos os scripts tinham caras sorridentes ao lado deles nos gráficos.
Hey quebrador de nuvens e outros mt4 gurus aqui!
Pergunta: Tenho 2 roteiros (um é para comprar outro é para abreviar). Eu queria usar ambos hoje em 3 pares. Agora, como somente 1 EA pode ser anexado a um gráfico, abri 6 gráficos (2 por par), e anexei os scripts a eles. Entretanto, apenas 1 script foi executado. Não tenho a menor idéia do motivo. Alguma ajuda, por favor?
Resumindo: 2 EAs, um só compra outro só abrevia, regras muito básicas (cruz de ouro em emas e pronto), o lucro leva 20 pips, sem stop loss. Por que apenas 1 é executado? Eu verifiquei que os Expert Advisors foram ativados, e todos os scripts tinham caras sorridentes ao lado deles nos gráficos.
O que dizem os arquivos de log? ou seja, o que está no diretório de logs e o que está no diretório de experts?
Você está recebendo alguma mensagem "Trade Context Busy"? Se sim, então eu recomendaria adicionar alguma lógica fazendo uso da função IsTradeAllowed().
Se não, então eu recomendaria que você lascasse seus EAs com declarações Print().
O que dizem os arquivos de log? ou seja, o que está no diretório de logs e o que está no diretório de especialistas?
Você está recebendo alguma mensagem "Trade Context Busy"? Se sim, então eu recomendaria adicionar alguma lógica fazendo uso da função IsTradeAllowed().
Se não, então eu recomendaria que você lascasse seus EAs com declarações Print().
hey cloudbreaker! obrigado por ter vindo para resgatar!
1. O que você quer dizer com diretório de log? Como chegar a esses dois? (Eu tentei abri-lo via C>ProgramFiles>MT4>Experts>Logs mas a pasta aparece vazia).
Ei, quebra-nuvens! obrigado por terem vindo resgatar!
1. O que você quer dizer com diretório de log? Como chegar a esses dois? (Eu tentei abri-lo via C>ProgramFiles>MT4>Experts>Logs mas a pasta aparece vazia).
Ei, quebra-nuvens!
Já passei por seus comentários sobre codificação muitas vezes (tenho todos eles postados na minha parede), tentando entender e remendar tudo junto, mas ainda assim completamente perdido. Até onde pude chegar foi copiar a função MyOrderCount de outra EA, mas ainda não tenho idéia de como integrar isso no código. Estou completamente fora do meu alcance, mas isso não significa que não possamos progredir. Se você pudesse me ajudar a construir o código pouco a pouco (e me direcionar para talvez coisas mais específicas que eu mesmo pudesse construir também), então faremos o código e eu aprenderei muito mais rápido.
Anexei o código até onde consegui com ele, e também o Mapa do Desenho do Programa da forma como o vejo. Não se preocupe com as coisas menores como parênteses no código, eu os verificarei duas vezes com o bloco de notas++ à medida que formos avançando.
A prioridade principal, é se você pudesse me ajudar passo a passo a integrar o código MyOrderCount no restante, e por favor, explique tudo pouco a pouco à medida que vamos avançando. Ou você também pode me enviar para partes específicas do livro ou qualquer coisa do gênero, se achar apropriado. Desta forma, progredimos muito mais rápido.
Obrigado!
ps: me avise se o mapa do programa não anexou
ps: por favor ignore os comentários // aleatórios no código, são de notas antigas
Ei, quebra-nuvens!
Já passei por seus comentários sobre codificação muitas vezes (tenho todos eles postados em minha parede), tentando entender e remendar tudo junto, mas ainda assim completamente perdido. Até onde pude chegar foi copiar a função MyOrderCount de outra EA, mas ainda não tenho idéia de como integrar isso no código. Estou completamente fora do meu alcance, mas isso não significa que não possamos progredir. Se você pudesse me ajudar a construir o código pouco a pouco (e me direcionar para talvez coisas mais específicas que eu mesmo pudesse construir também), então faremos o código e eu aprenderei muito mais rápido.
Anexei o código até onde consegui com ele, e também o Mapa do Desenho do Programa da forma como o vejo. Não se preocupe com as coisas menores como parênteses no código, eu os verificarei duas vezes com o bloco de notas++ à medida que formos avançando.
A prioridade principal, é se você pudesse me ajudar passo a passo a integrar o código MyOrderCount no restante, e por favor, explique tudo pouco a pouco à medida que vamos avançando. Ou você também pode me enviar para partes específicas do livro ou qualquer coisa do gênero, se achar apropriado. Desta forma, progredimos muito mais rápido.
Obrigado!
ps: me avise se o mapa do programa não anexou
ps: por favor ignore os comentários // aleatórios no código, são de notas antigas
Oi Niko
Permitam-me acrescentar meus dois pences a esta discussão,
Como um programador antigo, virtualmente antigo :), com um pouco de experiência de ensino e treinamento, encontrei um monte de código ruim em meu tempo. Um erro comum que leva a um código mal escrito é a falta de planejamento. Ele pode estar afirmando o óbvio, mas você realmente precisa especificar o que quer fazer antes de começar a tentar codificá-lo. Isto pode parecer um trabalho extra, mas lhe poupará muito tempo no longo prazo e produzirá um código mais confiável, mais compreensível e de mais fácil manutenção.
Uma técnica muito útil para especificar o código do computador é conhecida como Pseudo Codificação. Basicamente, é apenas um conjunto lógico de instruções informáticas como instruções escritas em inglês simples. Não há nenhum formato específico necessário, mas você pode usar o jargão típico de programa de computador que é encontrado de uma forma ou de outra em praticamente todas as linguagens de programação de computador.
Aqui está um exemplo de algum Pseudo Code para cozinhar queijo e macarrão. Eu o peguei de um artigo "Intro to Programming by Patrick Nouvion" no site do IBFX. O artigo inteiro provavelmente vale a pena ser lido. http://www.ibfx.com/ibfxu/catalog/programming/pro1010.aspx
INICIAR
Encontrar leite e manteiga e caixa Kraft
Se encontrado continuar
caso contrário, enviar criança para a loja
Encontrar Pote em tábua de copos
Se for encontrado, peça à esposa para ajudar a encontrá-lo.
Encontre o fogão
Se encontrado continuar
caso contrário, peça pizza
Verificar se há um queimador disponível
Se disponível, continuar
senão, fazer uso
Ligue o fogão para o alto
Encontrar Água
Se encontrado continuar
caso contrário, peça pizza
Colocar Água na panela
Certifique-se de que o fogão esteja quente
se o calor continuar
caso contrário, verifique se está conectado
senão chame o reparador e peça pizza
Coloque a panela no queimador
se você tiver sal, acrescente uma pitada de sal
se não continuar
se você tiver pimenta, acrescente uma pitada de pimenta
se não continuar
enquanto a água não está fervendo espera
caixa Kraft aberta
adicionar o macarrão da caixa à panela
esperar 8 minutos
enquanto espera, se a panela ferver, abaixe o calor e sopre sobre ela
Encontrar o coador
Macarrão de drenagem em coador
voltar ao pote
adicionar conteúdo de embalagem de queijo
adicionar manteiga
adicionar 1 colher de sopa de leite
mexer para combinar
se for muito espesso, acrescentar 1 colher de sopa de leite; se não, comer
FIM
Se eu mesmo estivesse escrevendo este pseudo-código, eu mesmo o refinaria um pouco mais, dividindo-o em blocos funcionais e usando um pouco de indentação para torná-lo "Look Pretty". Por exemplo
BLOCO DE INÍCIO - Preparar água fervente
BLOCO FINAL - Preparar a água de aparafusamento
e assim por diante....
Niko, eu o elogio por querer aprender a escrever seu próprio código. Em minha experiência, a maneira mais rápida e fácil de aprender é fazer o que você está fazendo e apenas tentar. O que eu sugeriria, porém, é que você dê um breve passo atrás e escreva o que você quer alcançar em pseudo-código. Isto deve ajudá-lo a deixar claro o que você está tentando alcançar exatamente.
Uma vez que você tenha feito isso, talvez queira colocá-lo de volta aqui para que eu ou outra pessoa o vejamos. Uma vez que você tenha o pseudo-código certo, então você pode começar a convertê-lo para o código MT4. Tentar fazer tudo de uma só vez é um salto muito grande, especialmente quando você é um iniciante.
A propósito, meu pseudo-código nunca é desperdiçado. A maior parte dele termina como comentários em meu código acabado.
Boa sorte!
Tim Wilson
Ei, quebra-nuvens!
Já passei por seus comentários sobre codificação muitas vezes (tenho todos eles postados em minha parede), tentando entender e remendar tudo junto, mas ainda assim completamente perdido. Até onde pude chegar foi copiar a função MyOrderCount de outra EA, mas ainda não tenho idéia de como integrar isso no código. Estou completamente fora do meu alcance, mas isso não significa que não possamos progredir. Se você pudesse me ajudar a construir o código pouco a pouco (e me direcionar para talvez coisas mais específicas que eu mesmo pudesse construir também), então faremos o código e eu aprenderei muito mais rápido.
Anexei o código até onde consegui com ele, e também o Mapa do Desenho do Programa da forma como o vejo. Não se preocupe com as coisas menores como parênteses no código, eu os verificarei duas vezes com o bloco de notas++ à medida que formos avançando.
A prioridade principal, é se você pudesse me ajudar passo a passo a integrar o código MyOrderCount no restante, e por favor, explique tudo pouco a pouco à medida que vamos avançando. Ou você também pode me enviar para partes específicas do livro ou qualquer coisa do gênero, se achar apropriado. Desta forma, progredimos muito mais rápido.
Obrigado!
ps: me avise se o mapa do programa não anexou
ps: por favor ignore os comentários // aleatórios no código, são de notas antigas
Um olhar rápido me diz que você está cometendo um erro fundamental.
Você parece estar tentando declarar a função MyOrderCount() dentro do bloco de código da função start().
Pense em seu código como uma série de funções init(), start(), suafunção1(), suafunção2() ... suafunçãoN().
As funções init() e start() são funções especiais. A função init() é executada uma vez quando você inicializa a EA pela primeira vez. A função start() é executada cada vez que chega um tick de entrada.
Portanto, a função start() forma a raiz da qual toda sua lógica será chamada uma vez que a EA estiver em funcionamento.
Como exemplo, cada vez que um tick chegar, sua função start() será executada e fará isso:
- verifique algumas condições
- se as condições forem cumpridas, executar uma ordem
Uma das condições que você precisa é certificar-se de não ter já uma ordem do tipo (digamos, comprar) antes de fazer uma ordem de compra.
Assim, a partir da função start(), você precisará saber quais ordens de compra existem por um CALL para sua função de contagem de ordens de compra (cujo bloco de código fica fora da função start()).
Sua função de contagem de ordens retornará o número de ordens de compra e você retomará a execução da função start() na linha após sua chamada para a função de contagem de ordens de compra.
Então você usará o valor retornado da função de contagem de ordens de compra para determinar se deve ou não executar sua ordem de compra.
A execução real da ordem de compra pode ser uma chamada para OUTRA função que você criar para si mesmo (novamente, declarada fora da função start()).
Espero que isto faça sentido. Você pode estruturá-la de forma completamente diferente, mas eu estou apenas tentando dar a sua cabeça no conceito de funções e chamadas.
CB
Ei TSWilson e CB!
Vocês são ótimos! Muito obrigado.
Completamente de acordo com o pseudo-código. Eu fiz isso quando fiz uma programação muito básica em linguagem pro**realtime, mas lá era tão simples, sem declarações, sem blocos, etc (o código inteiro era apenas "se...então" haha). Comecei o pseudo código esta manhã (cheguei a trabalhar uma hora mais cedo só para fazê-lo) e escrevi um diagrama visual sobre como e que blocos ter. Terminarei isto mais tarde hoje e o publicarei aqui.
Uma vez feito isto, o resto dos blocos e as especificidades do código eu posso descobrir com seus ajudantes. Portanto, de volta à prancheta de desenho por enquanto!
Estou feliz por trabalhar durante a noite de hoje e amanhã para terminar o código o mais rápido possível, pois estou de folga na próxima semana e quero ter tudo pronto antes de ir.
Portanto, continue observando este tópico hoje, eu vou postar o pseudo-código e o diagrama!
E como sempre, obrigado ao Universo por pessoas como você!