MetaTrader 4 Build 529 beta rilasciato con un nuovo compilatore - pagina 22

 
Renat:

Costruire uno.

Le applicazioni a 32 bit su Windows a 64 bit sono installate esclusivamente in Program Files (x86) - questi sono i requisiti di compatibilità di Microsoft.

Le directory di dati nell'area Users/AppData non sono più spazzatura, e non più raccomandazioni di Microsoft (di cui tutti gli sviluppatori non si sono preoccupati per molti anni), ma la dura verità della vita. Nei sistemi operativi più recenti, Microsoft ha fatto lavorare tutti a martellate per farli funzionare correttamente, perché non c'è altro modo per far fronte all'UAC. Nel mercato di massa questo è l'unico modo rimasto.

Per forzare il terminale a memorizzare la maggior parte dei dati nella directory locale o a lavorare in modalità portatile/trasportabile (ad esempio su flash), usate il flag /portable. Ma questo non si applica ancora alla memorizzazione di dati generali non personalizzati in Users/AppData.

Allora come puoi spiegare che le vecchie build, compresa l'attuale 509, non creano nulla in Users/AppData con i parametri che ho specificato? Intendo esattamente con i parametri che ho specificato.
 
Renat:

1. è possibile. rifaremo la finestra nello stesso modo di MT5

2. Guarda "File - Open data directory". Qui è dove il percorso sarà letto da

3. meglio usare il set completo (diverse icone in un file) da 16x16 a 64x64 (128x128) file .ico. Presto i programmi saranno mostrati con le loro icone native direttamente nell'interfaccia del sistema operativo.

  1. Perfetto
  2. Ho controllato: D:\NewMT4\ non dovrebbe essere D:\NewMT4\MQL4\ ? E se non lo è, dovrebbe essere "\\MQL4\files\findTwoFractals32x32.ico";?
  3. Esiste un software per creare questi set? Non faccio grafica da trecento anni.
(Grazie.
 
artmedia70:
  1. Fine
  2. Ho controllato: D:\NewMT4\ non dovrebbe essere D:\NewMT4\MQL4\ ? E se non è così, dovrebbe essere "\MQL4\files\findTwoFractals32x32.ico" nel percorso ;??
  3. Esiste un software per creare questi kit? Non ho fatto nessuna grafica in trecento anni.
Grazie.

2. il terminale sa che il seguace MQL4 viene aggiunto automaticamente. Quindi è scritto correttamente con \files

3. Guardatevi intorno - ci sono tutti i tipi di versioni di ICON Studio, comprese quelle gratuite.

 
Renat:

2. il terminale sa che il seguace MQL4 viene aggiunto automaticamente. Quindi è scritto correttamente con \files

3. Cercate in giro - ci sono tutti i tipi di versioni di ICON Studio, comprese quelle gratuite.


Grazie
 
Barbarian:
Allora come puoi spiegare che le vecchie build, inclusa l'attuale 509, non creano nulla in Users/AppData con i parametri che ho specificato? Intendo esattamente con i parametri che ho menzionato.

La ragione è che qualcuno non si è preoccupato dei requisiti di Microsoft e ha lavorato contro il sistema di gestione dei diritti per molti anni. Stiamo risolvendo i problemi accumulati di MT4.

Al momento, se volete vendere in massa qualsiasi cosa che scriva attivamente nelle loro directory, dovete pensare subito a un UAC rigoroso e a diritti utente limitati. E non dimenticate la base di installazione di milioni di computer.

 

Renat, potresti pubblicare brevi annunci con una lista di cambiamenti nelle nuove build? Per non dover fare test alla cieca.

Queste caratteristiche saranno implementate? Dobbiamo solo aspettare?

'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:


Tutto quello che cerco di fare è di restituire la funzionalità del mio indicatore MT4 509 (ora è funzionale al 90%, l'unica cosa che mi manca è la possibilità di passare al futuro)

Ma per vedere il futuro, è necessario spostare la serie temporale al passato.

Vi è stato detto di usare SetIndexShift(0, 1);

Non c'è bisogno di copiare nulla.

E la descrizione nel tooltip lo modificherà.

 
komposter:

Renat, potresti pubblicare brevi annunci con una lista di cambiamenti nelle nuove build? Per non dover fare test alla cieca.

Queste caratteristiche saranno implementate? Dobbiamo solo aspettare?

Aggiungo "SymbolSelect" alla lista. +1 al desiderio per una descrizione delle nuove costruzioni.
 
komposter:

Renat, potresti pubblicare brevi annunci con una lista di cambiamenti nelle nuove build? Per non dover fare test alla cieca.

Queste caratteristiche saranno implementate? Dobbiamo solo aspettare?

'ChartGetInteger' - function not defined

'ChartWindowFind' - function not defined

'AccountInfoString' - function not defined

'TimeTradeServer' - function not defined

'ExpertRemove' - function not defined

'AccountInfoInteger' - function not defined

Saranno implementati.

Prepareremo una lista di cambiamenti la prossima settimana, quando inizieremo a coinvolgere i commercianti nei test di massa. Per ora, stiamo facendo dei test senza annunci e solo nel forum russo.

 
komposter:

Vi è stato detto di usare SetIndexShift(0, 1);

Non c'è bisogno di copiare nulla.

E la descrizione nel tooltip lo modificherà.


ha descritto la mia idea (far oscillare il grafico, mettendo il presente nel passato mentre si arriva al mio futuro), se non è molto chiaro, ahimè........

Sarei felice se mi suggeriste un altro modo per disegnare ciò di cui ho bisogno sulle barre meno con valori adeguati sulle barre più.

(Stavo spostando il presente nel passato, poi lo integravo con la mia visione del futuro, e tutto di nuovo, ma nel futuro).

Come per ArrayCopy (llow,Low); e ArrayCopySeries (llow, 1); l'idea iniziale sul lavoro sbagliato di ArrayCopy (llow,Low) è apparsa a causa dei valori restituiti errati di alcune delle sue funzioni rispetto all'uso di ArrayCopySeries (llow, 1). Ma quando ho eseguito un ciclo sulla ricerca delle differenze tra i valori di entrambi gli array ottenuti da ArrayCopy (llow,Low) e ArrayCopySeries (llow, 1) ho ottenuto solo 0 (i membri dell'array sono assolutamente uguali) per tutta la precisione di conteggio possibile. A volte arrivavano valori interessanti, per esempio Low = 1.35140000000000000000000001; ma la differenza era sempre 0. Ho deciso di analizzare la mia funzione riga per riga dove passo gli array per ottenere i valori del buffer degli indicatori.

Ho ottenuto dati interessanti per ArrayMaximum. Codice:

 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;
 }

Il risultato, una diversa implementazione di ArrayMaximum per due array

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: ==========================================================

La conclusione: i valori da cercare in ArrayMaximum() negli array ottenuti con ArrayCopy (llow, low) e ArrayCopySeries (llow, 1) sono diversi.

Per ArrayCopy (llow2,Low) , le barre ArrayMaximum() vanno in direzione avanti:

Per ArrayMaximum (llow2,5,5) si guarderanno le barre 5, 4, 3, 2, 1.

Ecco come dovrebbe essere ?????????????

Motivazione: