Market Validator ERROR: there are no trading operations - página 2

 
Fernando Souza Mendes #Tem como especificar a função criada? Estou enfrentando o mesmo problema! Agradeço desde já!

Esta é a função que verifica o volume:

//+------------------------------------------------------------------+
//|  Verifica a validez do volume da ordem                           |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
  {
//--- valor mínimo permitido para operações de negociação
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {
      description=StringFormat("Volume inferior ao mínimo permitido SYMBOL_VOLUME_MIN=%.2f",min_volume);
      return(false);
     }

//--- volume máximo permitido para operações de negociação
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Volume superior ao máximo permitido SYMBOL_VOLUME_MAX=%.2f",max_volume);
      return(false);
     }

//--- obtemos a gradação mínima do volume
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("O volume não é múltiplo da gradação mínima SYMBOL_VOLUME_STEP=%.2f, volume mais próximo do valido %.2f",
                               volume_step,ratio*volume_step);
      return(false);
     }
   description="Valor válido do volume";
   return(true);
  }


Sugiro implementar também uma função para normalizar o volume:

//+--------------------------------------------------------------------------------------------------------------------+
//| This function normalizes the volume according to the minimum volume change step                                    |
//+--------------------------------------------------------------------------------------------------------------------+
bool NormalizeVolume(string symbol, double &lots)
  {
// Local variables
   double LotMin, LotMax, LotStep;

// Minimal allowed volume for trade operations
   if(!SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN, LotMin))
     {
      Print(__FUNCTION__, " - Error getting the SYMBOL_VOLUME_MIN: ", GetLastError(), " - ", symbol);
      return(false);
     }
// Maximal allowed volume for trade operations
   if(!SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX, LotMax))
     {
      Print(__FUNCTION__, " - Error getting the SYMBOL_VOLUME_MAX: ", GetLastError(), " - ", symbol);
      return(false);
     }
// Get minimal step of volume changing
   if(!SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP, LotStep))
     {
      Print(__FUNCTION__, " - Error getting the SYMBOL_VOLUME_STEP: ", GetLastError(), " - ", symbol);
      return(false);
     }

// Normalizes the volume
   lots = LotMin + MathFloor((lots - LotMin) / LotStep) * LotStep;
   lots = NormalizeDouble(MathMin(LotMax, MathMax(LotMin, lots)), 2);

// Normalized volume
   return(true);
  }
 
Fernando Carreiro #:

V. Teste do Produto

  1. Os produtos vendidos através do serviço Mercado são submetidos a uma verificação preliminar automática. Os requisitos do produto são descritos nos artigos  Que testes deve passar o robô de negociação antes da publicação no Mercado e Dicas para uma apresentação eficaz do produto no Mercado.

Muito Obrigado meu amigo!

 

I am not receiving confirmation via SMS or Telegram to confirm the seller registration.

Has anyone managed to do this?