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
Pode ser se tiver um número mágico diferente doMagicNumber ou se for para um símbolo diferente do símbolo em que a EA está rodando ou se for um OP_SELLLIMIT ou OP_BUYLIMIT . . também, você precisa verificar os valores de retorno de suas chamadas OrderDelete() .
Por que você precisa ligar para RefreshRates() ? eu não quero dizer se livrar deles, mas você pode explicar porque você está ligando para RefreshRates() onde você está ?
O que são valores de retorno de função ? Como posso utilizá-los ?
Olá RaptorUK.
Até onde sei, o MagicNumber é o mesmo e são OP_SELLSTOP e OP_BUYSTOP.
OrderDelete() calls , receio não entender o que você quer dizer....
RefreshRates() Eu só coloquei lá depois que o problema com ele fechou.
Agora estou em Lisboa (Portugal).
Luis
Olá RaptorUK.
Até onde sei, o MagicNumber é o mesmo e são OP_SELLSTOP e OP_BUYSTOP.
OrderDelete() calls , receio não entender o que você quer dizer....
Quando você chama OrderDelete() (usando a função OrderDelete()) ele retorna um valor, ele retorna um valor bool, se o valor for verdadeiro a OrderDelete() funcionou, se for falso a OrderDelete() falhou . . então verifique o valor de retorno e se for falso informe o erro ao log usando Print() ou use Comment( ) ou Alert() para que você saiba que tem um problema e possa investigá-lo.
Com base em seu código eu faria estas mudanças . . . se fosse meu código eu faria mudanças adicionais para imprimir mais informações no caso de um erro, Bid, Ask, FreezeLevel, StopLevel, etc.
Quando você chama OrderDelete() (usando a função OrderDelete()) ele retorna um valor, ele retorna um valor bool, se o valor for verdadeiro a OrderDelete() funcionou, se for falso a OrderDelete() falhou . . então verifique o valor de retorno e se for falso informe o erro ao log usando Print() ou use Comment() ou Alert() para que você saiba que tem um problema e possa investigá-lo.
Com base em seu código eu faria estas mudanças . . . se fosse meu código eu faria mudanças adicionais para imprimir mais informações no caso de um erro, Bid, Ask, FreezeLevel, StopLevel, etc.
Olá RaptorUK,
A razão pela qual a ordem pendente não foi eliminada tem a ver com o lucro que foi para baixo neste caso 5 pips. Quando eu coloquei em 10 pips o pedido foi excluído. Minha confusão vem do fato de que se eu tivesse uma rotina para colocar o stoploss, abrir o preço e tirar lucro da zona de congelamento, por que isto não tem trabalho. Ok, mas agora está funcionando.
A propósito, quero fechar a ordem oposta uma vez que a outra tenha sido acionada. Para isso coloquei este código extra, mas (você pode começar a rir...) mas nada....
Alguma ajuda aqui?
Olá RaptorUK,
A razão pela qual a ordem pendente não foi eliminada tem a ver com o lucro que foi para baixo neste caso 5 pips. Quando eu coloquei em 10 pips a ordem de exclusão. Minha confusão vem do fato de que se eu tivesse uma rotina para colocar o stoploss, abrir o preço e tirar lucro da zona de congelamento, por que isto não tem trabalho. Ok, mas agora está funcionando.
A propósito, quero fechar a ordem oposta uma vez que a outra tenha sido acionada. Para isso coloquei este código extra, mas (você pode começar a rir...) mas nada....
Alguma ajuda aqui?
1. Ah, é por isso que você precisa verificar os valores de retorno e imprimir os códigos de erro, etc. Você precisa garantir que qualquer ação comercial em qualquer ordem esteja de acordo com as informações aqui:Requisitos e limitações na realização de negócios
2. Yu tem que esperar que a Ordem mude de OP_BUYSTOP para OP_BUY, pode levar algum tempo, então você precisa continuar verificando . . uma vez que tenha se tornado um OP_BUY, então você pode fechar a Ordem oposta e para fazer isso você terá que encontrar a Ordem correta para fechar. você deve ler minha recente conversa comWhooDoo22 que a conversa cobre um tópico similar.
Olá RaptorUk,
Eu tenho seguido o link que você forneceu, mas o tema, ainda assim, interessante, é longo e com tantas opiniões divergentes que eu me solto nelas.
Portanto, introduzi um código para fechar o oposto pendente e novamente nada e não consigo ver nada na revista que dê uma ajuda sempre..... o que estou perdendo aqui ......
obrigado por qualquer light.....
Luis
Olá RaptorUk,
Eu tenho seguido o link que você forneceu, mas o tema, ainda assim, interessante, é longo e com tantas opiniões divergentes que eu me solto nelas.
Portanto, introduzi um código para fechar o oposto pendente e novamente nada e não consigo ver nada na revista que dê uma ajuda sempre..... o que estou perdendo aqui ......
Você tem que esperar que a Ordem mude de OP_BUYSTOP para OP_BUY, pode levar algum tempo,então você precisa continuar verificando... uma vez que ela se transformou em OP_BUY, então você pode fechar a Ordem oposta e para fazer isso você terá que encontrar a Ordem correta para fechar.
Olá RaptorUK ,
Ok, agora parece que está apagando aordem pendente oposta depois que uma pendente é acionada, mas agora algumas ordens vêm em duplas, ou seja, a ea coloca uma venda e compra ao mesmo tempo e o tamanho do lote é o mesmo para as duas ordens quando deve colocar uma ordem por vez. Eu comecei a ficar louco.....
Qualquer ajuda aqui, por favor!!!!
Olá RaptorUK ,
Ok, agora parece que está apagando a ordem pendente oposta depois que uma pendente é acionada, mas agora algumas ordens vêm em duplas, ou seja, a ea coloca uma venda e compra ao mesmo tempo e o tamanho do lote é o mesmo para as duas ordens quando deve colocar uma ordem por vez. Eu comecei a ficar louco.....
Qualquer ajuda aqui, por favor!!!!
Olhando para seu código, acho muito difícil seguir o que você está tentando fazer, vejo muito poucos comentários para me ajudar, sua função inicial() não me mostra o que você está tentando fazer em cada tick, você não tem um layout consistente de indentação.
Qual é a função GoToClose() destinada a fazer ? Se você fizer alguns comentários no início da função descrevendo o que ela deve fazer, então eu poderia ver se ela está realmente fazendo o que ela deve fazer, atualmente o que ela faz é chamada deCloseAll(); se qualquer comércio que corresponda ao seu Symbol & Magic Number estiver em lucro por qualquer quantia, ou se você tiver mais de 7 negócios para qualquer símbolo e qualquer Magic Number. CloseAll() somente fecha negócios paraseu Símbolo e Número Mágico, então se você tivesse 7 negócios para um Símbolo ou Número Mágico diferente, GoToClose() continuaria chamando CloseAll() e nada mais aconteceria.
Se você colocasse uma troca manual em sua conta Demo e depois executasse sua EA, ela não faria nada... ela veria a troca mas não a ignoraria, ela a contaria e como resultado não colocaria uma troca própria, nem fecharia esta troca aberta. O que sua EA deveria fazer nesta situação? e se houvesse uma troca colocada por outra EA com um Número Mágico diferente?
Você precisa obter uma imagem clara do que está tentando fazer, comente sua função start() para que o fluxo e o processo sejam claros, comente cada função para que fique claro o que cada uma deve fazer. Quando você tiver feito isto, você pode muito bem entender onde está seu problema...
Olhando para seu código, acho muito difícil seguir o que você está tentando fazer, vejo muito poucos comentários para me ajudar, sua função inicial() não me mostra o que você está tentando fazer em cada tick, você não tem um layout consistente de indentação.
Qual é a função GoToClose() destinada a fazer ? Se você fez alguns comentários no início da função descrevendo o que ela deve fazer então eu poderia ver se ela está realmente fazendo o que deve fazer, atualmente o que ela faz é chamada deCloseAll(); se qualquer comércio que corresponda ao seu Symbol & Magic Number estiver em lucro por qualquer quantia, ou se você tiver mais de 7 negócios para qualquer símbolo e qualquer Magic Number. CloseAll() somente fecha negócios paraseu Símbolo e Número Mágico, então se você tivesse 7 negócios para um Símbolo ou Número Mágico diferente, GoToClose() continuaria chamando CloseAll() e nada mais aconteceria.
Se você colocasse uma troca manual em sua conta Demo e depois executasse sua EA, ela não faria nada... ela veria a troca mas não a ignoraria, ela a contaria e como resultado não colocaria uma troca própria, nem fecharia esta troca aberta. O que sua EA deveria fazer nesta situação? e se houvesse uma troca colocada por outra EA com um Número Mágico diferente?
Você precisa obter uma imagem clara do que está tentando fazer, comente sua função start() para que o fluxo e o processo sejam claros, comente cada função para que fique claro o que cada uma deve fazer. Quando você tiver feito isto, você pode bem entender onde está seu problema...
Olá RaptorUK,
Desculpe pela bagunça. Até este momento, parece que a EA está fazendo o que se espera dele, exceto esta questão;
A EA deve abrir uma ordem oposta cada vez que a ordem anterior não toma o TakeProfit com um incremento de tamanho e com a mesma quantidade de TakeProfit e ele o faz.A questão é que deve colocar apenas uma ordem por vez e colocar mais de uma. Dando uma olhada no relatório, você pode ver que o pedido 6 e 7 são ambos uma venda e o pedido 7 deve ser uma compra.
Agora eu coloquei o código por função. A razão pela qual eu tenho todas essas chamadas vazias é que eu quero ter um bloco independente que funcione completamente e aqui eu sei que estou com problemas para organizar isto O Go to Open e go to Close é apenas uma maneira de dizer que se nós não tivermos ordens abertas os primeiros vão para abrir se não o go to close ( é uma confusão que eu preciso trabalhar nisto....) Estou usando o símbolo e o número mágico para garantir que a ea apenas lide com as próprias ordens.
A estratégia principal é (e os blocos são por esta ordem);
1- Duas ordens pendentes estão acima e abaixo do preço. Uma vez que o preço aciona uma delas, o oposto das pendentes é eliminado. Isto está funcionando.
2- Se o preço escolhe o TakeProfit então a ordem é fechada e a EA volta a colocar duas ordens pendentes e o processo começa novamente. Isto está funcionando
2- se o preço não escolher o TakeProfit e saltar de volta uma vez que o valor do TakeProfit for menor (para ordens de compra), então uma ordem de venda oposta deverá abrir com o mesmo valor do TakeProfit e com um tamanho muito maior do que o primeiro. Isto está funcionando, exceto que coloca mais de uma ordem e pelo Relatório pode-se ver que as ordens 6 e 7 são ambas ordens de Venda e devem ser apenas uma a 7 deve ser uma Compra.
3- Uma vez que a última ordem tenha lucro, todas as ordens abertas devem ser fechadas. E o processo começa a ganhar. Isto está funcionando.
4- Neste ping-pong deve-se esperar que no máximo 7 vezes uma ordem escolha o TakeProfit se não for assim, estas ordens são fechadas.
Por exemplo, se quisermos para TakeProfit 2 pips então esperamos que o preço atinja 3 pips e então uma destas funções (break even ou profit trailing stop mínimo) coloca uma linha de parada no nível de 2 pips. Se o preço subir (para Buy), então a linha stop irá com ele e, uma vez que o preço ricochetear 1 pip, a ordem fecha e porque tem um lucro, todas as ordens abertas são fechadas. Aqui eu não tenho certeza se isto pode funcionar corretamente.
Obrigado
Luis
Olá RaptorUK,
Desculpe pela bagunça. Até este momento, parece que a EA está fazendo o que se espera dele, exceto esta questão;
A EA deve abrir uma ordem oposta cada vez que a ordem anterior não toma o TakeProfit com um incremento de tamanho e com a mesma quantidade de TakeProfit e o faz. A questão é que deve colocar apenas uma ordem por vez e colocar mais de uma. Dando uma olhada no relatório, você pode ver que o pedido 6 e 7 são ambos uma venda e o pedido 7 deve ser uma compra.
Agora eu coloquei o código por função. A razão pela qual eu tenho todas essas chamadas vazias é que eu quero ter um bloco independente que funcione completamente e aqui eu sei que estou com problemas para organizar isto O Go to Open e go to Close é apenas uma maneira de dizer que se nós não tivermos ordens abertas os primeiros vão para abrir se não o go to close ( é uma confusão que eu preciso trabalhar nisto....) Estou usando o símbolo e o número mágico para garantir que a ea apenas lide com as próprias ordens.
A estratégia principal é (e os blocos são por esta ordem);
1- Duas ordens pendentes estão acima e abaixo do preço. Uma vez que o preço aciona uma delas, o oposto das pendentes é eliminado. Isto está funcionando.
2- Se o preço escolhe o TakeProfit então a ordem é fechada e a EA volta a colocar duas ordens pendentes e o processo começa novamente. Isto está funcionando
2- se o preço não escolher o TakeProfit e saltar de volta uma vez que o valor do TakeProfit for menor (para ordens de compra), então uma ordem de venda oposta deverá abrir com o mesmo valor do TakeProfit e com um tamanho muito maior do que o primeiro. Isto está funcionando, exceto que coloca mais de uma ordem e pelo Relatório pode-se ver que as ordens 6 e 7 são ambas ordens de Venda e devem ser apenas uma a 7 deve ser uma Compra.
3- Uma vez que a última ordem tenha lucro, todas as ordens abertas devem ser fechadas. E o processo começa a ganhar. Isto está funcionando.
4- Neste ping-pong deve-se esperar que no máximo 7 vezes uma ordem escolha o TakeProfit se não for assim, estas ordens são fechadas.
Por exemplo, se quisermos para TakeProfit 2 pips então esperamos que o preço atinja 3 pips e então uma destas funções (break even ou profit trailing stop mínimo) coloca uma linha de parada no nível de 2 pips. Se o preço subir (para Buy), então a linha stop irá com ele e, uma vez que o preço ricochetear 1 pip, a ordem fecha e porque tem um lucro, todas as ordens abertas são fechadas. Aqui eu não tenho certeza se isto pode funcionar corretamente.
Obrigado
Luis
Ok, pense que encontrou o que está errado com a abertura de vários pedidos. Tive queincluí-las em código (Negrito Italic);