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

 
Renat:

Construa um.

Aplicações de 32 bits em Windows de 64 bits são instaladas exclusivamente em Arquivos de Programas (x86) - estes são os requisitos de compatibilidade da Microsoft.

Os diretórios de dados na área Usuários/AppData não são mais lixo, e não são mais recomendações da Microsoft (com as quais todos os desenvolvedores não se importaram por muitos anos), mas a dura verdade da vida. Nos sistemas operacionais mais recentes, a Microsoft tem feito um martelo de forja para todos trabalharem corretamente, porque não há outra maneira de lidar com a UAC. No mercado de massa, este é o único caminho que resta.

Para forçar o terminal a armazenar a maioria dos dados em diretório local ou trabalhar em modo portátil/transportável (por exemplo, em flash), use /portable flag. Mas isto ainda não se aplica ao armazenamento de dados gerais não personalizados em Usuários/AppData.

Então como você pode explicar que as construções antigas, incluindo as 509 atuais, não criam nada em Usuários/AppData com os parâmetros que eu especifiquei? Quero dizer exatamente com os parâmetros que especifiquei.
 
Renat:

1. você pode. nós refazemos a janela da mesma forma que o MT5

2. Veja em "Arquivo - Abrir diretório de dados". Aqui é de onde o caminho será lido

3. melhor usar o conjunto completo (vários ícones em um arquivo) de 16x16 a 64x64 (128x128) arquivos .ico. Em breve os programas serão exibidos com seus ícones nativos diretamente na interface do sistema operacional.

  1. Perfeito
  2. Eu procurei: D:NewMT4 Não deveria ser D:NewMT4MQL4 ? E se não for, deve ser "MQL4";????
  3. Existe algum software para criar tais conjuntos? Não faço gráficos há trezentos anos.
(risos): Obrigado.
 
artmedia70:
  1. Muito bem
  2. Eu procurei: D:NewMT4 Não deveria ser D:NewMT4MQL4 ? E se não, o caminho deve ser "MQL4";????
  3. Existe algum software para criar estes kits? Não faço gráficos há trezentos anos.
Obrigado.

2. O terminal sabe que o seguidor MQL4 é adicionado automaticamente. Então está escrito corretamente com os arquivos

3. olhar ao redor - há todos os tipos de lançamentos do ICON Studio, incluindo os gratuitos.

 
Renat:

2. O terminal sabe que o seguidor MQL4 é adicionado automaticamente. Então está escrito corretamente com os arquivos

3. olhar ao redor - há todos os tipos de lançamentos do ICON Studio, incluindo os gratuitos.


Obrigado
 
Barbarian:
Então como você pode explicar que as construções antigas, incluindo as 509 atuais, não criam nada em Usuários/AppData com os parâmetros que eu especifiquei? Quero dizer exatamente com os parâmetros que mencionei.

A razão é que alguém não se preocupou com as exigências da Microsoft e trabalhou contra o sistema de gerenciamento de direitos por muitos anos. Estamos resolvendo os problemas acumulados do MT4.

No momento, se você quiser vender em massa qualquer coisa escrita ativamente em seus diretórios, você precisa pensar diretamente sobre a UAC rigorosa e os direitos de usuário restritos. E não se esqueça da base de instalação de milhões de computadores.

 

Renat, você poderia publicar pequenos anúncios com uma lista de mudanças em novas construções? Para que não tenhamos que testar cegamente.

Estas características serão implementadas? Será que temos que esperar?

'ChartGetInteger' - function not defined

'ChartWindowFind' - function not defined

'AccountInfoString' - function not defined

'TimeTradeServer' - function not defined

'ExpertRemove' - function not defined

'AccountInfoInteger' - function not defined

 
ALXIMIKS:


Tudo que eu tento fazer é devolver a funcionalidade do meu indicador MT4 509 (ele está 90% funcional agora, a única coisa que eu perco é a possibilidade de mudar para o futuro)

Mas para ver o futuro, você precisa mudar a série cronológica para o passado.

Você foi informado, use SetIndexShift(0, 1);

Você não precisa copiar nada.

E a descrição na ponta da ferramenta irá ajustá-la.

 
komposter:

Renat, você poderia publicar pequenos anúncios com uma lista de mudanças em novas construções? Para que não tenhamos que testar cegamente.

Estas características serão implementadas? Será que temos que esperar?

Vou adicionar "SymbolSelect" à lista. +1 para o desejo de novas descrições de construção.
 
komposter:

Renat, você poderia publicar pequenos anúncios com uma lista de mudanças em novas construções? Para que não tenhamos que testar cegamente.

Estas características serão implementadas? Será que temos que esperar?

'ChartGetInteger' - function not defined

'ChartWindowFind' - function not defined

'AccountInfoString' - function not defined

'TimeTradeServer' - function not defined

'ExpertRemove' - function not defined

'AccountInfoInteger' - function not defined

Eles serão implementados.

Prepararemos uma lista de mudanças na próxima semana, quando começaremos a envolver os comerciantes em testes em massa. Por enquanto, estamos realizando testes sem anúncios e somente no fórum russo.

 
komposter:

Você foi informado, use SetIndexShift(0, 1);

Você não precisa copiar nada.

E a descrição na ponta da ferramenta irá ajustá-la.


descreveu minha idéia (para balançar o gráfico, colocar o presente no passado e pensar no meu futuro), se não estiver muito claro, infelizmente........

eu ficaria feliz se você sugerisse outra maneira de desenhar o que eu preciso nas barras menos com valores adequados nas barras mais.

(Eu estava movendo o presente para o passado, depois o completei com minha visão de futuro, e tudo isso novamente movido, mas para o futuro).

Quanto ao ArrayCopy (llow,Low); e ArrayCopySeries (llow, 1); a idéia inicial sobre o trabalho errado do ArrayCopy (llow,Low) surgiu devido a valores errados de retorno de algumas de suas funções em comparação com o uso do ArrayCopySeries (llow, 1). Mas começando o loop na busca de diferenças entre os valores de ambas as matrizes obtidas pela ArrayCopy (llow,Low) e pela ArrayCopySeries (llow, 1) obtive apenas 0 (os membros da matriz são absolutamente iguais) para todos os possíveis erros de contagem. Às vezes, valores interessantes chegavam, ou seja, Low = 1,3514000000000000000000000000; mas a diferença era sempre 0. Decidi analisar minha função linha por linha onde passo os arrays para obter valores de buffer indicador.

Obtive dados interessantes para o ArrayMaximum. Código:

 int z=      100;        // z- количество баров для проверки
     delt=     2;        // delt - количество баров для выборки в функции ArrayMaximum()
     poz_max1= 0;        // poz_max1- значение(номер бара) получаемое от функции ArrayMaximum() для массива получаемого от ArrayCopySeries (llow1,   1);
     poz_max2= 0;        // poz_max2- значение(номер бара) получаемое от функции ArrayMaximum() для массива получаемого от ArrayCopy       (llow2, Low);

 double llow1[];         //  массив получаемый от ArrayCopySeries (llow1,   1);
        llow2[];         //  массив получаемый от ArrayCopy       (llow2, Low);

 ArrayCopySeries (llow1,   1);  
 ArrayCopy       (llow2, Low);
 
 while(true){                                     // цикл проверки разности с динамической точностью
    for (int i =z;i>=0;i--){                      // цикл проверки разности с статической  точностью
       poz_max1=ArrayMaximum (llow1, delt, i);    // находим бар с максимальным значением среди delt баров начиная с i для массива получаемого от ArrayCopySeries (llow1,   1);
       poz_max2=ArrayMaximum (llow2, delt, i);    // находим бар с максимальным значением среди delt баров начиная с i для массива получаемого от ArrayCopy       (llow2, Low);
    
       if (poz_max1-poz_max2>x){                  // проверяем или одинаковые результаты мы получили (еще не выучил закарлюки которые нада для красивого принта)
          Print ("poz_max1[i]= ",poz_max1,"   poz_max2[i]= ",poz_max2,"   diff[i]= ",poz_max1-poz_max2, "    i=",i); 
          Print ("llow1[i]= ", llow1[i],"   llow2[i]= ",llow2[i],"    i=",i); 
          Print ("llow1[poz_max1]= ", llow1[poz_max1],"   llow2[poz_max1]= ",llow2[poz_max1],"    i=",i); 
          Print ("==========================================================");  
          brc=true;                               // флаг выхода 
       } 
    }
    if (brc==true||x<1 e-15) return(0);
    x/=10;
 }

O resultado, a implementação diferente do ArrayMaximum para duas matrizes

2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: ==========================================================
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:        llow1[i]= 1.3297          llow2[i]= 1.3297    i=1
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: llow1[poz_max1]= 1.3512   llow2[poz_max1]= 1.3297    i=1
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:     poz_max1[i]= 2            poz_max2[i]= 1        diff[i]= 1    i=1
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: ==========================================================
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:        llow1[i]= 1.3501          llow2[i]= 1.3501     i=4
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: llow1[poz_max1]= 1.3512   llow2[poz_max1]= 1.3501    i=4
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4:     poz_max1[i]= 5            poz_max2[i]= 4         diff[i]= 1    i=4
2013.11.07 16:24:16     CopeSerrias EURUSD_t,H4: ==========================================================

A conclusão: os valores a serem pesquisados em ArrayMaximum() para as matrizes obtidas com ArrayCopy (llow, low) e ArrayCopySeries (llow, 1) são diferentes.

Para ArrayCopy (llow2,Low) , as barras ArrayMaximum() vão na direção da frente:

Para ArrayMaximum (llow2,5,5), as barras 5, 4, 3, 2, 1 serão examinadas.

É assim que deve ser ?????????????