Errori, bug, domande - pagina 797

 
sergeev:

È questo?


Ho due domande.

- perché avete cambiato il calcolo da quadruplo nel codice?

- Cosa mostra questo indicatore? Come fare trading su di esso?

Questo è quanto.

- Non l'ho cambiato. Ho trasferito tutto uno a uno. Invece di f-i nel codice di quattro, uso i valori degli array MA calcolati in precedenza dalle medie mobili lente e veloci di OPEN, CLOSE, HIGH, LOW in cinque, di nuovo moltiplicando per i coefficienti appropriati degli strumenti.

Per esempio, il codice TOTALE di un quattro:

if (Symbol() == "EURUSD"){
               OPEN=EUR(Mode,PRICE_OPEN,i,per1,per2)-USD(Mode,PRICE_OPEN,i,per1,per2);
               HIGH=EUR(Mode,PRICE_HIGH,i,per1,per2)-USD(Mode,PRICE_HIGH,i,per1,per2);
               LOW=EUR(Mode,PRICE_LOW,i,per1,per2)-USD(Mode,PRICE_LOW,i,per1,per2);
               CLOSE=EUR(Mode,PRICE_CLOSE,i,per1,per2)-USD(Mode,PRICE_CLOSE,i,per1,per2);
...
 pair[i]=(OPEN+HIGH+LOW+CLOSE)/4;

Ecco uno degli EUR f-i che uso in cinque invece (vedi sotto) - calcolando immediatamente le formule al suo interno. È tutto uno a uno:

double EUR(int Mode, int Price, int i, int per1, int per2){
   return(
            (iMA("EURUSD",0,per2,0,Mode,Price,i)-
            iMA("EURUSD",0,per1,0,Mode,Price,i))*10000*kUSD
            +
            (iMA("EURGBP",0,per2,0,Mode,Price,i)-
            iMA("EURGBP",0,per1,0,Mode,Price,i))*10000*kGBP
            +
            (iMA("EURJPY",0,per2,0,Mode,Price,i)-
            iMA("EURJPY",0,per1,0,Mode,Price,i))*100*kJPY
          ); 

In cinque questo calcolo sarà così - senza funzioni, come in quattro, ma direttamente dagli array calcolati in precedenza:

if (Symbol() == "EURUSD")
        {     
// ----  OPEN=EUR(Mode,PRICE_OPEN,i,per1,per2)-USD(Mode,PRICE_OPEN,i,per1,per2);          
         OPEN=((OPEN_F_EURUSD[i]-OPEN_S_EURUSD[i])*10000*kUSD+(OPEN_F_EURGBP[i]-OPEN_S_EURGBP[i])*10000*kGBP+(OPEN_F_EURJPY[i]-OPEN_S_EURJPY[i])*100*kJPY -
               (OPEN_S_EURUSD[i]-OPEN_F_EURUSD[i])*10000*kEUR+(OPEN_S_GBPUSD[i]-OPEN_F_GBPUSD[i])*10000*kGBP+(OPEN_F_USDJPY[i]-OPEN_S_USDJPY[i])*100*kJPY);
               
// ----  HIGH=EUR(Mode,PRICE_HIGH,i,per1,per2)-USD(Mode,PRICE_HIGH,i,per1,per2);              
         HIGH=((HIGH_F_EURUSD[i]-HIGH_S_EURUSD[i])*10000*kUSD+(HIGH_F_EURGBP[i]-HIGH_S_EURGBP[i])*10000*kGBP+(HIGH_F_EURJPY[i]-HIGH_S_EURJPY[i])*100*kJPY -
               (HIGH_S_EURUSD[i]-HIGH_F_EURUSD[i])*10000*kEUR+(HIGH_S_GBPUSD[i]-HIGH_F_GBPUSD[i])*10000*kGBP+(HIGH_F_USDJPY[i]-HIGH_S_USDJPY[i])*100*kJPY);
               
// ----  LOW=EUR(Mode,PRICE_LOW,i,per1,per2)-USD(Mode,PRICE_LOW,i,per1,per2);
         LOW=((LOW_F_EURUSD[i]-LOW_S_EURUSD[i])*10000*kUSD+(LOW_F_EURGBP[i]-LOW_S_EURGBP[i])*10000*kGBP+(LOW_F_EURJPY[i]-LOW_S_EURJPY[i])*100*kJPY -
               (LOW_S_EURUSD[i]-LOW_F_EURUSD[i])*10000*kEUR+(LOW_S_GBPUSD[i]-LOW_F_GBPUSD[i])*10000*kGBP+(LOW_F_USDJPY[i]-LOW_S_USDJPY[i])*100*kJPY);
               
// ---   CLOSE=EUR(Mode,PRICE_CLOSE,i,per1,per2)-USD(Mode,PRICE_CLOSE,i,per1,per2);
         CLOSE=((CLOSE_F_EURUSD[i]-CLOSE_S_EURUSD[i])*10000*kUSD+(CLOSE_F_EURGBP[i]-CLOSE_S_EURGBP[i])*10000*kGBP+(CLOSE_F_EURJPY[i]-CLOSE_S_EURJPY[i])*100*kJPY -
               (CLOSE_S_EURUSD[i]-CLOSE_F_EURUSD[i])*10000*kEUR+(CLOSE_S_GBPUSD[i]-CLOSE_F_GBPUSD[i])*10000*kGBP+(CLOSE_F_USDJPY[i]-CLOSE_S_USDJPY[i])*100*kJPY);
         }
      
      pair[i]=(OPEN+HIGH+LOW+CLOSE)/4;    

- L'effetto cumulativo dei movimenti di diversi simboli, le differenze di MA veloce e lento dei simboli OPEN, HIGH, LOW, CLOSE sono prese. Essi sono sommati e divisi per quattro tenendo conto dei coefficienti dei moltiplicatori delle differenze di MA veloce e lento degli strumenti che sono anche oggetto di ottimizzazione.

Per commerciare: 1. attraversando la linea dello zero + Different (distanza dallo zero per filtrare le false entrate) dal basso verso l'alto, quindi per comprare, dall'alto verso il basso, quindi per vendere. Vedi Expert Advisor nel trailer.

2. sulle inflessioni della linea: se c'è un'inflessione sotto lo zero, allora compra, se c'è un'inflessione sopra lo zero di questa linea di differenza strumento MA cumulativa, allora vendi (questa opzione non è ancora disponibile nell'EA).

Voglio usare la prima o la seconda opzione nel campionato.

File:
 

Visualizzazione errata del grafico (modalità Bars).

All'avvio del terminale, la visualizzazione dei simboli del buffer degli indicatori è notevolmente sfalsata rispetto alle immagini delle barre a cui si riferiscono.

costruire 687

Anche in modalità di visualizzazione, quando un grafico è in movimento, i simboli del buffer dell'indicatore si muovono dietro le barre corrispondenti con un ritardo molto forte e visibile.

 
R0MAN:

- Non l'ho cambiato. Ho trasferito tutto uno a uno.

Il vostro risultato non è lo stesso.

Non capisco perché si fa sempre il bundle di mqh

. Ho riordinato il codice. Ho aggiunto due classi

CSeries - una classe che serve 4 array e 4 buffer + sono definiti in INDICATOR_CALCULATION
CPair - una classe che serve due CSeries - Fast e Slow.

E le funzioni USD/JPY/EUR/GBP + inizio trasferito come in MT4


ho confrontato i risultati con MT4 - uno a uno - coincidono completamente

Birra offerta dalla casa :)


Voglio usare la prima o la seconda opzione sul campionato.

Hai qualche risultato redditizio?

File:
 

e questo è il tipo di indicatore che stavi originariamente cercando di fare

File:
 
sergeev:

1. i vostri risultati non corrispondono.

Non so perché hai sempre mqh nel tuo kit.

Comunque, ho pulito il codice e ho aggiunto due classi

CSeries - una classe che serve 4 array e 4 buffer + sono definiti in INDICATOR_CALCULATION
CPair - una classe che serve due serie CS - Fast e Slow.

E funzioni USD/JPY/EUR/GBP + inizio spostato come in MT4


2. Ho confrontato i risultati con MT4 - uno a uno - sono identici.

Birra offerta dalla casa :)

3. Hai dei risultati redditizi?


1. Oh, grazie dal profondo del mio cuore! Non l'ho ancora guardato. Si tratta di iCustom - è amenable?

Non un gufo su un cinque. Ho avuto questo indica per anni - nell'archivio.

2. Chirurgo con il suo MASD - ispirato! Sta dando a tutti i neuro-multi-spettri-ultra-ul ultras con i suoi 11 scambi. :-)

