Comando para o robo parar de operar

 

Alguém sabe o comando para ele parar de operar, estou com um EA para notícias q gostaria que ele parasse de operar nas notícias.


if(CheckNews>0)

     {

      /////  We are doing here if we are in the framework of the news

      COLOCAR COMANDO AQUI EU ACHO!

      Comment("News time");


     }else{

      // We are out of scope of the news release (No News)

      Comment("No news");


 

if(checknews!=0)

{

Comment("Não tem news");

return;

}




wessk:

Alguém sabe o comando para ele parar de operar, estou com um EA para notícias q gostaria que ele parasse de operar nas notícias.


if(CheckNews>0)

     {

      /////  We are doing here if we are in the framework of the news

      COLOCAR COMANDO AQUI EU ACHO!

      Comment("News time");


     }else{

      // We are out of scope of the news release (No News)

      Comment("No news");


 

Por favor,


poderiam me ajudar?


Gostaria de fazer uma ordem de compra no cruzamento de MM 6/21 e somente fechar quando houver lucro de quando o cruzamento inverter:


int start()

{

  double MyPoint=Point;

  if(Digits==3 || Digits==5) MyPoint=Point*10;

  

  double TheStopLoss=0;

  double TheTakeProfit=0;

  if( TotalOrdersCount()==0 ) 

  {

     int result=0;

     if((iMA(NULL,0,6,1,MODE_SMA,PRICE_CLOSE,1)>iMA(NULL,0,21,1,MODE_SMA,PRICE_CLOSE,1))) // Here is your open buy rule

     {

        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Blue);

        if(result>0)

        {

         TheStopLoss=0;

         TheTakeProfit=0;

         if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;

         if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;

         OrderSelect(result,SELECT_BY_TICKET);

         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);

        }

        return(0);

     }

  }

  

  for(int cnt=0;cnt<OrdersTotal();cnt++)

     {

      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

      if(OrderType()<=OP_SELL &&   

         OrderSymbol()==Symbol() &&

         OrderMagicNumber()==MagicNumber 

         )  

        {

         if(OrderType()==OP_BUY)  

           {

              if((iMA(NULL,0,6,1,MODE_SMA,PRICE_CLOSE,1)<iMA(NULL,0,21,1,MODE_SMA,PRICE_CLOSE,1))) //here is your close buy rule

              {

                   OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);

              }

            if(TrailingStop>0)  

              {                 

               if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)

                 {

                  if(OrderStopLoss()<Bid-MyPoint*TrailingStop)

                    {

                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);

                     return(0);

                    }

                 }

              }

           }

         else 

           {

            if(TrailingStop>0)  

              {                 

               if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))

                 {

                  if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))

                    {

                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);

                     return(0);

                    }

                 }

              }

           }

        }

     }

   return(0);

}


int TotalOrdersCount()

{

  int result=0;

  for(int i=0;i<OrdersTotal();i++)

  {

     OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);

     if (OrderMagicNumber()==MagicNumber) result++;


   }

  return (result);

}


 
Cordeiro1000:

Por favor,


poderiam me ajudar?


Gostaria de fazer uma ordem de compra no cruzamento de MM 6/21 e somente fechar quando houver lucro de quando o cruzamento inverter:


int start()

{

  double MyPoint=Point;

  if(Digits==3 || Digits==5) MyPoint=Point*10;

  

  double TheStopLoss=0;

  double TheTakeProfit=0;

  if( TotalOrdersCount()==0 ) 

  {

     int result=0;

     if((iMA(NULL,0,6,1,MODE_SMA,PRICE_CLOSE,1)>iMA(NULL,0,21,1,MODE_SMA,PRICE_CLOSE,1))) // Here is your open buy rule

     {

        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Blue);

        if(result>0)

        {

         TheStopLoss=0;

         TheTakeProfit=0;

         if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;

         if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;

         OrderSelect(result,SELECT_BY_TICKET);

         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);

        }

        return(0);

     }

  }

  

  for(int cnt=0;cnt<OrdersTotal();cnt++)

     {

      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

      if(OrderType()<=OP_SELL &&   

         OrderSymbol()==Symbol() &&

         OrderMagicNumber()==MagicNumber 

         )  

        {

         if(OrderType()==OP_BUY)  

           {

              if((iMA(NULL,0,6,1,MODE_SMA,PRICE_CLOSE,1)<iMA(NULL,0,21,1,MODE_SMA,PRICE_CLOSE,1))) //here is your close buy rule

              {

                   OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);

              }

            if(TrailingStop>0)  

              {                 

               if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)

                 {

                  if(OrderStopLoss()<Bid-MyPoint*TrailingStop)

                    {

                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);

                     return(0);

                    }

                 }

              }

           }

         else 

           {

            if(TrailingStop>0)  

              {                 

               if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))

                 {

                  if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))

                    {

                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);

                     return(0);

                    }

                 }

              }

           }

        }

     }

   return(0);

}


int TotalOrdersCount()

{

  int result=0;

  for(int i=0;i<OrdersTotal();i++)

  {

     OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);

     if (OrderMagicNumber()==MagicNumber) result++;


   }

  return (result);

}


Este comando funciona no MT4?

 

Olá pessoal,

Por favor usem o editor de códigos para postar trechos de códigos aqui no fórum MQL5.com!!!

