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

 

Como é que eu consigo acertar o preço de abertura de um bar e se eu não conseguir que o preço de abertura saia?

Esboço de algumas opções. Mas talvez haja um código melhor e mais correcto?

   if(iOpen(Symbol(),Period(),0)==0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     }
  if(iOpen(Symbol(),Period(),0)==0.0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0.0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     } 
  if(iOpen(Symbol(),Period(),0)==0 && iOpen(Symbol(),Period(),0)==0.0)
     {
      return;
     }
     {
      if(iOpen(Symbol(),Period(),0)!=0 && iOpen(Symbol(),Period(),0)!=0.0)
        {
         double   open=iOpen(Symbol(),Period(),0);
        }
     }     
 
ilvic:

Como é que eu consigo acertar o preço de abertura de um bar e se eu não conseguir que o preço de abertura saia?

Esboço de algumas opções. Mas talvez haja um código melhor e mais correcto?

As funções iXXXX só fazem sentido se estiver a executar um pedido único, sem loops e sem chamar quaisquer outras funções iXXXX.

Se precisar de obter o preço de abertura apenas uma vez, então veja a ajudada iOpen:

Valor de retorno

*** 0 em caso de erro.

Portanto, é necessário consultar o preço e verificar se é zero: se não for zero, então o preço é recebido, se for zero, então é um erro.

double open=iOpen(Symbol(),Period(),0);
if(open==0.0)
   retutn;
 
Pode por favor dizer-me como inserir o parâmetro 9 com uma grelha (#CL) para que o compilador não gere um erro?
enum Symboll_
  {
   AUDUSD=0,
   NZDUSD=1,
   USDCAD=2,
   USDCHF=3,
   USDJPY=4,
   EURJPY=5,
   EURUSD=6,
   GBPUSD=7,
   #CL   =8
  };
 
Vladimir Karputov:

As funções iXXXX só fazem sentido se estiver a executar um pedido único, sem ciclos e sem chamar quaisquer outras funções iXXXX.

Se precisar de obter o preço de abertura apenas uma vez, consulte a ajudaiOpen:

Valor de retorno

*** 0 em caso de erro.

Portanto, é necessário consultar o preço e verificar se é zero: se não for zero, então o preço é recebido, se for zero, então é um erro.

Obrigado. Mais uma pergunta. Devemos usar parênteses neste código ou não faz diferença?

   double   open=iOpen(Symbol(),Period(),0);
   if(open==0.0)
     {
      return;
     }
 
xxz:
Pode dizer-me como inserir o parâmetro 9 com uma grelha (#CL) para que o compilador não gere um erro?

Assim:

   enum MySymbol
     {
      symbol_0=0,// AUDUSD
      symbol_1=1,// NZDUSD
      symbol_2=2,// USDCAD
      symbol_3=3,// USDCHF
      symbol_4=4,// USDJPY
      symbol_5=5,// EURJPY
      symbol_6=6,// EURUSD
      symbol_7=7,// GBPUSD
      symbol_8=8,// #CL
     };
 
ilvic:

Obrigado. Mais uma pergunta. Devem ser utilizados parênteses neste código ou não faz diferença?

   double   open=iOpen(Symbol(),Period(),0);
   if(open==0.0)
      return;

Serve. Em geral, os parênteses são destinados a um grupo de acções. Se houver apenas uma acção, não têm qualquer utilidade.

int n;
double y;
if(бла-бла-бла)
         n = бла-бла;
else
  {
         n = бла-бла;
         y = бла;
  )
 
Vladimir Karputov:

Aí está:

Muito obrigado!

Porque tentei assim e não funcionou:

  enum  Symboll_
  {
   SIM_0,  //AUDUSD
   SIM_1,  //NZDUSD
   SIM_2,  //USDCAD
   SIM_3,  //USDCHF
   SIM_4,  //USDJPY
   SIM_5,  //EURJPY
   SIM_6,  //EURUSD
   SIM_7   //#CL
  };  
 
xxz:

Muito obrigado!

Porque tentei assim e não funcionou:

Ou assim:

   enum MySymbol
     {
      symbol_0=0,// AUDUSD
      symbol_1=1,// NZDUSD
      symbol_2=2,// USDCAD
      symbol_3=3,// USDCHF
      symbol_4=4,// USDJPY
      symbol_5=5,// EURJPY
      symbol_6=6,// EURUSD
      symbol_7=7,// GBPUSD
      symbol_8=8,// #CL
     };
   string my_symbol[9]=
     {
      "AUDUSD",
      "NZDUSD",
      "USDCAD",
      "USDCHF",
      "USDJPY",
      "EURJPY",
      "EURUSD",
      "GBPUSD",
      "#CL"
     };
 
Vladimir Karputov:

ou isto:

É esse mesmo!

Nessas variantes, saiu apenas um número de série ouSIM_1,...etc.

 
Ao testar uma EA com várias moedas, há um problema com o tamanho do lote. Tenho um 0,03 fixo, mas durante o teste as encomendas aparecem com o volume de 0,1. Imediatamente uma falha aparece na tabela. Serei apenas eu?