Di solito è così. Ora, se l'iCustom si adatta alle mie esigenze, metterò i segnali nei gufi e impazzirò!

3. Mentre non c'è nessun gufo sul tallone... Si presta a iCustom? - Ho bisogno dei suoi valori sulla prima, seconda e terza barra (per codificare due condizioni per entrare nel mercato: attraversamento dello zero e (o) punto di flesso sopra/sotto lo zero).

4. "Mi devi una birra :-) + ha scritto in un messaggio personale.

 
R0MAN:

3. Mentre non c'è nessun gufo sul tallone... Si presta a iCustom? - ha bisogno dei suoi valori dalla prima, seconda, terza barra (per codificare due condizioni di entrata nel mercato: attraversamento dello zero e (o) punto di flesso sopra/sotto lo zero).

tutto viene dato in pasto all'iCustom.
 
Rosh:
Il debug non è disponibile nel tester
Ci sono dei piani? Il debugging online è di scarsa utilità a causa di condizioni irriproducibili.
 
Ricordami, come posso fare in modo che un indicatore appaia automaticamente nella finestra del grafico che si apre dopo l'esecuzione nel tester? Non credo di aver avuto bisogno di fare qualcosa prima.
 
marketeer:
Il debugging online è poco utile perché le condizioni non sono riproducibili.

C'è una lettera così, grande e in grassetto.

Ci sono dei piani?

Non credo che MetaQuotes abbia l'entusiasmo di incrociare un tester e un debugger, il che è comprensibile - il compito è storto.

Le idee sul"server virtuale" vagano - è più vicino alla realtà, soprattutto se è permesso l'inserimento di dati arbitrari (con velocità arbitraria). Ma è anche un'opzione che mette molto sotto pressione le meta-citazioni (apparentemente, per diverse ragioni insieme).

Ma altri modi sono possibili. Qualcosa di terzo. Qualcosa come un "microtester" direttamente nel debugger. Impostiamo una coppia, specifichiamo i breakpoint, lo lanciamo e voilà. Eseguilo attraverso il debugger. Con arresti a punti di rottura e possibilità di investigare passo dopo passo e iniziare "oltre", fino al completamento del "periodo di debugging".

Quindi va così.

// Ma queste sono tutte le mie speculazioni/pensieri ad alta voce, forse Stringo se ne uscirà con qualcos'altro.

Ma qualcosa deve essere fatto, questo è sicuro.

 

MetaDriver:

Ci sono alcune idee che circolano sul "server virtuale" - è più vicino alla realtà, specialmente se si permette un input di dati arbitrario (a velocità arbitraria). Ma è anche un'opzione che mette molto a dura prova le meta-citazioni (apparentemente, per diverse ragioni insieme).

Ahi qualcosa mi sembra che un tester con debug sarebbe più realistico, e non si dovrebbe nemmeno sognare in questa direzione.