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
Isto é impresso no Diário durante meu loop for, onde, no caso de uma ordem de parada de compra pendente, se o 60 EMA for > do que o OrderStopLoss, ele fechará a ordem pendente, abrirá um novo SL (que está atrás do 60EMA), ajustará o take profit para entreter a recompensa 1:2, e mudará os lotes relativos à parada em pontos e meu perfil de risco (digamos 2%).
Então, quando tudo isto está sendo feito, o "Lotes Atuais" que é a variável personalizada "LotSize" dentro da OrderSend funciona, está enviando um tamanho de lote que não é correto para o servidor receber? "0.18215"? Isto poderia ser um problema, apesar dos pedidos serem realmente enviados de qualquer maneira - esta pergunta é mais em conexão com "poderia esta ser a razão pela qual eu não posso chamar "OrderType==OP_BUY"?
Você deveria corrigir isso, validar o tamanho do lote da mesma forma que você já tem . . . você poderia até mesmo codificar uma função separada para fazê-lo com base no código que você já tem . . . por exemplo:
Ao invés de usar LotSize em seu OrderSend() você usaria ValidateLots(LotSize)
Eu duvido que isso esteja causando seu problema, no entanto . . .
Argh! Tão frustrante rs - presa nisto por muito tempo agora :(
Não vejo porque isto é um problema e não posso selecionar um "OP_BUY"... Eu sei que provavelmente já esgotei este tópico, mas qualquer última facada no escuro seria muito apreciada - obrigado por me ajudar também!!
Hmm - sim, acabei de brincar com isso. Parece que a ordem só é enviada porque o servidor permite apenas 0,00 (2 casas decimais) de qualquer forma. Portanto, os dígitos restantes são quase irrelevantes.
Argh! Tão frustrante rs - presa nisto por muito tempo agora :(
Não vejo porque isto é um problema e não posso selecionar um "OP_BUY"... Eu sei que provavelmente já esgotei este tópico, mas qualquer última facada no escuro seria muito apreciada - obrigado por me ajudar também!!
Eu acho que você precisa mostrar todo o seu código . . .
Vejo aqui alguns problemas:
-http://pastebin.com/eaY1wKbN
Desculpe a sintaxe - um pouco mais difícil de ver tudo, mas eles não têm MQL4? Então coloque-a em C++
Todo o código não vai caber aqui? Mas eu o coloquei no pastebin?
-http://pastebin.com/eaY1wKbN
Desculpe pela sintaxe - um pouco mais difícil de ver tudo, mas eles não têm MQL4? Então coloque-a em C++
Sem problemas . . .
Quando você faz isto . . .
. qual ordem já está selecionada ? foi a ordem pendente ? sua OrderSelect() falhará se sua OrderTicket() falhar, a menos que você já tenha uma ordem selecionada. Você realmente precisa deste código ? mais tarde você tem um laço onde você seleciona as ordens e verifica seu símbolo e número mágico e digita . .
Isto também precisa ser corrigido. . .
. ad algumas chaves . . .
Ok - Eu deixei mais impressões para obter um pouco de clareza sobre o que está sendo feito e qual o ponto. Coloquei abaixo.
A linha onde diz "Order Select for closing:-..." é o que está sendo selecionado no ponto "Close OP_BUY Half Lots @ 1:1 Function" que você perguntou acima. Parece que o número do bilhete é diferente neste ponto de seleção? Eu tinha excluído a parte "...&& OrderType()==OP_BUY" dela, pois parece imprimir o resto quando esta parte não está na declaração "se"... Isto dá um pouco mais de clareza?
"First Buy Order Placed:-" é a primeira função OrderSend a passar no início
"Checking Buy Order:-" é aquele dentro do loop para excluir e reabrir o pedido pendente se o MA for > o OrderStopLoss().
"NEW BUY ORDER:-" é o novo pedido que está sendo colocado dentro do laço.
"Order Select for closing:-..." - como já mencionado acima, esta é a parte que está sendo selecionada para fechar a metade dos lotes.
Desculpe se isto foi confuso, pois acabei de acrescentar estas peças - você não verá isto dentro daquele link de pastebin acima... apenas simples funções de impressão :)
Ok - Eu deixei mais impressões para obter um pouco de clareza sobre o que está sendo feito e qual o ponto. Coloquei abaixo.
A linha onde diz "Order Select for closing:-..." é o que está sendo selecionado no ponto "Close OP_BUY Half Lots @ 1:1 Function" que você perguntou acima. Parece que o número do bilhete é diferente neste ponto de seleção? Eu tinha excluído a parte "...&& OrderType()==OP_BUY" dela, pois parece imprimir o resto quando esta parte não está na declaração "se"... Isto dá um pouco mais de clareza?
"First Buy Order Placed:-" é a primeira função OrderSend a passar no início
"Checking Buy Order:-" é aquele dentro do loop para excluir e reabrir o pedido pendente se o MA for > o OrderStopLoss().
"NEW BUY ORDER:-" é o novo pedido que está sendo colocado dentro do laço.
"Order Select for closing:-..." - como já mencionado acima, esta é a parte que está sendo selecionada para fechar a metade dos lotes.
Desculpe se isto foi confuso, pois acabei de acrescentar estas peças - você não verá isto dentro daquele link de pastebin acima... apenas simples funções de impressão :)
Tente o anexo . . . é o meu melhor palpite para o que você está tentando fazer . .
Ah fantástico - obrigado. É um grande passo na direção certa. Acho que por estar dentro de um loop, quer fechar pela metade e pela metade e pela metade ao preço. Ao invés de fazer isso apenas uma vez? Não só isso, mas parece que não fecha pela metade assim que o preço >= ao preço de saída que eu quero, ao invés disso, vai além dele, e então quando o preço volta mais baixo ao preço de saída que eu quero, ele fecha então - estranho... Aprecie sua paciência em me ajudar! Muito grato por seu tempo!!
ATUALIZAÇÃO: Também, acabei de descobrir, que se eu mudar as propriedades do especialista (int externo) antes de executar o testador de estratégia, então a metade fechada não funciona - coisas que afetam a metade fechada é "MA_PadAmount", isto é quantos pontos eu quero adicionar como um bloco para a parada de perda que segue em pips, e "OrderPrice_PadAmount", que me permite especificar quantos pips eu posso colocar como bloco no preço de entrada dos pedidos...
Ah fantástico - obrigado. É um grande passo na direção certa. Acho que por estar dentro de um loop, quer fechar pela metade e pela metade e pela metade ao preço. Ao invés de fazer isso apenas uma vez? Não só isso, mas parece não fechar pela metade assim que o preço >= ao preço de saída que eu quero, ao invés disso, vai além dele, e então, quando o preço volta mais baixo ao preço de saída que eu quero, ele fecha então - estranho... Aprecie sua paciência em me ajudar! Muito grato por seu tempo!!
Não tenho certeza absoluta de como escrever isso, mas isso está mais ou menos nas linhas certas?