Exemplo de código postado de forma errada:

if(checknews!=0)
{
Comment("Não tem news");
return;
}

Exemplo de código postado da maneira correta:

if(checknews!=0)
  {
   Comment("Não tem news");
   return;
  }

Abraços,
Malacarne

 

O comando "return" vai apenas encerrar o processamento do evento que estiver sendo tratado (OnTick, OnBookEvent, OnTradeTransaction, etc.). O robô vai continuar operando e processando novos eventos. 

Pelo que entendi vc quer desativar o robô (removê-lo do gráfico), não é isso?

Para desativar o robô, antes de executar o "return" chame a função ExpertRemove(). Essa função vai fazer com que, logo em seguida ao "return", todos os eventos pendentes sejam descartados, a função OnDeinit seja executada e o robô seja removido do gráfico.

if(CheckNews>0)
  {
   Comment("News time");
   ExpertRemove();
   return;
  }

Agora, se você quiser que o robô continue ativo, mas apenas deixe de operar durante o período de notícias (acho que não foi isso que vc quis perguntar, pois nesse caso a solução é trivial), basta declarar essa variável CheckNews como global e condicionar a ela todas as operações que o robô for fazer (encerrar imediatamente posições ativas, não abrir posições novas, etc.).  

obs: notícias são o terror dos analistas gráficos, pois bagunçam todo o framework de análise em que eles se baseiam (ondas, tendências, suportes/resistências, indicadores, etc.), no entanto elas são as melhores oportunidades pra se fazer dinheiro no curto prazo, surfando uma onda gigante em poucos minutos. Eu, no seu lugar, em vez de parar de operar, colocaria na pedra uma uma ordem Buy Stop alguns pontinhos acima do último topo do gráfico de 1 minuto e uma Sell Stop alguns pontinhos abaixo do último fundo, ambas com stop curto (pra não arriscar muito) e ganho longo (largando metade da mão na mesma distância do stop, pra zerar o risco no caso de o preço voltar), sem esquecer de cancelar a ordem oposta quando uma delas for executada e de cancelar as duas caso nenhuma seja executada após passados uns 2 minutos (nesse caso a noticia não surtiu efeito e as ordens não fazem mais sentido). Só uma sugestão de um pato velho que gosta de surfar no mercado, que algumas vezes surfa maremotos e outras vezes toma caldo e se esborracha na areia! rsrs  

 

Ola Pessoal .... gostaria de criar um indicador ou script ou ea ... que ligasse a negociação automatica e desligasse a negociação automatica 

do metatrader ... exemplo o mt4 fica desligado ate 5 minutos antes das noticias ... ai ele liga a negociação e desliga a negociação automatica 5 minutos depois 

este script ea ou indicador teria que monitorar um indicador de noticias.


é possivel criar um assim ... eu tenho um indicador que faz o contrario ele desliga o mt4 5 miutos antes das noticias e liga 5 depois ....  queria que fosse ao inverso 


att marcos 

 
Marcos Pereira:

Ola Pessoal .... gostaria de criar um indicador ou script ou ea ... que ligasse a negociação automatica e desligasse a negociação automatica 

do metatrader ... exemplo o mt4 fica desligado ate 5 minutos antes das noticias ... ai ele liga a negociação e desliga a negociação automatica 5 minutos depois 

este script ea ou indicador teria que monitorar um indicador de noticias.


é possivel criar um assim ... eu tenho um indicador que faz o contrario ele desliga o mt4 5 miutos antes das noticias e liga 5 depois ....  queria que fosse ao inverso 


att marcos 

Hello Guys .... I would like to create an indicator or script or ea ... that would turn on automatic trading and turn off automatic trading


from metatrader ... example mt4 stays off until 5 minutes before the news ... then it turns on trading and turns off automatic trading 5 minutes later


this script and the indicator would have to monitor a news indicator.




it is possible to create one like this ... I have an indicator that does the opposite it turns off the mt4 5 minutes before the news and turns it on 5 after .... I wish it was the other way around




att marcos

 
Hello Guys .... I would like to create an indicator or script or ea ... that would turn on automatic trading and turn off automatic trading

from metatrader ... example mt4 stays off until 5 minutes before the news ... then it turns on trading and turns off automatic trading 5 minutes later

this script and the indicator would have to monitor a news indicator.



it is possible to create one like this ... I have an indicator that does the opposite it turns off the mt4 5 minutes before the news and turns it on 5 after .... I wish it was the other way around



att marcos
 
Marcos Pereira:

Ola Pessoal .... gostaria de criar um indicador ou script ou ea ... que ligasse a negociação automatica e desligasse a negociação automatica 

do metatrader ... exemplo o mt4 fica desligado ate 5 minutos antes das noticias ... ai ele liga a negociação e desliga a negociação automatica 5 minutos depois 

este script ea ou indicador teria que monitorar um indicador de noticias.


é possivel criar um assim ... eu tenho um indicador que faz o contrario ele desliga o mt4 5 miutos antes das noticias e liga 5 depois ....  queria que fosse ao inverso 


att marcos 

Me assusta uma pessoa que vende robôs e sinais e não saber fazer uma simples trava.

Por isso esse mercado é tão prostituido. 

Razão: