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

 
Zorian43:
Boa noite a todos! Não sei se estou a escrever no tópico certo, desculpem se estou no tópico errado. Quando instalei o Metatrader 5 no meu Android, foi criada automaticamente uma conta demo e eu estava ligado a ele cada vez que iniciava a aplicação. Quando quis ligar outra conta, desta vez do meu corretor, não consegui encontrar a palavra-chave para a conta de demonstração. Pressionei "reset password" e não consigo ligar-me à conta de demonstração depois disso. Existe alguma forma de restabelecer o acesso à conta de demonstração?
Não. Abrir uma nova conta de demonstração.
 

Olá!

Pode dizer-me por favor porque é que o método CAccountInfo::MarginCheck() pode devolver a margem de zero requerida no testador? Só devolve zero quando é solicitada uma ordem de compra limite de ORDER_TYPE_BUY_LIMIT.

Instrumento Si-9.18 - futuros dólares de MICEX.

No projecto de teste, a próxima chamada no testador dá não zero, mas 90 - um pequeno valor, que parece bastante implausível:

ENUM_ORDER_TYPE     orderType   = NULL;
uint                orderVolume = 1;
double              orderPrice  = gvTick.last;
double marginRequired = 0;

orderType       = ORDER_TYPE_BUY_LIMIT;
marginRequired  = gnCAccountInfo.MarginCheck( gsIns, orderType, orderVolume, orderPrice);
Print("  Требуемая маржа ", marginRequired);
Saída de registo: 2018.09.01 13:38:56.040 2018.06.13 12:10:00 Margem requerida 90.0
 
rel18:

Olá!

Pode dizer-me por favor porque é que o método CAccountInfo::MarginCheck() pode devolver a margem de zero requerida no testador? Só devolve zero quando solicitado para uma ordem de compra limite ORDER_TYPE_BUY_LIMIT.

Instrumento Si-9.18 - futuros dólares de MICEX.

No projecto de teste, a próxima chamada no testador dá não zero, mas 90 - um pequeno valor, que parece bastante implausível:

Suspeito porque apenas

ORDEM_TIPO_BUY

Ordem de compra no mercado

ORDER_TYPE_SELL

Ordem de venda no mercado

 
Vladimir Karputov:

Suspeito que isto se deve apenas a

ORDEM_TIPO_BUY

Ordem de compra no mercado

ORDER_TYPE_SELL

Ordem de venda no mercado

Aqui está o resultado da Ordem de Limite de Compra no testador para o mesmo exemplo. Uma margem de 90 é muito pequena. É mesmo assim?


E aqui temos uma margem de zero no testador:



Todos os testes de história são conduzidos com uma conta real.
 

O indicador deixou de funcionar, ajuda a compilar
Obrigado.

Arquivos anexados:
VP-Range-v6.mq5  44 kb
VP-v6.mq5  42 kb
 
rel18:

Aqui está o resultado de uma ordem de compra limite no testador para o mesmo exemplo. Uma margem de 90 é muito pequena, é assim que funciona?


Talvez seja a conta de demonstração? Experimente-o numa conta real com o mesmo corretor.

 
Aliaksei Karalkou:

O indicador deixou de funcionar, ajude a compilar
Obrigado.

Uma vez que a construção de 1861 tem uma função iBarShift incorporada, não pode ser usada como uma função personalizada. Por favor, renomear a função.

 

Olá! Por favor, ajudem-me nesta tarefa. Existe um valor do tipo String no formato"PERIOD_M1""PERIOD_M2""PERIOD_M3", etc. Precisamos de substituir estes valores por valores do tipo ENUM_TIMEFRAMES - PERÍODO_M1, PERÍODO_M2, PERÍODO_M3 respectivamente, etc.

No EXEMPLO abaixo tudo estaria bem, mas não podemos usar uma variável de string na declaração do interruptor, o que devemos fazer? Poderíamos apenas usar uma construção if....else, mas penso que há formas mais elegantes. Alguma sugestão? Obrigado!

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   ENUM_TIMEFRAMES tfr=Period();
   switch(timeframe) 
     {
      case "M1"  : tfr=PERIOD_M5;  break;
      case "M2"  : tfr=PERIOD_M6;  break;
      case "M3"  : tfr=PERIOD_M5;  break;
      }
//---
   return(tfr);
  }
 
Tango_X:

Olá! Por favor, ajudem-me nesta tarefa. Existe um valor do tipo String no formato"PERIOD_M1""PERIOD_M2""PERIOD_M3", etc. Precisamos de substituir estes valores por valores do tipo ENUM_TIMEFRAMES - PERÍODO_M1, PERÍODO_M2, PERÍODO_M3 respectivamente, etc.

No EXEMPLO abaixo tudo estaria bem, mas não podemos usar uma variável de string na declaração do interruptor, o que devemos fazer? Poderia apenas usar uma construção if....else, mas penso que há formas mais elegantes. Alguma sugestão? Obrigado!

Utilize a construção if()

 
Tango_X:

Olá! Por favor, ajudem-me nesta tarefa. Existe um valor do tipo String no formato"PERIOD_M1""PERIOD_M2""PERIOD_M3", etc. Precisamos de substituir estes valores por valores do tipo ENUM_TIMEFRAMES - PERÍODO_M1, PERÍODO_M2, PERÍODO_M3 respectivamente, etc.

No EXEMPLO abaixo tudo estaria bem, mas não podemos usar uma variável de string na declaração do interruptor, o que devemos fazer? Poder-se-ia simplesmente usar uma construção if....else, mas penso que há formas mais elegantes. Alguma sugestão? Obrigado!

//+------------------------------------------------------------------+
//| Преобразует строку в таймфрейм                                   |
//+------------------------------------------------------------------+
ENUM_TIMEFRAMES StringToTimeframe(string timeframe)
  {
   return
     (
      timeframe == "M1"   ?  PERIOD_M1  :
      timeframe == "M2"   ?  PERIOD_M2  :
      timeframe == "M3"   ?  PERIOD_M3  :
      timeframe == "M4"   ?  PERIOD_M4  :
      timeframe == "M5"   ?  PERIOD_M5  :
      timeframe == "M6"   ?  PERIOD_M6  :
      timeframe == "M10"  ?  PERIOD_M10 :
      timeframe == "M12"  ?  PERIOD_M12 :
      timeframe == "M15"  ?  PERIOD_M15 :
      timeframe == "M20"  ?  PERIOD_M20 :
      timeframe == "M30"  ?  PERIOD_M30 :
      timeframe == "H1"   ?  PERIOD_H1  :
      timeframe == "H2"   ?  PERIOD_H2  :
      timeframe == "H3"   ?  PERIOD_H3  :
      timeframe == "H4"   ?  PERIOD_H4  :
      timeframe == "H6"   ?  PERIOD_H6  :
      timeframe == "H8"   ?  PERIOD_H8  :
      timeframe == "H12"  ?  PERIOD_H12 :
      timeframe == "D1"   ?  PERIOD_D1  :
      timeframe == "W1"   ?  PERIOD_W1  :
      timeframe == "MN1"  ?  PERIOD_MN1 : 
      PERIOD_CURRENT
     );
  }
//+------------------------------------------------------------------+