Como eu ajusto o TP a menos de 5 pips? - página 4

 
É correto? Fechará apenas as ordens dos últimos 100 minutos.
if(Bid>CloseforBuy)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



if(Ask<CloseforSell)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }
 
ats:
É correto? Fechará apenas as ordens dos últimos 100 minutos.

Quase, TimeCurrent() dá uma data que representa a hora do servidor do último tick . .

Nota: tipo de data/hora (inteiro representando a quantidade de segundos decorridos a partir da meia-noite de 1 de janeiro de 1970).

Portanto, você precisa verificar que . .

TimeCurrent()-OrderOpenTime() <=

100 minutos . . ou (100 * 60) segundos

 

Muito obrigado por sua ajuda!

Feliz negociação!

 

Olá!

Eu tentei modificar a EA, mas ela não funciona corretamente. Você tem alguma idéia de onde está o erro?

Obrigado.

extern double TPforBuys=1;
extern double TPforSells=1;
extern double TimeForEA=120;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


double TPbuy = TPforBuys / 10000;
double TPB=OrderOpenPrice()+ TPbuy;

// Close Buys
if(Bid>TPB)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60)  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



double TPsell = TPforSells / 10000;
double TPS=OrderOpenPrice()- TPsell;



// Close Sells
if(Ask<TPS)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }


return(0);
}
 

Tente mudar para isto e veja se isto "funciona corretamente" ...

TimeCurrent()- OrderOpenTime() >= (TimeForEA * 60) // time to close
 

Isso é correto! A EA fecha somente encomendas que não tenham mais de 2 horas! O problema é que ela não fecha corretamente todas as ordens após 1 pip! Mas eu não sei onde está o erro!

Obrigado!

 
ats:

Isso é correto! A EA fecha somente encomendas que não tenham mais de 2 horas! O problema é que ela não fecha corretamente todas as ordens após 1 pip! Mas eu não sei onde está o erro!

Obrigado.

Então está funcionando como você quer, estou correto? Porque eu não tenho idéia do que você quer dizer com "trabalhar corretamente" e sou preguiçoso o suficiente e por isso não leio 4 páginas de respostas e códigos.

Então, na verdade, não sei exatamente por que lhe dei essa resposta :)

 
onewithzachy:

Então, na verdade, não sei exatamente por que lhe dei essa resposta :)

É bom ver a honestidade na Internet para variar :-)
 
onewithzachy:

Então, está funcionando como você quer, estou correto? Porque não tenho idéia do que você quer dizer com "trabalhar corretamente" e sou preguiçoso o suficiente e por isso não leio 4 páginas de respostas e códigos.

Então, na verdade, não sei exatamente por que lhe dei essa resposta :)

Sem problemas! Obrigado!
 

Quando você faz isso . . . .

double TPB=OrderOpenPrice()+ TPbuy;

. . qual ordem você está usando o Preço Aberto de ?? OrderOpenPrice() Nota: " Aordem deve ser primeiramente selecionada pela funçãoOrderSelect() ".