Tenho Somente Comando de Buy mas meu EA vende tambem PORQUE?

 

Boa noite . Alguem por favor me diga o porque meu EA Faz operaçoes de venda se eu tenho no código fonte somente Comando de compra?

Segue a baixo meu código:

//+------------------------------------------------------------------+

//|                                                      Hedgind.mq5 |

//|                     Copyright 2016, Instituto MS | Maylon sales. |

//|                                              nolyam@yahoo.com.br |

//+------------------------------------------------------------------+

#property copyright "Copyright 2016, Instituto MS | Maylon sales."

#property link      "nolyam@yahoo.com.br"

#property version   "1.00"

//--- input parameters

#include <Trade\AccountInfo.mqh>

#include <Indicators\Trend.mqh>

#include <Trade\Trade.mqh>

#include <Trade\SymbolInfo.mqh>





input int      EA_Magic=123;



double   iMA_Handle;

double   StopLoss=60;

double   TakeProfit=30;

double   maVal[]; 

double   Lote=0.01;

double   Balanco;

double   PrecoAtual;

double   iMA_buf[];

double   Close_buf[];

int      iMaPeriod= 100;

double   p_close;

CTrade   TradeAction  ; 





//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   iMA_Handle=iMA(_Symbol,PERIOD_CURRENT,iMaPeriod,0,MODE_SMA,PRICE_CLOSE);

   if(iMA_Handle<0)

     {

      Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");

     }



   return(INIT_SUCCEEDED);

  }

                             



//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

IndicatorRelease(iMA_Handle);

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   if(Bars(_Symbol,_Period)<60) // if total bars is less than 60 bars

     {

      Alert("We have less than 60 bars, EA will now exit!!");

      return;

     }

     

      Balanco = AccountInfoDouble(ACCOUNT_EQUITY);

   

   if(Balanco>800)

     {

        Lote=((Balanco*0.01)/100);

        

     }



    

//--- Aqui vamos definir a estrutura MLQ5 que serve para usar nos trader. FINALMENTE !!!

MqlTick ultimoPreco; // obiter informação do ultimo preço do simbulo chamendo a função SymbolInfoTick()

MqlTradeResult mresult; // retorna os dados sobre o resultado do trade.

MqlRates mrate[];   //Esta estrutura armazena informações sobre os preços, volumes e spread de cada barra.



// the rates arrays

   ArraySetAsSeries(mrate,true); // Em cada tick vai indexar o valor no array mrate

// the MA-100 values arrays

   ArraySetAsSeries(maVal,true);







   if(!SymbolInfoTick(_Symbol,ultimoPreco)) // função para indexar valores dos ultimos preços na ultimoPerco

     {

      Alert("Error getting the latest price quote - error:",GetLastError(),"!!");

      return;

     }   



   if(CopyRates(_Symbol,_Period,0,3,mrate)<0) //copiamos a informação sobre as três últimas barras em noso arranjo do tipo Mqlrates

     {

      Alert("Error copying rates/history data - error:",GetLastError(),"!!");

      return;

     }

     

   if(CopyBuffer(iMA_Handle,0,0,3,maVal)<0) //Copia os dados do indicador IMA ( array iMA_Handle) para o array maVal

     {

      Alert("Error copying Moving Average indicator buffer - error:",GetLastError());

      return;

     }

     

     //verificar se nós já possuímos uma posição de compra ou venda aberta

   bool Buy_opened=false;  // variable to hold the result of Buy opened position

   bool Sell_opened=false; // variable to hold the result of Sell opened position

   if (PositionSelect(_Symbol) ==true)  // PositionSelect Escolhe uma posição aberta para postiriormente trabalhar com ela.

    {

         if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)//PositionGetInteger A função retorna a propriedade solicitada de uma posição aberta

         {

            Buy_opened = true;  //It is a Buy

         }



     }

     

     p_close=mrate[1].close; //armazenar o preço de fechamento para a barra que utilizaremos para a nossa configuração de compra/venda.

     

     bool Buy_Condition_1 = (maVal[0]>maVal[1]) && (maVal[1]>maVal[2]); // MA-100 Increasing upwards

     bool Buy_Condition_2 = (p_close > maVal[1]);         // previuos price closed above MA-100

   if(Buy_Condition_1 && Buy_Condition_2)

     {

         if (Buy_opened) 

            {

            Alert("We already have a Buy Position!!!"); 

            return;    // Don't open a new Buy Position

            }

          

         TradeAction.Buy(Lote,NULL,NULL,NormalizeDouble(ultimoPreco.last,_Digits)-(StopLoss/1000),(TakeProfit/1000)+NormalizeDouble(ultimoPreco.last,_Digits),"Pedido de Compra Realizada");

       

       if(mresult.retcode==10009 || mresult.retcode==10008) //Qualquer um dos dois mostra que a ordem de compra foi bem sucedida.

           {

            Alert("A ordem de compra foi bem sucedida com o  Ticket#:",mresult.order,"!!");

           }

         else

           {

            Alert("A ordem de compra não foi completada :( -error:",GetLastError());

            ResetLastError();           

            return;

           }

      

      

      }
             

  } 
 
mimilon:

Boa noite . Alguem por favor me diga o porque meu EA Faz operaçoes de venda se eu tenho no código fonte somente Comando de compra?

Segue a baixo meu código:

Rodei seu código em teste durante o dia 9

Ele produziu uma operação de compra feita pelo seu código

e uma operação de venda feita porque acabou o período de tempo

que determinei para o seu EA trabalhar ( do dia 9 ao dia 10)

Parece normal.

 
mimilon:

Boa noite . Alguem por favor me diga o porque meu EA Faz operaçoes de venda se eu tenho no código fonte somente Comando de compra?

Segue a baixo meu código:

Olá mimilon,

Por favor nas próximas postagens utilize o botão SRC na parte superior do editor para postar trechos de código.

Assim a formatação será automática e irá obedecer o esquema de cores do próprio MetaEditor.

Dessa vez eu fiz pra você. :-) 

Abraços,

Malacarne 

Razão: