Fechamento de meio lote. - página 5

 
DomGilberto:

Eu coloquei uma ordem pendente "OP_BUYSTOP" mas tive a impressão de que isto mudaria quando acionada para um "OP_BUY"?

Eu pensei que o tipo de ordem seria "OP_BUY" se tivesse sido acionada?

Afinal de contas, só estou interessado UMA VEZ que a ordem tenha sido acionada?

Por que esses aparelhos são confusos? Você quer dizer em termos de onde está o parêntese esquerdo? Se sim, parece que isso é uma coisa individual, como já fui corrigido várias vezes?

Os aparelhos não são necessários, então o fato de eles estarem lá pode causar confusão para outros que tentam ler seu código (eu).


Se você só tem um BUYSTOP então seu código não vai fazer nada porque não é um OP_BUY . .

DomGilberto:
Hmmm, ainda não quer fechar @ "Close_Half_Order" ? Também não está recebendo nenhuma mensagem de erro?

Portanto, isto faz sentido enquanto a Ordem ainda está pendente...

A sua Ordem tem o número mágico correto?

 
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Close_Half_Order Last Error = 4108
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: OrderClose error 4108
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: pending order #9 cannot be closed
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 9
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000
2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
Eu removi a linha "if(OrderType()==OP_BUY)" - Esta é a nova impressão dentro do periódico após o teste? Bilhete inválido... (desculpe-me por fazer 101 perguntas sobre isto!)
 
DomGilberto:
Eu removi a linha "if(OrderType()==OP_BUY)" - Esta é a nova impressão dentro do periódico após o teste? Bilhete inválido... (desculpe-me por fazer 101 perguntas sobre isto!)

RaptorUK:

Você não fecha uma ordem pendente, o que lhe disse seu relatório de erro?

2013.07.31 17:45:46     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: pending order #9 cannot be closed

Você não pode fechar uma ordem pendente, ela é apagada.

 
Mas eu não estou tentando fechar uma ordem pendente? Estou tentando fechar metade dos lotes em um "OP_BUY" que não está pendente...? Obviamente estou perdendo algo aqui...
 
DomGilberto:
Mas eu não estou tentando fechar uma ordem pendente? Estou tentando fechar metade dos lotes em um "OP_BUY" que não está pendente...? Obviamente estou perdendo algo aqui...
DomGilberto:

Eu coloquei uma ordem pendente "OP_BUYSTOP", mas eu tinha a impressão de que isso mudaria quando acionada para um "OP_BUY"?

Se você tem um OP_BUYSTOP seu código não faz nada, o que é OK. Quando o OP_BUYSTOP é acionado ele se transforma em um OP_BUY e seu código deve fechar metade do seu tamanho de posição . . . desde que ele tenha o símbolo correto e o Número Mágico, ele ? Acho que, caso contrário, o código não teria tentado fechar a ordem pendente. . e sobre OpenOrdersThisPair(Symbol()) == 1 ?
 
Se eu remover "OpenOrdersThisPair(Symbol()) == 1" do código, as mensagens são exatamente as mesmas dentro da revista... Estou perplexo...?
 
DomGilberto:
Se eu remover "OpenOrdersThisPair(Symbol()) == 1" do código, as mensagens são exatamente as mesmas dentro da revista... Estou perplexo...?

É hora de acrescentar mais algumas declarações impressas, verificar tudo o que você ainda não verificou... você só fica perplexo porque não sabe por que, descobre por que e não vai mais ficar perplexo.

Quando você descobrir o porquê e tiver todas estas declarações Print() que você não quer mais imprimir na aba Journal/Experts, dê uma olhada nisto que permitirá uma boa maneira de ligá-las e desligá-las: https: //www.mql5.com/en/forum/135168/page2

 

Ah, a propósito, você não pode fazer isso . . .

bool Close_Half_Order = OrderClose(OrderTicket(), half, FirstTarget_Buy, 3, CLR_NONE);

. . a menos que o FirstTarget_Buy == Bid Para remover a possibilidade de que não seja apenas usar Bid. Uma Compra é fechada com uma Venda, uma Venda é executada no Bid.

 
Ok, então se eu colocar "Bid" lá, os lotes estão agora sendo fechados, mas não pelo preço correto, e parece fechar várias metades durante qualquer posição. (mais para os 2/3rds superiores da área de 100% do preço alvo... não todos ao mesmo preço em que estão fechando a...)

Como devo fechar a posição em "FirstTarget_Buy "?
 
DomGilberto:
Ok, então se eu colocar "Bid" lá, os lotes estão agora sendo fechados, mas não pelo preço correto, e parece fechar várias metades durante qualquer posição. (mais para os 2/3rds superiores da área de 100% do preço alvo... não todos ao mesmo preço em que estão fechando a...)

Como devo fechar a posição em "FirstTarget_Buy"?

Você não pode encomendarClose() a nenhum outro preço que não seja Licite e Pergunte (Compre e Venda) . ... é tão simples quanto isso, você não pode.

O que você pode fazer:

abrir dois negócios para metade da posição cada um e dar um TP diferente a cada um

ou

monitorar o preço Bid/Ask e quando tiver atingido ou passado o "FirstTarget_Buy " fechar metade do comércio a Bid/Ask