Canal Forex

Canal Forex (http://www.canalforex.com/forum/index.html)
-   Fórum Geral de Forex (http://www.canalforex.com/forum/forumdisplay.html?f=3)
-   -   Obter informações das ordens nos Expert Advisors em MQL4 (http://www.canalforex.com/forum/showthread.html?t=51)

Crashh 08-04-2008 18:23

Obter informações das ordens nos Expert Advisors em MQL4
 
Citar:

Criado Inicialmente por joelmarques733 (Mensagem 153)
Boas..

Pois descobri este forum mesmo agora e devo dizer que e uma bela surpresa, finalmente em pottugues..
Pois eu ha ja algum tempo que nao trabalho em mt4..mas estou de volta..

Em relacao aos brokers, qual e o melhor em termos de fiabilidade??
E em termos de spreads??
e em termos de spreads/fiabilidade/credibilidade???

Bem ao que interessa...
Alguem me pode ajudar? preciso de saber em termos de linguagem simples mt4 o seguinte..
Apos enviar uma ordem, preciso de ter o feddback no meu EA de que essa ordem foi executada, mas preciso saber exactamente as caracteristas(numero da ordem, e mais importante o preco)..
Alguem me pode dizer como ter esse feedback e passar esses valorres para variaveis externas??
obrigado...

Já que a questão das corretoras já e debatida noutros tópicos dou aqui a minha contribuição no que diz respeito ao MQL4. Apesar de não mexer nele há bastante tempo ainda tenho algumas rotinas por aqui e me lembro, aliás é fácil lembrar por ser praticamente igual à Linguagem C que gosto tanto :ybiggrin:

Para vermos se devemos comprar ou não e se sim, abrirmos posição (neste caso longa):

//Ver se compramos...
if(devemoscomprar==true){
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point,"nome expert advisor",16384,0,Green);
if(ticket>0){//Se foi dada a ordem...
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("Aberta Posição Longa ao preço de: ",OrderOpenPrice());
}else Print("Houve um erro a abrir a posição longa, e o erro foi: ",GetLastError());//Não foi dada a ordem...
return(0);
}

Agora, para vermos dados de ordens por exemplo, e neste caso mudarmos o trailing stop à ordem:

//Vermos se temos por exemplo posições de venda...
for(i=OrdersTotal();i>=0;i--){//Todas as ordens de trás para a frente hehe...
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);//Seleccionar a ordem...
if(OrderSymbol()==Symbol()){//Se a ordem é do câmbio onde estamos...
if(OrderType()==OP_SELL){//Se a ordem é de venda por exemplo...
if(TrailingStop>0){//Se o trailing stop existe (é maior que 0)...
if(OrderOpenPrice()-Ask>=(TrailingStop+PipsSpread)*Point){//Se o preço de abertura menos a procura é superior ao trailing stop definido mais uma diferença de spread em pips definida por nós, para podermos mudar o trailing stop...
if(OrderStopLoss()>(Ask+Point*TrailingStop)){//Se estamos fora do range do stop loss...
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Poi nt*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,800,Purple);//Mudar a ordem pelo ticket, alterando o trailing para a procura + o trailing stop... etc...
return(0);
}
}
}
}
}
}

Neste exemplo de alteração de trailing stops podemos ver mais ou menos que tipo de comandos usamos para sacar certas informações. Neste caso a OrderTicket(), a OrderOpenPrice(), etc.

Há minhentas funções, ao escrevermos Order a interface de edição do MQL4 mostra-nos quais para escolhermos.

Vou colocar isto também noutro tópico para haver alguma separação de temas senão torna-se confuso falarmos de vários assuntos no mesmo tópico :p


Todas horas estão no fuso horário GMT. A hora actual é 18:00.

Powered by vBulletin Version 3.6.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.