Só preciso de um pouco de ajuda, então tudo ficará bem ( preciso saber o último pedido para comprar, o último pedido para vender e o pedido anterior para qualquer compra ou venda )
muito obrigado por você.
int LastOpenTicketForBuy(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
//for(int pos=0; pos<OrdersTotal(); i++) {
OrderSelect(pos, SELECT_BY_POS);
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_BUY
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
int LastOpenTicketForSell(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_SELL
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
int previousorderforbuy(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
for(int pos--; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_BUY
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
int previousorderforsell(){
datetime lastTime = 0;
int lastTicket = -1; // None open.int magi.number=0;
for(int pos--; pos >= 0 ; pos--) if (
OrderSelect(pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber() == magic.number // my magic number
&& OrderSymbol() == Symbol() // and my pair.
&& OrderOpenTime() > lastTime
&& OrderType()==OP_SELL
){
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
return(lastTicket);
}
você daria uma olhada e me diria qual é o problema.
Preciso criar algumas funções para: 1- função para obter e manter o preço decompra do último pedido aberto. 2- função para obter e manter o último pedido a preço aberto para venda. 3- função para obter e manter o último pedido fechado o que comprar ou vender
int LastOpenTicketForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}
int LastOpenTicketForSell()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open.int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_SELL )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}
int lastcloseorder()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. int magi.number= 0 ;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderCloseTime () > lastTime
&& OrderType ()==OP_BUY||OP_SELL )
{ lastTime = OrderCloseTime (); lastTicket = OrderTicket (); }
return (lastTicket);}
então eu colocarei se ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se a posição
pos decremental até zero. segundo laço termina --> salta de volta para o primeiro, e o primeiro laço não sabe onde pos tinha saído desde a última vez. chances são, pos = zero.
Em sua opinião ... o que retorna(lastTicket); fazer ?
Devolve o número do bilhete para o pedido atualmente selecionado.
Você disse . . .
"Eu preciso criar algumas funções para: 1- função para obter e manter o preço decompra do último pedido aberto. 2- função para obter e manter o último pedido a preço aberto para venda.
3- Funciona para obter e manter o último pedido fechado o que comprar ou vender "(lastTicket); fazer . .
Então, por que você está devolvendo o número do bilhete? Leia o código que você está copiando e colando, entenda-o, aprenda . .
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Só preciso de um pouco de ajuda, então tudo ficará bem ( preciso saber o último pedido para comprar, o último pedido para vender e o pedido anterior para qualquer compra ou venda )
muito obrigado por você.
caras,
você daria uma olhada e me diria qual é o problema.
Preciso criar algumas funções para:
1- função para obter e manter o preço de compra do último pedido aberto.
2- função para obter e manter o último pedido a preço aberto para venda.
3- função para obter e manter o último pedido fechado o que comprar ou vender
então eu colocarei se ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se a posição
Você quer dizer que eu deveria
1- colocar o dobro LastOpenForBuy() em vez de int
2-put double orderforbuy then return( orderforbuy )
Desta forma, posso fazer o último pedido aberto apenas para compra.
Você quer dizer que eu deveria
É uma questão . . . Não quero dizer nada além de . . . qual é sua resposta?
Se você quer que eu ajude, precisa responder minha pergunta . . e "eu não sei" não é uma resposta aceitável. Pense um pouco sobre isso.
Em sua opinião ... o que retorna(lastTicket); fazer ?
Devolve o número do bilhete para o pedido atualmente selecionado.
Obrigado WHRoeder,
Para sua ajuda real. se eu precisar obter o último pedido de compra e o último pedido de venda, então compare-os fazendo :
se ( o último pedido aberto para compra == OOTlastest )
{façam alguma coisa }
senão
{ } ....... é o código abaixo que vai funcionar.
isto realmente funciona????
primeira etapa
vai para o segundo
pos decremental até zero. segundo laço termina --> salta de volta para o primeiro, e o primeiro laço não sabe onde pos tinha saído desde a última vez. chances são, pos = zero.
este código pode possivelmente funcionar... só precisa mudar uma coisa:
o segundo para declaração
para um iterador diferente, como
e, da mesma forma, substituir pos para o novo iterador (neste caso, a) em toda a lógica do segundo laço SOMENTE.
Em sua opinião ... o que retorna(lastTicket); fazer ?
Devolve o número do bilhete para o pedido atualmente selecionado.
Você disse . . .
"Eu preciso criar algumas funções para:1- função para obter e manter o preço de compra do último pedido aberto.
2- função para obter e manter o último pedido a preço aberto para venda.
3- Funciona para obter e manter o último pedido fechado o que comprar ou vender "(lastTicket); fazer . .
Então, por que você está devolvendo o número do bilhete? Leia o código que você está copiando e colando, entenda-o, aprenda . .