Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 664

 
Alexey Kozitsyn:
Sim, os parâmetros de entrada não podem ser modificados. Para ser honesto, não percebo porque é que precisa de alterar este valor de acordo com citações de 3/5 dígitos? Define-se este valor nos parâmetros de entrada. Não pode simplesmente escrever 100 (se 3/5 dígitos) e não se incomodar?

De facto, optimizo em 5 dígitos - mais história, mas negoceio em 4 e utilizo configurações diferentes, incluindo pontos. Não quero confundir as configurações - é por isso que esta é a solução.

 
-Aleks-:

De facto, optimizo em 5 dígitos - mais história, mas negoceio em 4 e utilizo configurações diferentes, incluindo pontos. Não quero confundir as configurações - é por isso que esta é a solução.

Deveria funcionar desta forma

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}
 
Vitaly Muzichenko:

Isto deve funcionar

int Sign = 1;

int OnInit() {
// Округлим огрызки - 3 и 5 знак
Sign=(SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3 || SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5)?10:1;
// Приведем к терминальному количеству знаков
TakeProfit*=Sign;
StopLoss*=Sign;
TrailingShift*=Sign;
TrailingStep*=Sign;
Slippage*=Sign;
}


Obrigado - Vou experimentar assim que conseguir pôr a EA a funcionar...

 

Também recebo este erro - como é que o corrijo?

'MODE_MAIN' - identificador enumerador já definido initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

 
-Aleks-:

Em tal situação, recebo um erro - ajude-me a compreender porque ocorre o erro - na MQL5 não se pode alterar o valor de uma variável introduzida pelo utilizador?

Não pode!

Se decidiu usar MQL4_to_MQL5.mqh, recomendo-lhe vivamente que não o faça. Uma vez que foi escrito para os exemplos, que se encontram na descrição da biblioteca. Ou seja, não é de todo universal. Em particular, existe uma versão muito limitada do MarketInfo (para fazer funcionar apenas exemplos). Mas existem boas soluções. Por conseguinte, é melhor não utilizar este mqh em si, mas apenas tirar dele coisas úteis.

 
-Aleks-:

Também recebo este erro - como é que o corrijo?

'MODE_MAIN' - identificador enumerador já definido initmql4__1.mqh 223 24


 ENUM_STO_PRICE StoFieldMigrate(int field)


  {
   switch(field)
     {
      case 0: return(STO_LOWHIGH);
      case 1: return(STO_CLOSECLOSE);
      default: return(STO_LOWHIGH);
     }
  }

//+------------------------------------------------------------------+
enum ALLIGATOR_MODE  { MODE_GATORJAW=1,   MODE_GATORTEETH, MODE_GATORLIPS };
enum ADX_MODE        { MODE_MAIN,         MODE_PLUSDI, MODE_MINUSDI };
enum UP_LOW_MODE     { MODE_BASE,         MODE_UPPER,      MODE_LOWER };
enum ICHIMOKU_MODE   { MODE_TENKANSEN=1,  MODE_KIJUNSEN, MODE_SENKOUSPANA, MODE_SENKOUSPANB, MODE_CHINKOUSPAN };
enum MAIN_SIGNAL_MODE{ MODE_MAIN,         MODE_SIGNAL };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CopyBufferMQL4(int handle,int index,int shift)
  {
   double buf[];
   switch(index)
     {
      case 0: if(CopyBuffer(handle,0,shift,1,buf)>0)
         return(buf[0]); break;
      case 1: if(CopyBuffer(handle,1,shift,1,buf)>0)
         return(buf[0]); break;
      case 2: if(CopyBuffer(handle,2,shift,1,buf)>0)
         return(buf[0]); break;
      case 3: if(CopyBuffer(handle,3,shift,1,buf)>0)
         return(buf[0]); break;
      case 4: if(CopyBuffer(handle,4,shift,1,buf)>0)
         return(buf[0]); break;
      default: break;
     }
   return(EMPTY_VALUE);
  }
//+------------------------------------------------------------------+

Renomear. Os campos de TODOS os enumeradores devem ser diferentes. E tem os mesmos campos noenum ADX_MODE eno enum MAIN_SIGNAL_MODE.
 
fxsaber:
Renomeação. Os campos de TODAS as enumerações devem ser diferentes. E tem os mesmos campos noenum ADX_MODE eno enum MAIN_SIGNAL_MODE.

Comentei por agora... Não acho que seja crítico...

No entanto, compilou uma EA usando duas bibliotecas - funções comerciais e tradução de outras funções de 4 a 5.

Ainda estou farto do testador em 5 - Não consigo encontrar onde podem ser adicionados indicadores na visualização e como filtrar o registo...

Ainda não se consegue ver as encomendas em aberto, eh.

 

Como interpretar isto:

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Ao definir erro imprevisto pendente - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder enviou um pedido para estabelecer uma ordem. Tipo: BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 paragem de compra falhada 1,00 RTS-12,16 a 68180 sl: 67260 tp: 68200 [Expiração inválida]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Ao definir erro imprevisto pendente - 4756

 
-Aleks-:

Como interpretar isto:

2016.11.04 20:42:25.224 2016.02.11 14:04:30 Ao definir erro imprevisto pendente - 4756
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Magic=49266773 cPoza::setOrder enviou um pedido para estabelecer uma ordem. Tipo: BuyStop lot=1.0 opPrice=68180.0 tp=68200.0 sl=67260.0
2016.11.04 20:42:25.224 2016.02.11 14:04:30 paragem de compra falhada 1,00 RTS-12,16 a 68180 sl: 67260 tp: 68200 [Expiração inválida]
2016.11.04 20:42:25.224 2016.02.11 14:04:30 Ao definir erro imprevisto pendente - 4756

Há algo de errado com a definição de expiração.
 
-Aleks-:

Até agora, estou farto do testador em cinco - não consigo encontrar onde os indicadores podem ser adicionados à visualização e como filtrar o registo...

Ainda não há forma de ver as encomendas em aberto, eh.

Estou a utilizar um guião MT4 convertido de 2006 para ver a história do testador. Mostra tudo tão convenientemente como o MT4.