como posso obter o preço mais alto após a abertura do pedido. - página 2

 
Comece a aprender a codificar e pare de bater sua linha.
 

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);
}
 

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

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

 
Em sua opinião ... o que retorna (lastTicket); fazer ?
 

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.

double LastOpenForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; double orderforbuy;
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 )
{ orderforbuy = OrderOpenprice ();
lastTicket = OrderTicket (); }
return (orderforbuy);}

 
Hand:

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.

 
Hand:

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

for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (

vai para o segundo

 for(pos--; pos >= 0 ; pos--) if (

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

for(pos--; pos >= 0 ; pos--) if (

para um iterador diferente, como

for(int a=pos--; a>=0 ; a--) if(// abort the use of pos again and introduce a new iterator, a

e, da mesma forma, substituir pos para o novo iterador (neste caso, a) em toda a lógica do segundo laço SOMENTE.

 
Hand:

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 . .

Razão: