MetaTrader 4 Build 529 beta lançado com novo compilador - página 125

 
stringo:

Você não pode mudar as variáveis de entrada!

Use a palavra-chave entrada em vez de externa, então o compilador não permitirá que você faça isso

Veremos o que podemos fazer para manter a velha funcionalidade quadruplet.

O PS agradece muito por ter trazido à tona


Portanto, não havia nenhum objetivo de mudá-los!

Eles são usados apenas para cálculos adicionais. Nada mais!

Bem, em princípio, vejo que resolvemos este problema introduzindo uma variável extra.

extern int TakeProfit_= 10;
int TakeProfit;
......  
   int dig = (int)MarketInfo(Symbol(), MODE_DIGITS);
   if (dig == 5 || dig == 3)
   {
      TakeProfit  = TakeProfit_* 10;
.....
 
Night63:


Portanto, não havia nenhum propósito em mudá-los!

Eles são simplesmente utilizados para cálculos adicionais. Não mais do que isso!

Bem, em princípio, resolvemos este problema introduzindo uma variável adicional.


Isso é verdade... Mas por que se preocupar em verificar uma constante imutável a cada tique? É suficiente defini-lo uma vez no init()
 
stringo:

Você não pode alterar as variáveis de entrada!

Uso o valor de variáveis externas (para algumas variáveis) como valor padrão, e leio o resto dos dados para o mesmo parâmetro a partir do arquivo ini.

Conselheiros especializados trabalham simultaneamente com várias estratégias que têm seus próprios parâmetros de entrada. Exemplo:

extern int TF = 15;
int gia_TF[5];
void start()
{
    for (int li_TF = 0; li_TF < ArraySize (gia_TF); li_TF++)
    {
        TF = gia_TF[li_TF];
    }
}

Sim - o problema pode ser resolvido com a entrada de variáveis adicionais, mas por quê? Esclareça, esta funcionalidade será desprovida pelo novo MT?

 
TarasBY:
Uso o valor de variáveis externas (para algumas variáveis) como valor padrão, e leio outros dados para o mesmo parâmetro no arquivo ini-.

Os conselheiros trabalham simultaneamente com várias estratégias que têm seus próprios parâmetros de entrada. Exemplo:

Sim - a questão pode ser resolvida com a entrada de variáveis adicionais, mas por quê? Esclareça, esta funcionalidade será desprovida pelo novo MT?

Eu lhe disse. :-))

Isto é redundante. Isto significa que é desnecessário um alinhamento com variáveis externas como variáveis externas. Você pode remover o exterior. Você nem vai notar a diferença. De qualquer forma, você inicializa a partir do arquivo INI.

 
TarasBY:
Uso o valor de variáveis externas (para algumas variáveis) como valor padrão, e leio os dados restantes para o mesmo parâmetro do arquivo ini-.

Os conselheiros trabalham simultaneamente com várias estratégias que têm seus próprios parâmetros de entrada. Exemplo:

Sim - o problema pode ser resolvido com a introdução de variáveis adicionais, mas por quê?! Esclareça, esta funcionalidade será desprovida pelo novo MT?


Não, não será privado.

Tudo será o mesmo que nos quatro antigos. Os códigos escritos longos (mesmo recompilados com o novo compilador) funcionarão como antes.

 
Zhunko:

Eu lhe disse... :-))

É redundante. Isso significa que a inclusão com variáveis externas como variáveis externas é desnecessária. Você pode omitir o exterior. Você nem vai notar a diferença. De qualquer forma, você inicializa a partir do arquivo INI.

Vadim! Quem é um lutador pela universalidade e multivariância?! :)
 
stringo:

Não, não vai.

Tudo será o mesmo que no antigo quad. O código escrito longo (mesmo recompilado com o novo compilador) funcionará como antes.

Obrigado. OK.
 
avtomat:

Isso é verdade... Mas por que se preocupar em verificar uma constante imutável a cada tique? É suficiente defini-lo uma vez no init()


Você está certo, foi assim no início, nós apenas tentamos todos os tipos de coisas na fase de solução de problemas.

Agora de volta ao init, obrigado por apontar a falha!

 
stringo:

Você pode explicar o significado físico de seu código?

O símbolo já está selecionado, se seu gráfico estiver aberto, no qual este Expert Advisor trabalha.

O símbolo já selecionado não pode ser re-selecionado. Não é possível esconder um símbolo cuja carta está aberta.


O ponto físico é verificar se o símbolo cujo nome é digitado como uma string nos parâmetros de entrada da EA está disponível para comercialização. Código idêntico em MT5 funciona.

O código que citei é apenas um exemplo. Aí é um pouco diferente, mas o significado permanece o mesmo.

P.S. E o erro 138 no testador?

Código:

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE);
     }
  }

Resultado:

 
Algumas trivialidades com objetos gráficos.

Desta vez OBJ_EDIT.

1) impossível entrar dados, ao clicar dentro de OBJ_EDIT nada acontece, os dados no campo não são destacados (antes era impossível sair do campo exceto com a tecla "ENTER", agora é impossível entrar);

2) OBJPROP_ANCHOR não funciona;

3) Quando OBJ_EDIT é selecionado, um ponto para mover o objeto aparece no canto superior esquerdo, mas com uma certa compensação, embora muito pequena, dependendo de qual canto do gráfico (OBJPROP_CORNER) as coordenadas são contadas.

Nenhum outro problema com a renderização ou movimentação de objetos gráficos. Obrigado pela correção.
Razão: