O uso de variáveis não inicializadas (ou incompletas) (especialmente estruturas) é um erro muito comum na programação.
Cara, este é o único recurso em russo em que (1) você sofre uma lavagem cerebral e (2) se sente grato por isso :))
Há 1,5 ano sei que as variáveis devem ser inicializadas; há 1,5 ano uso deliberadamente a frase "variável do tipo estrutura"; mas há 1,5 ano atribuo valores apenas a campos separados (obrigatórios) da variável do tipo Mqltraderequest, porque o Manual de Referência diz que "os campos obrigatórios devem ser especificados para cada operação de negociação"....
papaklass: Renat, seria bom se você (MQ) publicasse um artigo ou uma série de artigos sobre "trabalhar com memória e variáveis". Em geral, qual é a maneira correta de trabalhar com memória e variáveis? Após a desqualificação de vários EAs no campeonato devido ao alto consumo de memória, esses artigos seriam apropriados. Rosh escreveu em algum tópico que os usuários devem solicitar os artigos de seu interesse, mas não encontrei esse tópico, então estou escrevendo aqui.
Sim, seria interessante ler um artigo sobre esse tópico. É muito interessante saber por que, no campeonato, alguns participantes tiveram especialistas usando tanta memória e como você pode evitar essa situação. Eu não tive esses problemas, mas é tudo aleatório. Quero dizer, não sei por que isso não acontece comigo, mas gostaria de saber o que fazer se isso acontecer.
Что общего между трейдингом, скайдайвингом, фьючерсами, Гавайями, переводами и шпионами? Мы тоже не знали, пока не пообщались с дисквалифицированным участником Ацуси Яманака (alohafx). Его кредо - ''Life is Good! - Жизнь прекрасна!'', и с этим трудно не согласиться. Было интересно узнать, что расстояние между разными континентами - не помеха в общении участников нашего Чемпионата.
Por que quando se aperta o S/L para 5 (que deveria ser 5 pips)?
Eu tenho o seguinte
Você deve verificar os níveis de parada(SYMBOL_TRADE_STOPS_LEVEL) de um símbolo antes de enviar a solicitação de negociação. O SL/TP não deve estar mais próximo do que essa distância do preço atual para fechar. O exemplo para obter essa propriedade:
int StopLevel_Distance=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
double SL=... // obter novo SL por cálculo//--- verificar o nível atual de Stop Loss calculadoif(SL>SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point)
SL=SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point;
//... modificar o SL para a posição
Obrigado, mas nem meu SL nem meu TP estão sendo executados. No "Terminal" do compilador, eles são listados como "0.00" ou "0.0". De qualquer forma, é impossível fornecer um stoploss geral para todas as ordens. E ainda não consegui alterar os valores dos parâmetros "de fora", ou seja, sem alterar o código no editor.
Fora isso, está funcionando muito bem! E os comentários são de grande ajuda!
Obrigado por este guia passo a passo. Tenho algumas perguntas, que espero que você possa me ajudar.
Segui suas instruções ao pé da letra, mas não consegui alcançar o resultado desejado. Em primeiro lugar, estou trabalhando com a versão mais recente do Meta Trader 5.00, Build 6.55 (6 de junho de 2012). Observei várias diferenças, sendo que a primeira é que o modelo do assistente MQL5 tem opções extras, além das que você mostra em suas observações. De qualquer forma, assegurei-me de que o programa é exatamente como você descreveu. Eu o compilei. Sem problemas. Nenhum erro. Consegui inserir todos os 5 pontos de interrupção de depuração, conforme sugerido em suas observações, na sub-rotina OnTick. Clico no botão verde Run e não acontece NADA. A execução do programa não chega a esse ponto. Por quê? O que está acontecendo? Se eu inserir os pontos de interrupção de depuração no início da subrotina OnInit, digamos, na linha adzHandle=iADX9Null,0,ADX_Period), tudo estará OK. As guias STEP de depuração se acendem e eu posso fazer uma única etapa desse controle até o final da subseção OnInit. Entretanto, depois disso, novamente nada. Em resumo, não consigo acessar a subseção OnTick. O que está acontecendo e por quê? Esse é um bug conhecido na operação do sistema Meta Trader? Como posso resolver esse problema e seguir em frente?
Espero que as informações acima expliquem o problema que tive e espero que você possa ver o que está acontecendo e que possa me ajudar.
Digitei todo o código durante o processo e não obtive nenhum erro de compilação no final, portanto, deve ter sido bem explicado. Um bom exercício para quem está usando o sistema metatrader5/mql5 pela primeira vez.
Talvez seja necessário fazer alguma otimização para que o gráfico fique em uma direção ascendente :D
Gostei muito do estilo de codificação deste artigo, muito fácil de ler e seguir. Só tenho um pedido a fazer, se não se importar, você poderia dar um exemplo de como implementar trailing stops com esse exemplo?
O uso de variáveis não inicializadas (ou incompletas) (especialmente estruturas) é um erro muito comum na programação.
Cara, este é o único recurso em russo em que (1) você sofre uma lavagem cerebral e (2) se sente grato por isso :))
Há 1,5 ano sei que as variáveis devem ser inicializadas; há 1,5 ano uso deliberadamente a frase "variável do tipo estrutura"; mas há 1,5 ano atribuo valores apenas a campos separados (obrigatórios) da variável do tipo Mqltraderequest, porque o Manual de Referência diz que "os campos obrigatórios devem ser especificados para cada operação de negociação"....
Renat, seria bom se você (MQ) publicasse um artigo ou uma série de artigos sobre "trabalhar com memória e variáveis". Em geral, qual é a maneira correta de trabalhar com memória e variáveis? Após a desqualificação de vários EAs no campeonato devido ao alto consumo de memória, esses artigos seriam apropriados. Rosh escreveu em algum tópico que os usuários devem solicitar os artigos de seu interesse, mas não encontrei esse tópico, então estou escrevendo aqui.
Por que quando se aperta o S/L para 5 (deveria ser 5 pips)?
Eu tenho o seguinte
Por que quando se aperta o S/L para 5 (que deveria ser 5 pips)?
Eu tenho o seguinte
Você deve verificar os níveis de parada(SYMBOL_TRADE_STOPS_LEVEL) de um símbolo antes de enviar a solicitação de negociação. O SL/TP não deve estar mais próximo do que essa distância do preço atual para fechar. O exemplo para obter essa propriedade:
Obrigado, mas nem meu SL nem meu TP estão sendo executados. No "Terminal" do compilador, eles são listados como "0.00" ou "0.0". De qualquer forma, é impossível fornecer um stoploss geral para todas as ordens. E ainda não consegui alterar os valores dos parâmetros "de fora", ou seja, sem alterar o código no editor.
Fora isso, está funcionando muito bem! E os comentários são de grande ajuda!
Mais uma vez, obrigado,
locan BBS
Novo artigo Guia passo a passo para escrever um Expert Advisor em MQL5 para iniciantes é publicado:
Autor: olowsam
Olá, Olowsam,
Obrigado por este guia passo a passo. Tenho algumas perguntas, que espero que você possa me ajudar.
Segui suas instruções ao pé da letra, mas não consegui alcançar o resultado desejado. Em primeiro lugar, estou trabalhando com a versão mais recente do Meta Trader 5.00, Build 6.55 (6 de junho de 2012). Observei várias diferenças, sendo que a primeira é que o modelo do assistente MQL5 tem opções extras, além das que você mostra em suas observações. De qualquer forma, assegurei-me de que o programa é exatamente como você descreveu. Eu o compilei. Sem problemas. Nenhum erro. Consegui inserir todos os 5 pontos de interrupção de depuração, conforme sugerido em suas observações, na sub-rotina OnTick. Clico no botão verde Run e não acontece NADA. A execução do programa não chega a esse ponto. Por quê? O que está acontecendo? Se eu inserir os pontos de interrupção de depuração no início da subrotina OnInit, digamos, na linha adzHandle=iADX9Null,0,ADX_Period), tudo estará OK. As guias STEP de depuração se acendem e eu posso fazer uma única etapa desse controle até o final da subseção OnInit. Entretanto, depois disso, novamente nada. Em resumo, não consigo acessar a subseção OnTick. O que está acontecendo e por quê? Esse é um bug conhecido na operação do sistema Meta Trader? Como posso resolver esse problema e seguir em frente?
Espero que as informações acima expliquem o problema que tive e espero que você possa ver o que está acontecendo e que possa me ajudar.
Obrigado.
Com os melhores cumprimentos
Kishor
Olá. Ótimo artigo,
Digitei todo o código durante o processo e não obtive nenhum erro de compilação no final, portanto, deve ter sido bem explicado. Um bom exercício para quem está usando o sistema metatrader5/mql5 pela primeira vez.
Talvez seja necessário fazer alguma otimização para que o gráfico fique em uma direção ascendente :D
Tudo de bom e obrigado!
Mike
Hi,
Gostei muito do estilo de codificação deste artigo, muito fácil de ler e seguir. Só tenho um pedido a fazer, se não se importar, você poderia dar um exemplo de como implementar trailing stops com esse exemplo?
Muito obrigado!