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

 
( OrderType() < OP_BUYLIMIT ) é o mesmo que ( OrderType () == OP_BUY ||OrderType() == OP_SELLL )
 
Hand:


caras,

muito obrigado,

Deixe-me dizer por que quero usar o LastOpenPrice(OP_BUY) e o LastOpenPrice(OP_SELL) porque quero usá-los em algumas condições como

se ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0,0090 // por essa razão eu preciso manter o último pedido aberto para compra e o último pedido aberto para venda, então eu preciso separar o último pedido um para compra e o outro para venda.

Você pode fazer isso... funcionará... experimente.
 
Ou talvez você queira dizer a última ordem de compra que agora está fechada?
 

a explicação da função n.4 é clara?

a função número 4:

// eu quero que o pedido seja fechado antes do último pedido fechado o que comprar ou vender.

4- função para obter e manter o preço de fechamento anterior antes do último fechamento da ordem o que comprar ou vender. obrigado

 

caras,

Realmente não funciona

// Used to keep global variables

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090;                    //Identifies short positions
  
 






double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()    // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

if (  ((iOpen("EURUSD",PERIOD_H1,0)-0.0030)>=MarketInfo("EURUSD",MODE_BID))   ) 
  {   BUY("EURUSD",B_EURUSD_LS_0,B_EURUSD_TP_0,B_EURUSD_SL_0,B_EURUSD_TS_0,"if (  ( ((iOpen(EURUSD,PERIOD_H1,0)-0.00...") ;}
if (  ( (LastOpenPrice(OP_BUY)-0.0030)>MarketInfo("EURUSD",MODE_BID) )  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_BUY)-0.0030)>=MarketInfo(" EURUSD",MODE_BID) )  )") ;}
if (  ( ((iOpen("EURUSD",PERIOD_H1,0)+0.0030)<=MarketInfo("EURUSD",MODE_BID)) )  ) 
  {   SELL("EURUSD",S_EURUSD_LS_0,S_EURUSD_TP_0,S_EURUSD_SL_0,S_EURUSD_TS_0,"if (  ((iOpen(EURUSD,PERIOD_H1,0)+0.00...") ;}
if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo(" EURUSD",MODE_BID) )") ;}

Como você pode ver nas imagens

Comecei a testar a EA de 01/03/2011 a 11/04/2011

na primeira hora para 01/03/2011

a posição foi aberta , mas ninguém das condições acima disponíveis . que me deixou realmente louco

 
Hand:

a explicação da função n.4 é clara?

a função número 4:

// eu quero que o pedido seja fechado antes do último pedido fechado o que comprar ou vender.

4- função para obter e manter o preço de fechamento anterior antes do último fechamento do pedido whatover compra ou venda. obrigado

Preço de fechamento? preço de fechamento do bar antes do bar onde o último pedido fechou ? ou o preço de fechamento do pedido da Compra ou Venda que fechou antes do último que fechou ?
 

a segunda opção:

o preço de fechamento do pedido da Compra ou Venda que fechou antes do último que fechou ?

 
Hand:

a segunda opção:

o preço de fechamento do pedido da Compra ou Venda que fechou antes do último que fechou ?

Experimente esta . . .

Para obter o último preço de fechamento do último pedido que foi uma Compra ou uma Venda e corresponder ao Símbolo e número mágico.faça este último preço de fechamento(1)

Para conseguir o anterior a isso, . . . LastClosePrice(2 )

double LastClosePrice(int Order)
   { 
 
   double ClosePrice;                         

   for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)            // Only my CLOSED  orders 
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() < OP_BUYLIMIT )
         {
         Order--;
         if (Order == 0)                                            //  determines if we have found the Order we are interested in
            {
            ClosePrice = OrderCloseprice();
            break;
            }
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

NOTA: este código NÃO TRABALHARÁ com seus números mágicos como mostrado em seu código acima . . .

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090; 


WHY ? ? ? ?
 

Gente.

Há alguém que possa usar o programa Teamviewer, então acessaremos o togethor e verificaremos qual é o verdadeiro problema.

 
Hand:

caras,

Realmente não funciona

Como você pode ver nas imagens

Comecei a testar a EA de 01/03/2011 a 11/04/2011

na primeira hora para 01/03/2011

a posição foi aberta , mas ninguém das condições acima disponíveis . que me deixou realmente louco

Não é uma loucura. É "razoável" que uma ordem seja aberta porque:

double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       
      && OrderSymbol() == Symbol()    // and my pair.             
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice); //  <-------  this returns the Order Open Price OR ZERO.

Se a função acima retorna ZERO, então qualquer cenário como o abaixo pode ocorrer

 if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) <--------------- 0+0.0030=0.0030<Bid: TRUE
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

Sugiro que você coloque uma lógica "mestre", acima e acima disto. Se a função LastOpenPrice(...) retorna zero.... qual é o seu plano de jogo?