Fechamendo de ordem pendente assim que o Take profit da ordem principal é atingido.

 

boa noite pessoal, preciso da linha do código e também saber onde colocar; ou de alguém com o conhecimento no assunto pra me ajudar;

tenho um EA que abre a cada hora 9 ordens em pares de moedas diferentes, junto a ordens pendentes dos respectivos pares que abrem exatamente no mesmo stoploss desses pares.

só que quando esse par fecha positivo essa ordem pendente respectiva não fecha, e tenho que fechar manual, fica meio inviável eu ficar acordado 24 horas por dia fechando as ordens pendentes, alguém pode me ajudar? 

 
Paulo Ricardo Gois Ubillus:

boa noite pessoal, preciso da linha do código e também saber onde colocar; ou de alguém com o conhecimento no assunto pra me ajudar;

tenho um EA que abre a cada hora 9 ordens em pares de moedas diferentes, junto a ordens pendentes dos respectivos pares que abrem exatamente no mesmo stoploss desses pares.

só que quando esse par fecha positivo essa ordem pendente respectiva não fecha, e tenho que fechar manual, fica meio inviável eu ficar acordado 24 horas por dia fechando as ordens pendentes, alguém pode me ajudar? 

Olá Paulo Ricardo Gois Ubillus,

Você precisa modificar o seu robô para, identificado fechamento da posição, enviar uma solicitação de cancelamento de todas as ordens pendentes naquele ativo.

Abraços,
Malacarne 

 
Rodrigo Malacarne:

Olá Paulo Ricardo Gois Ubillus,

Você precisa modificar o seu robô para, identificado fechamento da posição, enviar uma solicitação de cancelamento de todas as ordens pendentes naquele ativo.

Abraços,
Malacarne 

não tenho a menor ideia de como fazer isso...  e também as vezes ele não abre a ordem principal e abre a pendente correspondente normalmente, creio que deve ser alguma variação da cotação.
 
Paulo Ricardo Gois Ubillus:
não tenho a menor ideia de como fazer isso...  e também as vezes ele não abre a ordem principal e abre a pendente correspondente normalmente, creio que deve ser alguma variação da cotação.

Olá Paulo Ricardo Gois Ubillus,

Nesse caso, você precisa pedir para o desenvolvedor de seu Expert Advisor implementar essa solução.

Abraços,
Malacarne

 

segue parte do código, se alguém puder ajudar detectar como fechar a ordem pendente que corresponde a original somente quando é atingido o TP da original, ajuda muito 

int start()
  {
//----
int cnt,  total, ticket;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}


total = OrdersTotal();




   if(NewBar())
{

 if( Close[1]<Open[1])
   {
   double SL = Open[0] + sl*Point, TP = Open[0] - tp*Point;
   double Entry1 = Open[0]+97*Point;
   double SLB1 = Open[0] - StopLoss2*Point, TPB1 = Open[0] + TakeProfit2*Point;
   RefreshRates();
   ticket=OrderSend(Symbol(),OP_SELL,lotsize,Bid,10, SL, TP,"Venda",MagicNumber,0,Yellow);
   ticket=OrderSend(Symbol(),OP_BUYSTOP,lotsize*10, Entry1, 10,SLB1 , TPB1, "Pendente de Venda", 0, NULL, LimeGreen);
   }

 if( Close[1]==Open[1] && Close[2]<Open[2])
   {
   double SL3 = Open[0] + sl*Point, TP3 = Open[0] - tp*Point;
   double Entry22 = Open[0]+97*Point;
   double SLB11 = Open[0] - StopLoss2*Point, TPB11 = Open[0] + TakeProfit2*Point;
   RefreshRates();
   ticket=OrderSend(Symbol(),OP_SELL,lotsize,Bid,10, SL3, TP3,"Venda",MagicNumber,0,Yellow);
   ticket=OrderSend(Symbol(),OP_BUYSTOP,lotsize*10, Entry22, 10,SLB11 , TPB11, "Pendente de Venda", 0, NULL, LimeGreen);
   }

 if( Close[1]>Open[1])
  {
   double SL2 = Open[0] - sl*Point, TP2 = Open[0] + tp*Point;
   double Entry2 = Open[0]-97*Point;
   double SLB2 = Open[0] + StopLoss2*Point, TPB2 = Open[0] - TakeProfit2*Point;
   RefreshRates();
   ticket=OrderSend(Symbol(),OP_BUY,lotsize,Ask,10, SL2, TP2, "Compra",MagicNumber,0,Red);
   ticket=OrderSend(Symbol(),OP_SELLSTOP,lotsize*10, Entry2, 10,SLB2 , TPB2, "Pendente de Compra", 0, NULL, LimeGreen);
   }

if( Close[1]==Open[1] && Close[2]>Open[2])
   {
   double SL4 = Open[0] - sl*Point, TP4 = Open[0] + tp*Point;
   double Entry11 = Open[0]-97*Point;
   double SLB22 = Open[0] + StopLoss2*Point, TPB22 = Open[0] - TakeProfit2*Point;
   RefreshRates();
   ticket=OrderSend(Symbol(),OP_BUY,lotsize,Ask,10, SL4, TP4,"Compra",MagicNumber,0,Yellow);
   ticket=OrderSend(Symbol(),OP_SELLSTOP,lotsize*10, Entry11, 10,SLB22 , TPB22, "Pendente de Compra", 0, NULL, LimeGreen);
   }
   
 } 
 

Boa noite!

 3 perguntas

Qual é a linguagem semelhante a linguagem dos EAs forex que se deve estudar para ser mais rapido o aprendizado?

Alguém aqui dá aulas para quem tem interesse em aprender?

Tenho um EA e gostaria de implementar algumas novas rotinas, alguém faz esse tipo de trabalho ou conhece quem faça?

Grato 

 
Tchouber:

Boa noite!

 3 perguntas

Qual é a linguagem semelhante a linguagem dos EAs forex que se deve estudar para ser mais rapido o aprendizado?

Alguém aqui dá aulas para quem tem interesse em aprender?

Tenho um EA e gostaria de implementar algumas novas rotinas, alguém faz esse tipo de trabalho ou conhece quem faça?

Grato 

Olá, Tchouber.

  1. C++, mas dizem não ser o melhor caminho para aprender MQL, e.g. https://www.mql5.com/en/forum/528;
  2. É possível começar o aprendizado com as seções de Documentos e de Artigos. Para quem nunca programou antes talvez seja bom começar lendo um livro sobre lógica de programação;
  3. Um programador autônomo pode ser contratado na seção Freelance.
Atenciosamente.

 
Paulo Ricardo Gois Ubillus:

segue parte do código, se alguém puder ajudar detectar como fechar a ordem pendente que corresponde a original somente quando é atingido o TP da original, ajuda muito 

Caro Paulo,

 

                    usa a biblioteca CPositionInfo. Acredito que se você usar a função Position.Profit()=valor_do_seu_TP resolve seu problema. Dá uma olhada nas referências de código no site MQL5. Leia este artigo https://www.mql5.com/pt/articles/481, vai clarear um pouco mais para você. 

Operações de negócios no MQL5 - São fáceis
Operações de negócios no MQL5 - São fáceis
  • 2014.01.13
  • MetaQuotes Software Corp.
  • www.mql5.com
Quase todos os negociadores chegam ao mercado para fazer dinheiro, mas alguns também apreciam o processo em si. No entanto, não é apenas a negociação manual que pode lhe proporcionar uma experiência emocionante. O desenvolvimento de sistemas automatizados de negociação também pode ser bastante impressionante. Criar uma negociação automática pode ser tão interessante quanto ler um bom romance de mistério.
Razão: