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

 
Fiz a correção para pedidos de venda ou compra, eu negocio somente eurusd, portanto não há problema com os símbolos. Eu não uso EA's, então todos os pedidos são feitos manualmente! O problema é como diferenciar para fechar os pedidos que tenho para escalar dos pedidos de longa data.
 
extern double CloseforBuy=1.4;
extern double CloseforSell=1.3;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

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

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


{
if(OrderType()==OP_BUY)
{
if(Bid>CloseforBuy)
{
for(int a=OrdersTotal()-1;a>=0;a--)
if(OrderSelect(a,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----

}}
if(OrderType()==OP_SELL)
{
if(Ask<CloseforSell)
{
for(int b=OrdersTotal()-1;b>=0;b--)
if(OrderSelect(b,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----
}}

return(0);
}
 

Você não pode fazer isso . . .

if(OrderType()==OP_BUY)

. . até após seu OrderSelect() . . ler a documentação para OrderType(), ela diz "Nota: o pedido deve ser selecionado pela funçãoOrderSelect() ".

Tente . . .

if(Bid>CloseforBuy)
   {
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());

   }
 
deVries:

você pode fixar o tp em 25 pips e fechar o comércio então em 5 pips

Sim, mas se de repente os preços mudarem mais de 5 pips, você não poderá fechar o pedido a tempo. É parte dos riscos.

Com os melhores cumprimentos e boas negociações!!!

 
RaptorUK:

Você não pode fazer isso . . .

. . até após seu OrderSelect() . . . leia a documentação para OrderType() , ela diz "Nota: o pedido deve ser selecionado pela funçãoOrderSelect() ".

Tente. . .

Muito obrigado por sua ajuda, eu fiz a correção! Ótimo!!!

Você tem alguma proposta para filtrar e fechar uma das compras/vendas e não todas as encomendas. Assim, será possível escalpar e manter os pedidos a longo prazo!

Muito obrigado por sua ajuda!!!

 
ats:

Muito obrigado por sua ajuda, eu fiz a correção! Ótimo!!!

Você tem alguma proposta para filtrar e fechar uma das compras/vendas e não todas as encomendas. Assim, será possível escalpar e manter os pedidos a longo prazo!

Provavelmente, mas isso é determinado por sua estratégia . . qual ordem você quer fechar e qual você quer deixar em funcionamento, quando você tiver determinado que deve ser simples o suficiente para codificá-la.
 

Para determinar qual ordem você quer fechar é fácil. Esta é a ordem para o escalpe! Digamos a última ordem!

 

A idéia básica é: 1. Você tem posições abertas a longo prazo e quer escalpar

2. você estabelece uma ordem pendente

3. Você liga a EA

4. A EA fecha somente ESTA ordem

5. Você desliga a EA

 
ats:

Para determinar qual ordem você quer fechar é fácil. Esta é a ordem para o escalpe! Digamos a última ordem!

O último pedido feito deve ter o maior número de posição de pedido ... você pode verificar duas vezes por OrderOpenTime()
 
RaptorUK:
O último pedido feito deve ter o maior número de posição de pedido ... você pode verificar duas vezes por OrderOpenTime()

Boa idéia! Eu não pensei sobre isso