Realização Parcial

Para adicionar comentários, por favor Faça o login ou registrar
BRUNO CONTE DE FREITAS
43
BRUNO CONTE DE FREITAS  

Bom dia pessoal, estou quebrando a cabeça para conseguir fazer realização parcial, porém nao esta dando certo. Abaixo segue as minha condições de entrada, onde faço uma entrada a mercado. Caso o preço vir contra eu aumento a posição até 5x. Até ai esta Ok. O problema esta que não consigo achar uma solução para por a saída parcial dos aumentos de posições. Por exemplo. Compro um lote a mercado com um gain de 100 pontos. O preço vem contra e compro mais 2 lotes na segunda entrada. Porém quero fazer uma parcial desses 2 lotes com 50 pontos de gain, deixando uma ordem limit. Caso não atingir o gain denovo, e o preço vir contra,faria mais um aumento, efetuando a terceira entrada com mais 4 contratos. Quanto essa terceira compra for feita, automaticamente queria que cancelasse a parcial pendente da segunda entrada e abrisse uma parcial a limit para terceira entrada com os 4 contratos para um gain de 50 pontos. Obrigado


//+------------------------------------------------------------------+
// COMPRA/VENDA A MERCADO                                            |
//+------------------------------------------------------------------+
   if(!posicaoAberta && !ordemPendente && ultimoTick.last>mmHandleBuffer[0] + variacaoMedia && HoraNegociacao() && MetaDiaria())
      {
         VendaMercado();
      }
   else
      if(!posicaoAberta && !ordemPendente && ultimoTick.last<mmHandleBuffer[0] - variacaoMedia && HoraNegociacao()&& MetaDiaria())
         {
            CompraMercado();
         }
         
//+------------------------------------------------------------------+
// COMPRA/VENDA SEGUNDA ENTRADA                                      |
//+------------------------------------------------------------------+
   if(posicaoAberta && !ordemPendente && PositionGetInteger(POSITION_MAGIC) == magicNum && HoraNegociacao() && apCheck)
     {
        if(PositionGetDouble(POSITION_VOLUME) == lote && lote2>0 && variacaoMedia2>0)    
          {
            if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && !ordemAberta)
              {
                 ordemAberta = true;
                 CompraSegEntrada();
              }                                
            if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && !ordemAberta)
              {
                 ordemAberta = true;
                 VendaSegEntrada();
              }            
        else
            {
               ordemAberta = false;
            }
          }
//+------------------------------------------------------------------+
// COMPRA/VENDA TERCEIRA ENTRADA                                      |
//+------------------------------------------------------------------+
        if(PositionGetDouble(POSITION_VOLUME) == lote + lote2 && lote3>0 && variacaoMedia3>0)
          {
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && !ordemAberta)
              {
                 ordemAberta = true;
                 CompraTecEntrada();
              }
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && !ordemAberta)
              {
                 ordemAberta = true;
                 VendaTecEntrada();
              }
        else
            {
               ordemAberta = false;
            }   
          }
//+------------------------------------------------------------------+
// COMPRA/VENDA QUARTA ENTRADA                                       |
//+------------------------------------------------------------------+
        if(PositionGetDouble(POSITION_VOLUME) == lote + lote2 + lote3 && lote4>0 && variacaoMedia4>0)  
          { 
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && !ordemAberta)
              {
                 ordemAberta = true;
                 CompraQuaEntrada();
              }
            if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && !ordemAberta)
              {
                 ordemAberta = true;
                 VendaQuaEntrada();
              }
        else
            {
               ordemAberta = false;
            }   
          }
//+------------------------------------------------------------------+
// COMPRA/VENDA QUINTA ENTRADA                                       |
//+------------------------------------------------------------------+
        if(PositionGetDouble(POSITION_VOLUME) == lote + lote2 + lote3 + lote4 && lote5>0 && variacaoMedia5>0) 
          {
             if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && !ordemAberta)
               {
                  ordemAberta = true;
                  CompraQuiEntrada();
               }
        if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && !ordemAberta)
          {
             ordemAberta = true;
             VendaQuiEntrada();
          }
        else
            {
               ordemAberta = false;
            }
          }
     }
   
BRUNO CONTE DE FREITAS
43
BRUNO CONTE DE FREITAS  
Alguém consegue me ajudar?
ALESSANDRO VIEIRA DA CRUZ
121
ALESSANDRO VIEIRA DA CRUZ  
BRUNO CONTE DE FREITAS:
Alguém consegue me ajudar?

Cara já resolveu ?

Se não, use isso:

https://www.mql5.com/pt/docs/standardlibrary/tradeclasses/ctrade/ctradepositionclosepartial

Documentação sobre MQL5: Biblioteca Padrão / Classes de negociação / CTrade / PositionClosePartial
Documentação sobre MQL5: Biblioteca Padrão / Classes de negociação / CTrade / PositionClosePartial
  • www.mql5.com
[in] Nome do instrumento de negociação, segundo o qual deverá ser fechada parte da posição. Se, para o fechamento parcial da posição, for especificado o símbolo (sem bilhete), será selecionada a primeira posição encontrado nesse símbolo (identificador do Expert Advisor). Por conseguinte, em alguns casos, é melhor usar a varante...
Thiago Duarte
72772
Thiago Duarte  
BRUNO CONTE DE FREITAS:
Alguém consegue me ajudar?

Essa biblioteca pode te ajudar: https://www.mql5.com/pt/code/25893

Symbol Trade Made Simple
Symbol Trade Made Simple
  • www.mql5.com
This library shows useful informations and do some functions to a symbol. Version 1.13, updated 27/Mar/2020. SYMBOL: SymbolOpenPositionsTotal(str symbol) - return the number of opened positions. SymbolOpenPositionsVolume(str symbol) - return the total volume of opened positions. SymbolPendingOrdersTotal(str symbol) - return the number of...
Para adicionar comentários, por favor Faça o login ou registrar